Morfiade
简体中文
试用

SOCKS5 与 HTTP 代理

这是浏览器用来通过中间节点的两种协议。区别在于中间节点在哪个层面工作。

HTTP 代理能理解 Web 请求:它知道你要去哪里,并且可以处理这些请求。对于加密连接(https://),它会打开一条直通隧道,之后就看不到内容了——只能看到目标地址。

SOCKS5 什么都不理解,也不想理解:它只是在你和目标之间搬运字节。正因如此,不仅是 Web 流量,任何其他协议的流量都能通过它。

HTTPSOCKS5
层面Web 请求整个连接
能看到什么目标地址、请求头(针对 http://除了地址和端口之外什么都看不到
非 Web 协议不支持支持
账号和密码支持支持
DNS 由谁解析通常由代理解析取决于设置——这一点很重要

实践中真正重要的是什么

第一,DNS。 如果解析网站名称的是你的电脑而不是代理,那么域名查询就会绕过隧道发出去,你的网络运营商就能看到你要去哪里。这并不会直接把你的地址暴露给网站,但这确实是一种泄漏。对 SOCKS5 来说,行为取决于具体设置,所以要检查的是结果,而不是协议的名字。

第二,身份验证。 带账号密码的代理在浏览器里配置起来比不带的更复杂,而这里也正是最容易出问题的地方。

它不是什么

协议的选择几乎从来不是验证码出现的原因。 我们直接验证过这一点:在花一周时间追查一个循环验证码的过程中,我们尝试过的方向里就包括 HTTP 对比 SOCKS。结果没有任何区别——问题实际出在地址本身的信誉上。

所以排查的顺序应该是:先看是什么类型的地址(服务器地址还是家庭地址),再看它实际是从哪里出去的,最后才轮到协议。

该选哪个

如果卖家两种都提供,选哪个都行——在浏览器里你不会察觉出差别。当同一个代理不止浏览器一处需要用到时,SOCKS5 更方便。而在需要身份验证的情况下,HTTP 配置起来稍微简单一些。

更重要的是:在把一个地址分配给某个账号之前,先检查它是否存活、从哪里出去,而不是分配之后再检查。