我需要手动解压缩以下页面的响应:http://muaban.net/ho-chi-minh.html
我在做
echo -e "GET /ho-chi-minh.html HTTP/1.1\r\nHost: muaban.net\r\nAccept-Encoding: gzip\r\n" | nc muaban.net 80 > response.txt
直到响应实际包含Content-Encoding: gzip
或Content-Encoding: deflate
标题(有时它只是纯文本),然后
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 :(得分:1)
有answer on another question表示IIS使用错误的通缩格式。但似乎该网站随机返回deflate
或(正确)gzip
,这就是为什么David Souther能够zcat
它(我在几次尝试中获得gzip) 。所以你可能想要循环并获取它,直到你得到一个gzip压缩版本(可能应该包括延迟和/或最大尝试)。
答案 1 :(得分:1)
请参阅答案here,了解关于“deflate”作为HTTP内容编码的含义的混淆。
最好简单地not accept放气并且只接受gzip。然后服务器将不会提供放气。
如果您接受deflate,那么您必须准备尝试将其解码为zlib流(这是HTTP标准指定的)或原始deflate流(这是Microsoft服务器显然会错误提供的)。然后使用正确解码的那个。
zlib和raw deflate格式都不是gzip,因此zcat也无法工作。
答案 2 :(得分:0)
您可以将编码设置为" identity",该网站会向您返回纯文本。