将代理流量分为以下几种情况:
- 浏览器设置代理, 代理客户端流量走直连.
- 浏览器设置代理, 代理客户端流量走远端服务器.
- fakeip 方案的透明代理, 浏览器向 fakeip 发起 tcp 连接.
以下是我的理解;
针对情况 1/2, 浏览器跟代理客户端都是纯粹的 socks 通信, 所有 tcp 连接建立和维持, 包括 tls 握手都是由代理完成的. 1/2 的区别是由本机的代理客户端完成,, 还是远端的代理服务器完成.
针对情况 3, 本机浏览器直接建立了 tcp 连接, 完成 tls 握手, 但由于目标是 fake-ip, 因此 tcp 连接被代理客户端或远端服务器(取决于走直连还是远端)偷梁换柱, 修改报文, 以实现数据正确达到本机浏览器. 但是具体怎么个修改方法比较疑惑.
假设是直连的情况, fakeip 的模式下, 本机代理是重新建了个 tcp 连接, 然后把内容转发给本机浏览器? 还是只是修改了报文里的源 IP 之类的信息, 协助建立连接?
假设是走远端代理的情况, faeip 模式下, 远端代理是重新建了个 tcp 连接, 然后把内容转发给本机代理, 最后再转发给本机浏览器? 还是说只是偷换了本机浏览器的 tcp 连接报文内容, 协助到达目的地?
针对上面 3 种大类, 代理服务器到底能不能截获, 解析 HTTPS 的报文具体内容?如果是代理服务器代为建立连接, 感觉是可以的?
|