繁体   English   中英

本地HTTPS代理可能吗?

[英]Local HTTPS proxy possible?

TL; DR

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

动机

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

唯一的问题是它不执行HTTPS( 从其FAQ中进行 ):

https页面上的广告未被阻止

当Safari使用代理获取https页面时,它实际上并没有使用http协议,而是建立了隧道式tcp连接,因此Safari接收了加密的字节。 优点是任何中间代理都无法修改或读取页面内容或URL。 缺点是GlimmerBlocker无法修改内容。 即使GlimmerBlocker试图充当中间人并解码/编码内容,也无法告诉Safari信任它,也无法告诉Safari网站证书是否有效,因此Safari会认为您访问了一个可疑网站。

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

早在2008年,也许最后一部分是正确的……但现在不再是。

需要明确的是,我认为越来越多地使用SSL是一件好事。 我只想找回对内容的控制权。


困惑点

在寻找解决方案时,我被一些明显矛盾的观点弄糊涂了。

(此外,尽管我对网页语言有相当的经验,但我一直很难浏览网络和协议。因此,如果我缺少明显的东西,抱歉!)

  • 我发现了这个StackOverflow问题,询问是否可以使用HTTPS代理。 最好的答案是:“ TLS / SSL(HTTPS中的S)确保您与要连接的服务器之间没有窃听者,也就是没有代理。”(然后,相同的答案描述了将其窃取的技巧,但我不理解说明。无论如何,这都是很理论的。)

  • 在OS X的“ 网络首选项”▶︎高级…▶︎代理下 ,显然有HTTPS代理的设置。 这似乎与先前的说法相反,TLS / SSL的防止窃听的保证暗示了代理的不可能。

其他注意事项

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

  • GlimmerBlocker有一个不错的GUI界面,但是我也很喜欢非GUI解决方案。 我可能对网络和协议了解甚少,但是我在命令行,调整文本编辑器中的设置等方面非常满意。


我要问的可能吗? 还是我的问题是“要么获得安全性,要么可以通过黑客破解安全性并自定义您的内容,但不能同时做到这两者”?

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

要修改数据,您需要有一个扮演中间人的代理。 在这种情况下,代理与Web服务器之间具有https连接,浏览器与代理之间具有另一个https连接。 在代理和Web服务器之间使用原始服务器证书,而在浏览器和代理之间使用新创建的证书,该证书由特定于代理的CA签名。 当然,必须以信任的方式将此CA导入浏览器,否则它将一直抱怨可能的攻击。

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

有几种代理解决方案可以执行此SSL拦截,例如squid,mitmproxy(python)或App :: HTTP_Proxy_IMP(perl)。 最后两个经过专门设计,可让您使用自己的代码修改内容,因此这些可能是一个不错的起点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM