HTTP与HTTPS介绍:
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL/TLS协议,SSL/TLS依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
1. HTTPS代理问题很大,正常的代理应该是建立一个隧道,proxy 收到请求之后,向 server 发送HTTP/1.1 200 Connection established,然后直接转发双方通信。这样 server 一定会知道 client 在 proxy 后面。如果 proxy 假装是 client,那就是中间人攻击了。正常来讲,你不可能获得 client 访问的 URL 到底是什么。解决方法也许可以自签一个证书?
2. 浏览器使用代理服务器设置时候,发给 proxy 的内容和没有使用发给 server 的内容是不同的。起码据我所知,直接访问一般会是 GET / HTTP/1.1而发给 proxy 的会带着域名。题主所说 header 那个不知道。所以需要确认一下。而且,HOST 那个字段具体什么含义我现在还搞不清楚,正确的 proxy 到底要根据请求的 path 建立连接还是HOST?有知道的请告诉我。。。而且坑爹的是不同浏览器的 HOST 还有点不同。记得https时候 Firefox 还是 Opera 的 HOST 里会带:443。。。所以不能确定到底有多少坑
3. 有一种和题主需求类似的实现,Interception proxying,Interception proxying 对 client 来说假装是 server,对 server 来说假装是 client。但是据 polipo 的作者说法,这种实现问题很大,不好说是不是能保证和协议兼容:
Interception proxying is a fundamentally broken design (see for
example this
posting and
RFC 3143,
Section 2.2.2), and will not be supported by Polipo.
不过,题主这种需求肯定有人想过。多 Google 一下应该有可用的、不完美的方案,但是既然标签里加了 VPS,我猜其实只是想找个好用的 FQ 方法吧?
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)