【发布时间】:2016-05-19 07:43:51
【问题描述】:
我正在尝试使用代理获取 php 网页的源代码,但它显示不可打印的字符。我得到的输出如下:
"日期:2016 年 2 月 9 日星期二 10:29:14 GMT
服务器:Apache/2.4.9 (Unix) OpenSSL/1.0.1g PHP/5.5.11 mod_perl/2.0.8-dev Perl/v5.16.3
X-Powered-By: PHP/5.5.11
设置 Cookie:PHPSESSID=jmqasueos33vqoe6dbm3iscvg0;路径=/
到期:1981 年 11 月 19 日星期四 08:52:00 GMT
缓存控制:无存储,无缓存,必须重新验证,后检查 = 0,预检查 = 0
Pragma:无缓存
内容编码:gzip
变化:接受编码
内容长度:577
保活:超时=5,最大值=99
连接:保持活动
内容类型:文本/html
�TMo�@�G����7�)P�H�H�DS��=U�=�U�]˻��_�Ycl�T�*�>��eg��
������
“V�N�f�:6�ԫ�IkZ77�A��nG�W��ɗ���RGY��Oc`-ο�ƜO��~?�V��$
�l4�+����n�].W��TLJSx�/|�n��#���>��r����;�l����H��4��f�\ “SY�y��7��”
如何用python解码这段代码,我试过用
decd=zlib.decompress(data, 16+zlib.MAX_WBITS)
但没有给出解码数据
我正在使用的代理在少数其他 Web 应用程序中运行良好。它显示某些 Web 应用程序的不可打印字符,如何解码?
当我使用代理时,我不想使用 get() 和 urlopen() 或来自 python 程序的任何其他请求。
【问题讨论】:
-
您如何检索 URL?如果您使用
requests模块,内容将自动为您解压。 -
所以你只想知道如何解压HTTP响应的正文?输入是什么?它是整个 HTTP 响应,包括标头,还是只是压缩的正文?您传递给
zlib.decompress()的data中包含什么? -
@mhawke .. 我的代理将获得整个 HTTP 响应,我想解码压缩的正文。当我使用 get 函数发送同一页面的请求时,我得到的是普通的 HTML 源代码,但是当我使用代理时,它显示了上述内容。
-
data中有什么内容?如果data只包含压缩后的数据,zlib.decompress(data, 16+zlib.MAX_WBITS)应该会成功解压数据。或者您可以使用gzip模块,如我的回答中所示。但是你在data中传递了什么? -
@mhawke ..
data
包含上面显示的信息,以 url 名称、日期甚至不可打印字符开始
标签: php python html gzip compression