【发布时间】:2015-01-07 04:27:10
【问题描述】:
有没有人知道为什么 Urlib2 版本返回网页,而 Requests 版本返回连接错误:
[Errno 10060] 连接尝试失败,因为连接方 一段时间后没有正确响应,或建立 连接失败,因为连接的主机没有响应。
Urllib2 代码(工作中):
import urllib2
proxy = urllib2.ProxyHandler({'http': 'http://login:password@proxy1.com:80'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
wPage = urllib2.urlopen('http://www.google.com/')
print wPage.read();
请求代码(无效 - Errno 10060):
import requests
proxy = {"http": "http://login:password@proxy1.com:80"}
wPage = requests.get('http://www.google.com/', proxies=proxy)
print wPage.text
请求版本返回内网网页,但在网页上报错。
我正在运行 Python 2.7
* 编辑 *
根据 m170897017 的建议,我查找了 GET 请求中的差异。唯一的区别在于连接和代理连接。
Urllib2 版本:
标题:连接:关闭
标题:代理连接:关闭
请求版本:
标题:连接:保持活动
标题:代理连接:保持活动
我通过修改标头强制请求版本关闭这两个连接
header = {
"Connection": "close",
"Proxy-Connection": "close"
}
两者的 GET 请求现在匹配,但是请求版本仍然不起作用。
【问题讨论】:
-
嗅探不同程序发送的数据包,看看HTTP GET是否不同。
标签: python proxy python-requests