【问题标题】:Local HTTPS proxy possible?可以使用本地 HTTPS 代理吗?
【发布时间】:2014-08-22 03:31:05
【问题描述】:

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 的使用越来越多是一件好事。我只是想在内容到达我的终点后重新获得对内容的控制权。


困惑点

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

(另外,虽然我对网页语言非常熟悉,但我总是很难理解网络和协议。在此说明,如果我遗漏了一些显而易见的东西,请见谅!)

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

  • 在 OS X 中的 Network Preferences ▶︎ Advanced... ▶︎ Proxies 下,显然有一个 HTTPS 代理设置。这似乎与之前的说法相矛盾,即 TLS/SSL 对窃听的保证意味着代理的不可能性。

其他注意事项

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

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


我问的可能吗?还是我的问题是“您要么获得安全性,要么可以通过黑客攻击来破解它并自定义您的内容——但不能两者兼而有之”?

【问题讨论】:

    标签: ssl https proxy customization adblock


    【解决方案1】:

    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)。最后两个专门设计用于让您使用自己的代码修改内容,因此这些可能是不错的起点。

    【讨论】:

      猜你喜欢
      • 2016-09-15
      • 2014-11-30
      • 1970-01-01
      • 2017-12-19
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      相关资源
      最近更新 更多