如何通过不带CA或MITM的HTTP代理HTTPS?

时间:2018-07-24 21:04:23

标签: proxy

具有SSL和DNS支持的HTTP代理。

我必须缺少一些有关代理的关键概念,因为我无法理解这一点。我希望运行一个简单的http或https代理而不干扰SSL。简单来说,一个完全透明的代理可以将所有流量传递给通过HTTP或HTTPS代理连接的浏览器,而无需修改或拦截任何数据包。无法在线找到任何代码,或者我没有使用正确的关键字。

EX。在浏览器上的HTTP代理字段上添加 server.someVPN.com:80 ,当您尝试访问网站时,它会提示您进行身份验证。然后,它与任何域,任何安全性,任何SSL完美配合,无需采取进一步措施。大多数VPN提供商都有此功能。

这怎么可能?它甚至可以解析DNS本身。我认为在dns依赖客户端的透明代理上。最好寻找一个nodeJS解决方案,但任何lang都可以。

请不要提出任何解决方案,例如SOCKS5或袜子转发或DNS覆盖或基于CA的MITM。根据支持“ CONNECT”的HTTP 1.1,这应该很容易。

不寻求代理特定域,而是寻求一种包容性的解决方案,就像大多数VPN提供商提供商一样。

----找到答案的速度过快,请随时删除该帖子/问题管理员。

2 个答案:

答案 0 :(得分:1)

它的工作方式是浏览器知道它正在与代理服务器通信,因此例如,如果浏览器要连接到htttp://www.example.com,它将向代理服务器发送CONNECT www.example.com:443 HTTP/1.1,即代理服务器通过DNS解析wwww.example.com,然后打开与wwww.example.com port 443的TCP连接,并向客户端透明地代理TCP流。

我不知道任何针对nodejs的解决方案。常见的代理服务器包括SquidPrivoxyApache Traffic Server

另请参阅:https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/CONNECT

答案 1 :(得分:0)

我问了之后就找到了解决方案... 该模块可以完美运行https://github.com/mpangrazzi/harrier

完全符合我的要求。