urllib2 / httplib 如何通过 Squid 代理与 HTTP 1.1 进行 HTTPS 连接?
当我使用 urllib2 通过鱿鱼代理建立 HTTP 1.1 连接时,鱿鱼在 HTTP 1.0 中建立新的持续连接。
如何说服 Squid 与目标服务器进行 1.1 对话?
When I use urllib2 to make a HTTP 1.1 connection via a squid proxy, squid makes a new ongoing connection in HTTP 1.0.
How can I persuade Squid to talk 1.1 to the destination server?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
经过一下午的处理这个问题,我找到了解决方案。所以请原谅我回答我自己的问题,但如果其他人发现这很有用并且可以减轻他们的痛苦,那就太好了。
为了让 Squid 与目标服务器进行 HTTP 1.1 对话,对它的原始请求必须通过 HTTP CONNECT 完成。这已记录在错误 http://bugs.python.org/issue1424152 中。
py3k 已得到修复,并且已向后移植到 Python 3.1 和 2.6。
如果您正在安装 Python 2.5 或 2.4,那么您可以在此处下载 httplib.py 和 urllib2.py 的修补版本 http://pypi.python.org/pypi/httpsproxy_urllib2。只需替换您现有的版本,或将这两个文件放入您的项目中即可。
After dealing with this problem for an entire afternoon, i found the solution. So please excuse me answering my own question, but it would be great if someone else finds this useful and it saves them the pain.
In order to get Squid to have a HTTP 1.1 conversation with the destination server, the original request to it must be done via HTTP CONNECT. This is documented in the bug http://bugs.python.org/issue1424152.
There is a fix for py3k and it has been backported to Python 3.1 and 2.6.
If you are rocking a Python 2.5 or 2.4 installation, then you can download a patched version of httplib.py and urllib2.py here http://pypi.python.org/pypi/httpsproxy_urllib2. Simply replace your existing versions, or drop these 2 files into your project.