写了一个 [SOCKS](https://en.wikipedia.org/wiki/SOCKS) 代理小工具,在用 cURL 测试中,顺带记录一下 cURL 设置 SOCKS 代理的方式。 其中:`` 为主机,`` 为端口,`` 为目标 URL。 ## 代理设置方式 #### 使用 SOCKS4 代理 ```- curl --proxy socks4://: ``` #### 使用 SOCKS4a 代理 ```- curl --proxy socks4a://: ``` #### 使用 SOCKS5(本地DNS) 代理 ```- curl --proxy socks5://: ``` #### 使用 SOCKS5(远程DNS) 代理 ```- curl --proxy socks5h://: ``` 注意协议头是:**socks5h://**。 ## 代理协议的区别 SOCKS4 和 SOCKS4a 已经被 SOCKS5 取代。不应再使用。 Windows IE 的代理貌似只支持到 SOCKS4a,不支持 SOCKS5。 SOCKS5 和 SOCKS5h 的区别仅用于 cURL。在 cURL 中,SOCKS5 会使用本地DNS,SOCKS5h 会使用代理提供的远程DNS。 在其它软件中,SOCKS5h 基本不起作用,使用 SOCKS5 即可。一旦设置了代理,多数时候会采用远程DNS。