SOCKS5 代理是一层转发。程序把请求交给本机的客户端,客户端把字节流转给远端的线路,线路替你去连目标,把结果原样送回来。整个过程中,目标看到的是线路的地址,不是你本机的地址。原理就这么一层,剩下的都是配置细节。
它不解析内容,只搬字节。
先弄清这一层转发关系,参数就好理解了。
地址端口是入口,账号密码是门票,线路本身才是真正干活的那一头。
- 客户端
- 本机这一端,负责把流量接过来。
- 线路
- 远端那一端,负责替你去连目标。
- 协议
- 两端约定的说话方式,SOCKS5 是其中一种。
为什么它比别的协议通用
因为它不关心上层跑的是什么。网页、邮件、游戏、自定义协议,在它眼里都是一样的字节流,照搬就行。HTTP 代理要理解请求内容,能处理的只有网页那一类。通用性换来的是适用范围,代价是它不能做内容缓存这类优化。
这个特性决定了它的用途。需要按程序分流的多窗口任务,基本只能用 SOCKS5;纯网页的场景,两种都能用,用哪种取决于手边的工具。这一点在选协议之前就要想清楚。
一条代理IP线路里有什么
这条代理IP线路里,一个地址、一个端口、可能还有一组账号密码,背后是一台或者一组服务器。地址决定了对外看起来从哪里来,端口区分同一条线路上不同的接入点,账号密码用来区分是谁在用。三样对上,这条线才通。
配置时的三个常见误解
第一个是把端口当固定值。同一个地址换端口就是另一条线,抄参数的时候要连端口一起抄。第二个是以为配了就全局生效,实际要看客户端有没有接管全部流量。第三个是把速度问题归到协议上,协议不决定速度,线路质量才决定。
原理这一层只需要记住一句:客户端把流量交给线路,线路替你出面。记住这句,参数错在哪一层就能推出来。
什么时候该怀疑线路
参数核对过、客户端也接管了,代理IP还是不通,这时候才怀疑线路。顺序反过来,先换线再查配置,换完还是不通,问题还在原地,白折腾一轮。
SOCKS5 代理这个概念,说清楚只要三句话:它在中间转一手,它不看内容只搬字节,它让目标看到的是线路的地址。三句话之外的东西,都是具体实现和配置。

