作者:IPIDEA
2021-01-13 16:43:37
HTTP代理我们正常的HTTP通信是这样的:
客户端先通过TCP与服务器建立一条连接,连接建立完成后,客户端向服务器发送请求(比如GET /hello.html HTTP/1.1,意为我想要取得服务器根目录/下的hello.html文件)
服务器接收到客户端发来的请求,找到所请求的文件,并通过原来的连接发回去。(接上条的例子,找到根目录/下的hello.html文件,并发送HTTP/1.1 200 OK,代表找到了这个文件,现在我就发送给你)
客户端接收到服务器传过来的文件,并用浏览器渲染出来给用户看(通过html/css以及js等把传回来的文本内容可视化,展示在屏幕上)
但我现在可能不想要按照人家的规定来访问,比如说我想访问根目录下的fxxk.html文件,然而又没办法直接跳转过去,那怎么办?这时候就轮到代理服务器出场了(当然这种需求改个url就可以了,这里只是举例):
假设我们有一个受我们控制的代理服务器A。
客户端先与A建立TCP连接,然后告诉代理服务器A我想要访问某某网址根目录下的hello.html
代理服务器A收到请求,这时我们可以修改请求的内容,比如把hello.html改成fxxk.html。再建立一条到客户端指定网址的TCP连接,把这个新的请求的通过这个新连接发送过去。
这样在服务器看来,就好像是客户端请求了/fxxk.html一样,然后把所请求的内容返回回去,代理服务器再把内容通过第一条连接送回客户端…
总结一下,这次请求中,HTTP代理共建立了两条TCP连接:一条是客户端到代理服务器的,另一条是代理服务器到HTTP服务器的。这时代理服务器就好像一个中间商,可以看到你们双方交互的所有内容,并且也可以邪恶地更改这些内容。
顺便一说,代理https也是一样建立了这两个连接。客户端与代理服务器建立https连接,代理服务器又与HTTP服务器建立https连接,所以表面上我们是与代理服务器建立https连接的,这也是为什么在进行这种代理的时候需要导入代理服务器的https证书。
SOCKS代理
其实代理的原理都差不多,SOCKS代理运行在比HTTP代理更低的层次上,同样也是建立两个连接:先与来请求内容的客户端建立连接
(1)查看请求内容,与真正的服务器建立连接
(2)并发送请求。只不过SOCKS代理还会把中间通信的内容给加密了,因此这种代理更加安全。并且socks5还引入了认证以及多种加密方式和对udp等多种协议的支持,因此能更加安全可靠地帮你办更多事情。IPIDEA支持http/https/socks5,住宅IP代理响应极速,强力保护数据安全。