gpt4 book ai didi

python - Urllib2 HTTPS 截断响应

转载 作者:太空宇宙 更新时间:2023-11-04 09:12:44 24 4
gpt4 key购买 nike

我正在尝试使用 urllib2.urlopen 获取页面(实际上,我正在使用 mechanize ,但这是 mechanize 调用的方法)当我获取页面时,我得到的响应不完整;页面被截断。但是,如果我访问页面的非 HTTPS 版本,我会得到完整的页面。

我在使用 Arch Linux ( 3.5.4-1-ARCH x86_64)。我在跑openssl 1.0.1c .这个问题发生在我拥有的另一台 Arch Linux 机器上,但在使用 Python 3 ( 3.3.0 ) 时没有。

这个问题似乎与urllib2 not retrieving entire HTTP response有关.

我在唯一允许我使用 urllib2 ( Py I/O ) 的在线 Python 解释器上对其进行了测试,它按预期工作。这是代码:

import urllib2

u = urllib2.urlopen('https://wa151.avayalive.com/WAAdminPanel/login.aspx?ReturnUrl=%2fWAAdminPanel%2fprivate%2fHome.aspx')

print u.read()[-100:]

最后几行应该包含通常的 </body></html> .

当我尝试 urllib.urlretrieve在我的机器上,我得到:

ContentTooShortError: retrieval incomplete: got only 11365 out of 13805 bytes

我无法测试 urlretrieve在在线解释器上,因为它不会让用户写入临时文件。晚上晚些时候,我会尝试从我的机​​器上获取 URL,但从不同的位置。

最佳答案

我在不同的 Linux 系统上使用 Python 2.7 时遇到同样的错误:

>>> urllib.urlretrieve('https://wa151.avayalive.com/WAAdminPanel/login.aspx?ReturnUrl=%2fWAAdminPanel%2fprivate%2fHome.aspx')
---------------------------------------------------------------------------
ContentTooShortError Traceback (most recent call last)
...
ContentTooShortError: retrieval incomplete: got only 11365 out of 13805 bytes

但是,可以使用requests 完成相同的操作(并且对我来说确实有效):

>>> import requests
>>> r = requests.get('https://wa151.avayalive.com/WAAdminPanel/login.aspx?ReturnUrl=%2fWAAdminPanel%2fprivate%2fHome.aspx')
>>> with open(somefilepath, 'w') as f:
... f.write(r.text)

这对你有用吗?

关于python - Urllib2 HTTPS 截断响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13222376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com