我必须缺少一些有关代理的关键概念,因为我无法理解这一点。我希望运行一个简单的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提供商提供商一样。
----找到答案的速度过快,请随时删除该帖子/问题管理员。
答案 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的解决方案。常见的代理服务器包括Squid,Privoxy和Apache Traffic Server
另请参阅:https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/CONNECT
答案 1 :(得分:0)
我问了之后就找到了解决方案... 该模块可以完美运行https://github.com/mpangrazzi/harrier
完全符合我的要求。