【发布时间】:2012-10-30 15:48:21
【问题描述】:
我正在开发一个允许用户通过代理重定向浏览的项目。系统是这样工作的——用户在远程 PC 上运行这个代理,然后也在他的笔记本电脑上运行这个代理。然后,用户将笔记本电脑上的浏览器设置更改为使用 localhost:8080 来使用该本地代理,从而将所有浏览器流量转发到远程 PC 上运行的代理。
这是我遇到 HTTPS 的地方。我能够让正常的 HTTP 请求正常工作,但只要我点击 google.com,Firefox 就会跳过我的代理并直接连接到 https://google.com。
我的想法是监视浏览器请求说 CONNECT host:443,然后使用 python ssl 模块来包装该套接字。这将为我提供外部代理和目标服务器之间的安全连接。但是,当我在 ssl 启动之前运行 wireshark 以查看浏览器请求的样子时,它已经存在,这意味着浏览器看起来直接连接到端口 443,这解释了为什么它省略了我的本地代理。
我希望能够处理 HTTPS,因为这样可以提供完整的浏览体验。
我非常感谢任何可以朝着正确方向发展的提示。
【问题讨论】: