linux中curl和wget需分别配置socks5代理:curl可用--socks5参数、-x socks5://或all_proxy环境变量;wget需编译支持socks5,通过-e http_proxy=socks5://或~/.wgetrc配置,且二者不共享同一环境变量机制。

要在Linux中让wget和curl命令通过指定的SOCKS5代理发起网络请求,必须分别设置各自支持的环境变量或命令行参数,不能依赖系统级全局代理设置(如ALL_PROXY)对两者全部生效。
为curl设置SOCKS5代理
方法一:使用--socks5命令行参数(推荐)
直接在curl命令末尾添加--socks5 127.0.0.1:1080,其中IP和端口替换为你的SOCKS5服务器地址。例如:curl --socks5 192.168.5.100:1080 https://httpbin.org/ip。
方法二:用-x参数配合协议前缀
执行curl -x socks5://127.0.0.1:1080 https://httpbin.org/ip。注意:这里必须显式写socks5://,否则-x默认按HTTP代理处理,会失败。
方法三:设置环境变量(仅对当前shell会话有效)
运行export ALL_PROXY=socks5://127.0.0.1:1080,之后所有未显式指定代理的curl命令都会走该SOCKS5代理。但【curl不读取http_proxy或https_proxy环境变量来走SOCKS5】,这点和wget不同,务必区分。
为wget设置SOCKS5代理
wget本身不原生支持SOCKS协议,必须借助proxy配置项配合socks5前缀,且仅在编译时启用了libproxy或c-ares支持的版本才可用。
第一步:确认wget支持SOCKS
运行wget --version | grep -i socks,若无输出,说明当前wget不支持SOCKS5,需重装支持版本(如Debian/Ubuntu下安装wget2或从源码编译启用--with-openssl --with-libpsl --enable-socks5)。
第二步:临时启用(单次命令)
使用wget -e use_proxy=yes -e http_proxy=socks5://127.0.0.1:1080 https://httpbin.org/ip。注意此处http_proxy变量值必须是socks5://开头,wget会识别并转为SOCKS连接。
第三步:永久配置(当前用户)
编辑~/.wgetrc,添加两行:use_proxy = onhttp_proxy = socks5://127.0.0.1:1080
保存后,所有后续wget命令自动走该SOCKS5代理。此配置不作用于root用户,也不影响其他用户的wget行为。
验证代理是否生效
执行curl --socks5 127.0.0.1:1080 https://httpbin.org/ip | grep origin,查看返回IP是否与SOCKS5服务器出口IP一致。
执行wget -qO- https://httpbin.org/ip 2>/dev/null | grep origin,对比结果是否匹配。
若两者返回IP相同且不同于本机真实IP,说明SOCKS5代理已正确穿透。











