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