1

我正在开发一个允许用户通过代理重定向浏览的项目。系统是这样工作的——用户在远程 PC 上运行这个代理,然后也在他的笔记本电脑上运行这个代理。然后,用户将笔记本电脑上的浏览器设置更改为使用 localhost:8080 来使用该本地代理,这反过来将所有浏览器流量转发到远程 PC 上运行的代理。

这就是我遇到HTTPS的地方。我能够让正常的 HTTP 请求正常工作,但只要我点击 google.com,Firefox 就会跳过我的代理并直接连接到https://google.com

我的想法是观察浏览器请求说CONNECT host:443然后使用 python ssl 模块来包装该套接字。这将为我提供外部代理和目标服务器之间的安全连接。但是,当我在 ssl 启动之前运行 wireshark 以查看浏览器请求的样子时,它已经存在,这意味着浏览器看起来直接连接到端口 443,这解释了为什么它省略了我的本地代理。

我希望能够处理 HTTPS,因为这样可以提供完整的浏览体验。

我真的很感激任何可以朝着正确方向发展的提示。

4

1 回答 1

0

好吧,在对代理进行了大量阅读之后,我发现我对这个问题的理解还不够。

对于可能最终与我处于同一位置的其他任何人,请知道 HTTP、HTTPS 和 SOCKS 代理之间存在很大差异。

HTTP代理通常会快速查看 HTTP 标头以确定将整个数据包转发到哪里。使用一些基本的套接字知识,您可以很容易地自行编写这些代码。

另一方面,HTTPS代理必须以不同的方式工作。他们应该能够为客户端完成整个 SSL 魔术,或者他们可以尝试在不改变的情况下传递流量,但是如果选择后一种解决方案,用户 IP 将是已知的。这在编码方面要求更高。

SOCKS代理是完全不同的,尽管非常酷,野兽。他们在 OSI 模型的第 5 层工作,老实说,我什至不知道从哪里开始创建一个。他们实现了安全性和匿名性。但是,我知道有人可以使用 SSH 在他们的机器上启动 SOCKS 代理,只需阅读此http://www.revsys.com/writings/quicktips/ssh-tunnel.html即可。该链接还提供了一个想法,即应该可以从 Python 脚本中使用 SSH 以使其更加方便。

希望这可以帮助任何与我有同样问题的人。祝你好运!

于 2012-11-04T23:39:29.580 回答