Windows终端启用网络代理
Windows终端启用网络代理
clover很多朋友都会遇到这样一个场景:明明系统代理已经打开了(比如Clash、V2Ray等代理工具已经处于“全局”或“系统代理”模式),但在Windows Terminal或者命令行里执行curl、npm install、pip install等命令时,却依然网速龟速,甚至直接报错。
这是怎么回事?难道代理没生效?
其实,Windows系统代理只对图形界面的应用(比如浏览器、微信等)生效。像PowerShell、CMD这类终端窗口,并不会自动继承系统代理的设置,需要我们手动配置环境变量才能让它们走代理。所以今天这篇博客,就和大家聊聊如何解决这个问题,让Windows终端也能顺利走代理。
💡 为什么终端不走系统代理?
在Windows中,“系统代理”本质上是在系统网络设置中注册了一个代理地址(通常是http://127.0.0.1:端口)。大多数桌面软件会主动读取这个设置来使用代理,但命令行工具(如PowerShell、CMD)并不会默认读取系统代理,它们需要通过HTTP_PROXY、HTTPS_PROXY这两个环境变量才能知道代理的存在。
所以,我们要做的就是告诉终端:“嘿,你的网络流量应该从这儿走。”
⚙️ 方法一:临时设置代理(适用于当前会话)
如果你只是偶尔需要使用代理,或者需要测试代理是否可用,可以在当前的PowerShell窗口中临时设置环境变量。
1 | $env:HTTP_PROXY = "http://127.0.0.1:10101" |
注意:
10101是本文示例使用的 V2Ray HTTP 代理端口,如果你用的是 Clash、SSR 等其他工具,请换成对应的端口号(比如 Clash 常见端口是7890)。
验证是否生效
在终端执行:
1 | curl https://www.google.com |
如果能正常返回HTTP响应头,说明代理已经生效。
🛠️ 方法二:永久配置到PowerShell配置文件(推荐)
如果每次打开终端都需要手动输入代理,那未免太麻烦了。我们可以把代理配置写入PowerShell的启动配置文件(Profile),这样每次启动终端都会自动生效。
1. 查看或创建配置文件
在PowerShell中执行:
1 | Test-Path $PROFILE |
- 如果返回
True,说明配置文件已存在。 - 如果返回
False,执行以下命令创建一个:
1 | New-Item -Path $PROFILE -Type File -Force |
2. 编辑配置文件
执行以下命令用记事本打开它:
1 | notepad $PROFILE |
在文件的末尾粘贴以下内容(记得替换端口号):
1 | # ========== 代理配置 ========== |
保存文件并重启Windows Terminal,代理就会自动生效。
🎯 方法三:配置代理开关函数(最优雅)
如果你时而需要代理、时而需要直连,不希望一直处于代理状态,可以换一种更灵活的写法——把代理写成一个函数,方便随时开启或关闭。
同样在$PROFILE文件末尾添加以下内容:
1 | function proxy-on { |
保存后,在终端输入proxy-on就能启用代理,输入proxy-off就能关闭代理,非常灵活。
📦 各工具的独立代理配置
除了环境变量,一些常见的包管理工具也支持独立配置代理,便于更精细地管理。
npm
1 | npm config set proxy http://127.0.0.1:10101 |
pip
1 | pip config set global.proxy http://127.0.0.1:10101 |
Git
1 | git config --global http.proxy http://127.0.0.1:10101 |
🧪 验证代理是否配置成功
用一行命令就能验证你的代理是否真的生效:
1 | curl -s https://api.ip.sb/geoip |
如果你看到的IP地址显示为你的代理节点所在地(比如香港、日本、美国等),那么恭喜你,代理已经完全生效。
⚠️ 常见问题排查
| 症状 | 可能原因与解决 |
|---|---|
| 配置后仍然无法访问外网 | 确认代理软件是否开启,检查端口号是否正确(比如本文示例的 V2Ray 端口10101,Clash 常见端口7890)。 |
| 代理软件在“规则模式”下不走终端流量 | 可以尝试切换到“全局模式”测试,或者检查软件的“允许局域网连接”选项是否开启。 |
| 只想清除代理 | 执行$env:HTTP_PROXY=""和$env:HTTPS_PROXY=""即可。 |
Git报错Failed to connect |
确认Git的代理配置是否与你的代理软件端口一致。 |
💡 写在最后
让Windows终端走代理,核心就是围绕环境变量做文章。只要理解了这个原理,无论是临时设置还是永久配置,都可以信手拈来。
我个人比较推荐在Profile文件中配置proxy-on和proxy-off这两个函数,既保留了随时切换的灵活性,又不用在每次开窗口时敲一堆重复命令。如果你也经常在终端里折腾这些工具,不妨试试看~
如果你有更好的方法,也欢迎在评论区分享交流!