2012-05-16 2 views
1

에 응답 ungzip은 나는 다음 페이지의 수동과 gzip 대응 필요), 그러면HTTP GET bash는

cat response.txt | sed '1,14d' | zcat 

입니다. 그러나 입력은 gzip 형식이 아닙니다.

여기 헤더입니다 :

HTTP/1.1 200 OK 
Cache-Control: public, max-age=67 
Content-Type: text/html 
Content-Encoding: deflate 
Expires: Wed, 16 May 2012 15:20:31 GMT 
Last-Modified: Wed, 16 May 2012 15:18:31 GMT 
Vary: * 
Server: Microsoft-IIS/7.5 
X-AspNet-Version: 2.0.50727 
X-Powered-By: ASP.NET 
X-Proxy: 162 
Date: Wed, 16 May 2012 15:19:23 GMT 
Content-Length: 12618 
+0

반환되는 데이터의 모양은 무엇입니까? 'Transfer-Encoding : chunked' 헤더를 가지고 있습니까? – Hasturkun

+0

게시물에 헤더를 추가했습니다. 그 후에는 gzip으로 압축 된 데이터 블록 일뿐입니다. – spacevillain

+0

저에게 맞나요? [tmp] $ echo -e "GET /ho-chi-minh.html HTTP/1.1 \ r \ n 호스트 : muaban.net \ r \ nAccept- 인코딩 : gzip \ r \ n"| nc muaban.net 80> response.txt [tmp] $ cat response.txt | sed '1,14d'| zcat> response.html GZIP : 표준 입력 : 예기치 않은 파일의 끝 [TMP] $ 헤드 -n 2 response.html

답변

1

은 IIS가 잘못된 디플레이션 형식을 사용 나타내는 answer on another question 있습니다. 그러나 문제의 사이트가 무작위로 deflate 또는 (올바른) gzip 중 하나를 반환하는 것으로 보입니다. 따라서 David Souther는 zcat (여러 번의 시도에서 한 번 gzip이 있음)을 수행 할 수있었습니다. 따라서 gzip으로 된 버전을 얻을 때까지 반복하고 가져오고 싶을 것입니다 (아마 지연 및 최대 시도를 포함해야합니다).

+0

nope, same : 'zcat : stdin : gzip 형식이 아닙니다.' – spacevillain

+0

수동으로 줄을 바꿀 때 작동하는지 확인해 보셨습니까? 그리고'file'이 라인이 없다면 그것에 대해 말하는 것을보십시오. IIRC, 처음 두 바이트는 'GZ'여야합니다. – Kevin

+0

흠, GZ가 보이지 않습니다. 응답은 다음과 같습니다. http://textuploader.com/?p = 6 & id = xjQjr – spacevillain

1

"deflate"의 의미에 대한 HTTP 내용 인코딩의 혼동에 대한 대답은 here을 참조하십시오.

단순히 not accept을 수축시키고 gzip 만 수락하는 것이 가장 좋습니다. 그런 다음 서버는 공기를 배출하지 않습니다.

deflate를 수락하면 zlib 스트림 (HTTP 표준이 지정하는 것임) 또는 원시 수축 스트림 (Microsoft 서버가 분명히 잘못 전달할 것임)으로 디코딩 해 볼 준비가되어 있어야합니다. . 그런 다음 제대로 디코딩 한 것을 사용하십시오.

zlib 및 raw deflate 형식 모두 gzip이 아니므로 zcat이 작동하지 않습니다.

0

인코딩을 "ID"로 설정하면 해당 사이트에서 일반 텍스트를 반환합니다.