当我使用 urllib2 通过 squid 代理建立 HTTP 1.1 连接时,squid 在 HTTP 1.0 中建立一个新的持续连接。
如何说服 Squid 与目标服务器对话 1.1?
在处理了整个下午的这个问题后,我找到了解决方案。所以请原谅我回答我自己的问题,但如果其他人发现这很有用并且可以减轻他们的痛苦,那就太好了。
为了让 Squid 与目标服务器进行 HTTP 1.1 对话,对它的原始请求必须通过 HTTP CONNECT 完成。这记录在错误http://bugs.python.org/issue1424152中。
py3k 有一个修复程序,它已被向后移植到 Python 3.1 和 2.6。
如果您正在使用 Python 2.5 或 2.4 安装,那么您可以在http://pypi.python.org/pypi/httpsproxy_urllib2下载 httplib.py 和 urllib2.py 的修补版本。只需替换您现有的版本,或将这 2 个文件放入您的项目中。