一、为什么终端命令行不受系统代理影响?
很多开发者在使用 Clash Verge Rev 时遇到过一个困惑:桌面右下角开启了「系统代理」,Chrome 浏览器查资料没有任何问题;但一旦在终端执行 `git clone`、`pip install`、`npm install` 或运行 Docker 脚本时,控制台依然频繁抛出 `Connection timed out` 或 `Failed to connect to github.com port 443`。
这是因为 Windows 桌面版的「系统代理」开关,本质上只是修改了系统的 IE/Edge 注册表配置(WinINet API)。绝大多数现代开发工具(Git、cURL、Python、Node.js)属于 POSIX 命令行工具体系,它们不会主动去读取 Windows 的注册表代理,而是严格遵循通用的系统环境变量:`HTTP_PROXY` 与 `HTTPS_PROXY`。
二、获取当前的本地代理地址与端口
在配置环境变量前,必须确认客户端监听的本地端口:
打开 Clash Verge Rev 界面,点击左侧「设置」。
找到「混合端口 (Mixed Port)」,默认通常是 `7890` 或 `7897`。
对应的本地代理地址即为:
- HTTP 协议代理:`http://127.0.0.1:7897`
- Socks5 协议代理:`socks5://127.0.0.1:7897`
三、终端快速配置代理实操步骤
1. 在 CMD(命令提示符)中临时生效

在黑色 CMD 窗口中,依次输入以下命令并回车(只在当前窗口生效,关闭后失效):
set http_proxy=http://127.0.0.1:7897
set https_proxy=http://127.0.0.1:7897
测试网络连通性:
curl -i https://ipinfo.io
如果返回的数据中显示当前节点的境外 IP,说明当前终端会话已经成功接入代理。
2. 在 Windows PowerShell 中配置快捷函数
在日常使用中,推荐在 PowerShell 个人配置文件中添加一键开关函数:
在 PowerShell 中运行 `notepad $PROFILE` 打开配置文件。
在文件末尾粘贴以下代码:
function set-proxy {
$env:HTTP_PROXY="http://127.0.0.1:7897"
$env:HTTPS_PROXY="http://127.0.0.1:7897"
Write-Host "已开启终端代理 [127.0.0.1:7897]" -ForegroundColor Green
}
function unset-proxy {
$env:HTTP_PROXY=""
$env:HTTPS_PROXY=""
Write-Host "已关闭终端代理" -ForegroundColor Yellow
}
保存并关闭记事本。今后每次打开 PowerShell,只需输入 `set-proxy` 即可一键开启命令行代理,输入 `unset-proxy` 即可一键复原。
3. 针对 Git 客户端的专用代理配置
如果经常需要拉取 GitHub 代码:
# 为全局 Git 配置走本地代理端口
git config --global http.proxy http://127.0.0.1:7897
git config --global https.proxy http://127.0.0.1:7897
# 如需取消 Git 代理,执行:
git config --global --unset http.proxy
git config --global --unset https.proxy
四、常见避坑提醒(FAQ)
问:配置了环境变量后,ping 命令依然超时不通?
答:这是正常的。ping 命令使用的是底层的 ICMP 网络协议,而 HTTP/SOCKS 代理只负责转发 TCP 和 UDP 应用层流量,无法代理 ICMP 报文。测试终端代理是否生效,应当使用 `curl -I https://www.google.com` 或 `git fetch` 进行验证。