在 Linux 终端中设置临时代理,最直接的方式是设置环境变量。这样设置后,代理仅对当前终端会话有效,关闭终端后即失效。

使用 export 设置代理环境变量

HTTP 代理:

     export http_proxy="http://your_proxy_address:your_proxy_port"
     export HTTP_PROXY="http://your_proxy_address:your_proxy_port"

HTTPS 代理:

     export https_proxy="http://your_proxy_address:your_proxy_port"
     export HTTPS_PROXY="http://your_proxy_address:your_proxy_port"

SOCKS 代理:

     export socks_proxy="socks5://your_proxy_address:your_proxy_port" # 或者 socks4
     export SOCKS_PROXY="socks5://your_proxy_address:your_proxy_port" # 或者 socks4

同时设置 HTTP 和 HTTPS 代理(通常推荐):

     export http_proxy="http://your_proxy_address:your_proxy_port"
     export https_proxy="http://your_proxy_address:your_proxy_port"
     export HTTP_PROXY="http://your_proxy_address:your_proxy_port"
     export HTTPS_PROXY="http://your_proxy_address:your_proxy_port"

包含用户名和密码的代理(如果需要):

     export http_proxy="http://username:password@your_proxy_address:your_proxy_port"
     export https_proxy="http://username:password@your_proxy_address:your_proxy_port"
     export HTTP_PROXY="http://username:password@your_proxy_address:your_proxy_port"
     export HTTPS_PROXY="http://username:password@your_proxy_address:your_proxy_port"

不使用代理的域名或 IP 地址列表(NO_PROXY):

     export no_proxy="localhost,127.0.0.1,your_internal_domain.com"
     export NO_PROXY="localhost,127.0.0.1,your_internal_domain.com"

多个地址用逗号分隔。

为单个命令指定代理

某些命令可能不读取标准环境变量,或者你只想让某一次请求走代理,可以使用命令自身的选项:

  • wget:wget --proxy=on -e 'http_proxy=http://your_proxy_address:your_proxy_port' http://www.example.com

  • curl:curl -x http://your_proxy_address:your_proxy_port http://www.example.com

验证代理是否生效

使用 curl 或 wget 访问一个外部网站,并观察是否通过代理服务器连接。

     curl -v http://www.example.com  # 查看详细连接信息
     wget http://www.example.com       # 下载网页

如果使用了代理,你应该能在输出中看到代理服务器的地址。

取消代理

使用 unset 命令清除环境变量:

     unset http_proxy
     unset https_proxy
     unset HTTP_PROXY
     unset HTTPS_PROXY
     unset no_proxy
     unset NO_PROXY

完整示例

假设你的代理服务器地址是 192.168.1.100,端口是 8080,你可以这样设置代理:

export http_proxy="http://192.168.1.100:8080"
export https_proxy="http://192.168.1.100:8080"
export HTTP_PROXY="http://192.168.1.100:8080"
export HTTPS_PROXY="http://192.168.1.100:8080"

然后,你可以使用 curl 或 wget 来测试代理是否生效。

curl http://www.example.com

重要注意事项

  • 替换占位符:将 your_proxy_address 和 your_proxy_port 替换为你的实际代理服务器地址和端口。
  • 大小写:环境变量名称区分大小写,但通常建议同时设置大小写两种形式(http_proxy 和 HTTP_PROXY)以确保兼容性。
  • 安全性:如果代理需要用户名和密码,请谨慎处理,避免泄露。尽量不要将密码直接写在脚本中。
  • 终端会话:这些设置仅在当前终端会话有效。关闭终端后,代理设置将失效。
  • SOCKS 版本:确认你的 SOCKS 代理是 SOCKS4 还是 SOCKS5,并在 socks_proxy 环境变量中指定正确的协议。
  • NO_PROXY:NO_PROXY 环境变量用于指定不需要通过代理连接的域名或 IP 地址。这对于访问本地网络资源非常有用。
  • 不同应用:有些应用可能不使用标准的 http_proxy 环境变量。你可能需要查阅特定应用的文档,了解如何配置代理。例如,git 有自己的代理配置。
— 感谢阅读 —

一起交流

分享你的思考,让讨论更进一步。