编辑:
这个问题无效。事实证明透明代理正在进行转发HTTP 1.0请求,即使urllib / httplib最初确实发出了HTTP 1.1请求。
原始问题:
默认情况下urllib2.urlopen
始终发出HTTP 1.0请求。
有没有办法让它与HTTP 1.1交谈?
答案 0 :(得分:12)
为什么你认为它还没有使用http 1.1?你尝试过像......:
>>> import urllib2
>>> urllib2._opener.handlers[1].set_http_debuglevel(100)
>>> urllib2.urlopen('http://mit.edu').read()[:10]
connect: (mit.edu, 80)
send: 'GET / HTTP/1.1
<等>(等等)?这应该表明它已经发送了1.1 GET请求。
答案 1 :(得分:3)
urllib2使用httplib发出HTTP请求。我的Python 2.6.4肯定在httplib中使用HTTP / 1.1,尽管它可以处理来自1.1,1.0或0.9服务器的响应。早在2.3,这似乎就是这种情况(可能会回到1.5)
但是,如果需要通过代理隧道,它将发送如下请求:
CONNECT host:port HTTP/1.0
并且/1.0字符串是硬编码的。
您使用的是哪个版本的python,以及如何使用urllib2?