本地HTTPS代理可能吗?

时间:2014-07-01 14:16:39

标签: ssl https proxy customization adblock

TL; DR

我想设置一个本地HTTPS代理,可以( LOCALLY )修改我机器上HTML页面的内容。这可能吗?

动机

我多年来一直使用名为GlimmerBlocker的HTTP代理。它始于2008年,是一种基于代理的阻止广告的方法(与浏览器扩展或其他OS X特定的黑客一样,如InputManagers)。但除了阻止广告外,它还允许用户将自己的CSS或JavaScript注入页面。发展已经严重放缓,但仍然非常有用。

唯一的问题是它不会执行HTTPS(from its FAQ):

  

https页面上的广告未被屏蔽

     

当Safari使用代理获取https页面时,它并不真正使用http协议,而是建立隧道tcp连接,以便Safari接收加密的字节。优点是任何中间代理都不能修改或读取页面内容,也不能修改URL。缺点是,GlimmerBlocker无法修改内容。即使GlimmerBlocker试图以中间人的身份工作并对内容进行解码/编码,也无法告诉Safari信任它,也无法告诉Safari网站证书是否有效,因此Safari会认为您访问过一个可疑的网站。

     

幸运的是,大多数广告提供商都不会切换到https,因为使用https的服务页面速度要慢得多,并且会对广告提供商服务器产生巨大的处理开销。

早在2008年,也许最后一部分是真的......但不再是。

要明确的是,我认为越来越多地使用SSL是一件好事。我只是希望在它到达我的结束后恢复对内容的控制。


混乱点

在寻找解决方案时,我对一些看似矛盾的观点感到困惑。

(另外,虽然我对网页的语言很有经验,但我总是很难在网络和协议上工作。就这一点而言,抱歉,如果我错过了一些明显的东西!)< / p>

  • 我发现this StackOverflow question询问是否可以使用HTTPS代理。最好的答案是“TLS / SSL(HTTPS中的S)保证您和您正在联系的服务器之间没有窃听者,即没有代理。”(同样的答案描述了黑客将其拉下来,但我不理解说明。无论如何,这是非常理论化的。)

  • 在OS X中网络首选项▶︎高级...▶︎代理下,显然有一个HTTPS代理设置。这似乎与之前的声明相矛盾,即TLS / SSL对窃听的保证意味着无法代理。

其他注意事项

  • 我不记得在哪里,但我读到可以设置一个HTTPS代理,但它使HTTPS变得毫无意义(通过破坏过程中的安全通信)。 我不想要这个!加密很好。我不想过滤其他人的流量;我只想在之后自定义内容我已收到它。

  • GlimmerBlocker有一个很好的GUI界面,但我对非GUI解决方案也很好。我可能对网络和协议了解不多,但我对命令行非常熟悉,在文本编辑器中调整设置等等。


我问的可能吗?或者我的问题是“要么你获得安全性,要么你可以用黑客攻击它来定制你的内容 - 但不是两者都有”?

1 个答案:

答案 0 :(得分:2)

HTTP代理的常见想法是接受包含目标主机名和端口的CONNECT请求的服务器,然后只构建到目标服务器的隧道。所有https都在隧道内完成,因此代理无法修改它(从浏览器到Web服务器的端到端安全性)。

要修改数据,您需要拥有一个扮演中间人的代理。在这种情况下,您在代理和Web服务器之间建立了https连接,在浏览器和代理之间建立了另一个https连接。在代理和Web服务器之间使用原始服务器证书,而在浏览器和代理之间使用新创建的证书,该证书由特定于代理的CA签名。当然,这个CA必须作为受信任导入到浏览器中,否则它会一直抱怨可能的攻击。<​​/ p>

当然 - 原始服务器证书的所有验证都必须立即在代理中完成,并非所有解决方案都以正确的方式执行此操作。另请参阅http://www.secureworks.com/cyber-threat-intelligence/threats/transitive-trust/

有几种代理解决方案可以执行此SSL拦截,如squid,mitmproxy(python)或App :: HTTP_Proxy_IMP(perl)。最后两个是专门设计的,允许您使用自己的代码修改内容,因此这些可能是开始的好地方。