2012-07-07 4 views
0

노드를 사용하여 작은 icloud 클라이언트를 생성하므로 일부 데이터를 가져 와서 분석 할 수 있습니다. 현재 로그인 시퀀스를 스크립팅하고 있습니다. 응답을 받으면 헤더가 정상이며 세션 쿠키가있을 것으로 예상되지만 응답 본문은 암호화 된 것처럼 보입니다. 일반 텍스트가 아닙니다. 그것은 SSL을 통해이지만, 헤더가 읽을 수 있다면, 몸도 좋지 않아야합니까? 응답 헤더 content-encoding: gzip에 따르면 내가 부족 설정 또는, 내가 최신을 사용하고 노드 버그, 0.8.1NodeJS 암호화 된 HTTPS 응답 본문

{ date: 'Sat, 07 Jul 2012 14:51:56 GMT', 
'x-apple-request-uuid': '............', 
'x-responding-instance': '...........', 
'cache-control': 'no-cache, no-store, private', 
'access-control-allow-origin': 'https://www.icloud.com', 
'access-control-allow-credentials': 'true', 
'set-cookie': [........], 
'content-type': 'application/json; charset=UTF-8', 
'content-encoding': 'gzip', 
'content-length': '126' } 
���������VJ-*�/R�R 
K��LI,IUJ-,M-.Q��U��,.��KW��u�q� 
wur 
�� 
��v�SH����LU�Q��+.I�KN�bhldijiaaf/.MNN-.V�JK�)N��$���l��� 
+0

그게 바로 gzipped이며, 응답 본문에 zlip.gunzip()을 사용해야했습니다. 감사! –

답변

3

가 있는가, 응답이 암호화되지 않습니다, 그것은 단지 압축입니다. 노드의 zlib 모듈을 사용하여 즉시 압축을 풀 수 있습니다. 여기에 끝점으로 내 블로그의 홈페이지를 사용하는 예제입니다 (내 서버는 gzip으로 압축 된 데이터로 응답 이후 물었을 때) :

http = require('http'); 
zlib = require('zlib'); 
url = require('url'); 

var uri = url.parse("http://brandontilley.com/"); 
uri.headers = {'accept-encoding': 'gzip'}; 

var request = http.get(uri, function(res) { 
    var buffers = []; 
    res.pipe(zlib.createGunzip()).on('data', function(chunk) { 
    buffers.push(chunk); 
    }).on('end', function() { 
    console.log(Buffer.concat(buffers).toString()); 
    }); 
}); 
request.end(); 

Node.js documentation for the zlib module에 대한 몇 가지 더 많은 예제가 있습니다.