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