如何通过Squid代理让urllib2 / httplib使用HTTP 1.1进行HTTPS连接?
当我使用urllib2通过一个squid代理建立HTTP 1.1的连接时,squid却用HTTP 1.0建立了一个新的连接。
我该怎么做才能让Squid和目标服务器用HTTP 1.1进行交流呢?
1 个回答
3
我花了整个下午来解决这个问题,终于找到了办法。所以请原谅我自己回答自己的问题,但我希望这能对其他人有帮助,省去他们的麻烦。
为了让Squid能够和目标服务器进行HTTP 1.1的对话,最初的请求必须通过HTTP CONNECT来发送。这一点在这个bug中有说明,链接是http://bugs.python.org/issue1424152。
对于Python 3.x有一个修复方案,并且这个修复已经被移植到Python 3.1和2.6版本中。
如果你正在使用Python 2.5或2.4版本,可以在这里下载修补过的httplib.py和urllib2.py:http://pypi.python.org/pypi/httpsproxy_urllib2。只需替换掉你现有的文件,或者把这两个文件放到你的项目中就可以了。