Skip to content

让终端走代理 ​

预计 15 分钟 最后验证 2026-09-29部分待实测

这一节假设你已经有一个可用的代理客户端,并且合法合规地使用它。本教程不涉及代理服务的选择。

第 1 步:找到代理端口 ​

打开代理客户端的设置页,找到HTTP 端口或混合端口(mixed port)。常见的端口号有 7890、7897、10809 等,一定要以你自己客户端里显示的为准。

下文统一用 7890 举例,你需要把它换成自己的端口号。

第 2 步:临时设置(只对当前窗口有效) ​

powershell
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
$env:NO_PROXY = "localhost,127.0.0.1"
bash
export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
export NO_PROXY="localhost,127.0.0.1"
# 有些程序只认小写的变量名,一起设上
export http_proxy="$HTTP_PROXY" https_proxy="$HTTPS_PROXY" no_proxy="$NO_PROXY"
  • HTTP_PROXY / HTTPS_PROXY:告诉程序通过哪个地址上网;
  • NO_PROXY:哪些地址不走代理。本机地址(localhost、127.0.0.1)不应该走代理。

地址里为什么是 http:// 开头

即使访问的是 https 网站,这里通常也写 http://127.0.0.1:端口。这表示"用 HTTP 协议和本地代理通信",并不影响访问 https 网站的安全性。

第 3 步:验证 ​

powershell
# 注意要写 curl.exe,PowerShell 里单写 curl 是另一个命令
curl.exe -I https://github.com
bash
curl -I https://github.com

输出第一行类似 HTTP/1.1 200 OK 或 HTTP/2 200,说明终端已经能通过代理访问了。

如果输出 Failed to connect to 127.0.0.1 port 7890,说明端口号不对,或者代理客户端没开。

第 4 步(可选):做成开关命令 ​

每次都手动输入很麻烦。可以把设置写成两个"开关命令":proxy_on 开启,proxy_off 关闭,以后在任何终端窗口里一敲就行。

powershell
# 1. 打开 PowerShell 的配置文件(没有的话会先创建)
if (!(Test-Path $PROFILE)) { New-Item -Path $PROFILE -ItemType File -Force }
notepad $PROFILE

# 2. 在打开的记事本里粘贴下面的内容,把 7890 换成你的端口,保存并关闭
function proxy_on {
    $env:HTTP_PROXY = "http://127.0.0.1:7890"
    $env:HTTPS_PROXY = "http://127.0.0.1:7890"
    $env:NO_PROXY = "localhost,127.0.0.1"
    Write-Host "代理已开启"
}
function proxy_off {
    Remove-Item Env:HTTP_PROXY, Env:HTTPS_PROXY, Env:NO_PROXY -ErrorAction SilentlyContinue
    Write-Host "代理已关闭"
}

# 3. 重新打开终端,就可以使用 proxy_on / proxy_off 了
bash
# 1. 用文本编辑器打开 shell 配置文件(macOS 默认 zsh)
open -e ~/.zshrc        # macOS;如果提示文件不存在,先执行 touch ~/.zshrc
# nano ~/.bashrc        # Linux 用 bash 的话

# 2. 在文件末尾粘贴下面的内容,把 7890 换成你的端口,保存并关闭
proxy_on() {
  export HTTP_PROXY="http://127.0.0.1:7890" HTTPS_PROXY="http://127.0.0.1:7890"
  export NO_PROXY="localhost,127.0.0.1"
  export http_proxy="$HTTP_PROXY" https_proxy="$HTTPS_PROXY" no_proxy="$NO_PROXY"
  echo "代理已开启"
}
proxy_off() {
  unset HTTP_PROXY HTTPS_PROXY NO_PROXY http_proxy https_proxy no_proxy
  echo "代理已关闭"
}

# 3. 重新打开终端,就可以使用 proxy_on / proxy_off 了

待实测

Windows 下 $PROFILE 配置文件的写法作者没有在真实 Windows 机器上验证。如果重新打开终端后报"禁止运行脚本",先完成 允许 PowerShell 运行脚本 这一步。

为什么不直接设成永久环境变量?

如果把代理写成永久环境变量,一旦代理客户端没开,终端里所有联网操作都会失败,而且不容易想到原因。做成"开关",需要时才打开,更不容易出问题。

各工具与代理的关系 ​

工具是否读取 HTTPS_PROXY 环境变量备注
git是也可以用 git config --global http.proxy 单独设置,但要记得不用时取消
npm是用了国内镜像的话一般不需要代理
curl是
Claude Code是
Codex是

代理开着时,访问国内服务反而可能变慢

设置了 HTTPS_PROXY 后,所有请求(包括 npmmirror、DeepSeek 这些国内服务)都会先经过代理客户端。代理客户端一般会按规则让国内网站直连,但如果你的客户端没有配置好分流规则,国内服务可能反而变慢。不需要代理的时候,用 proxy_off 关掉。

常见报错 ​

报错信息可能原因
Failed to connect to 127.0.0.1 port xxxx代理客户端没开,或端口号填错
ETIMEDOUT / Connection timed out没有走代理(环境变量没设或不在同一个窗口),或者代理节点不可用
ECONNRESET / Connection reset网络连接被中断,换个时间或检查代理节点
SSL certificate problem某些代理或安全软件拦截了 HTTPS 流量,先试试关闭代理或安全软件

更多问题见 常见问题。

内容会随工具更新而过时,每页顶部标注了最后验证的版本和日期。