浏览器已经能通过 Clash Verge Rev 访问目标网站,但 PowerShell 里的 curl、Git 等命令仍然连接失败,可以先让一条命令明确连接本机混合代理端口。确认请求成功后,再决定是否为当前终端设置代理环境变量。
本文适用于 Clash Verge Rev 与命令行工具运行在同一台电脑的本机环境。主要步骤使用 Windows PowerShell,并补充 macOS/Linux 的 bash、zsh 写法;WSL、Docker 和远程服务器有不同网络边界,不应直接照抄这里的 127.0.0.1。
如果客户端还没有导入并激活订阅,先完成 Clash Verge Rev 使用教程。下文的 7897 都是示例,请换成你当前的混合端口。
先选择代理的作用范围
系统代理需要应用主动读取相关设置,因此浏览器能用,不能证明某个命令行工具也在使用代理。手动指定本机代理后,流量如何出站仍由 Clash 的模式和规则决定。Clash Verge Rev 官方名词解释
| 你的需求 | 本文建议的起点 | 生效范围 |
|---|---|---|
| 先确认终端能否连通 | curl 的 --proxy |
这一条请求 |
| 在 PowerShell 里连续运行命令 | 当前会话的代理环境变量 | 此后从该会话启动、且支持这些变量的程序 |
| 只测试一次 Git HTTPS 访问 | git -c http.proxy=… |
这一条 Git 命令 |
| 应用没有可用的代理设置 | 阅读 TUN 模式指南 | 取决于 TUN 配置与路由 |
第一步:核对实际混合端口
在 Clash Verge Rev 打开 设置 → 端口设置,查看“混合代理端口”。v2.5.5 的默认值为 7897,但旧配置和手工修改都可能改变它,以你的界面为准。
混合端口支持 HTTP 和 SOCKS5。本篇统一使用 HTTP 代理地址,例如 http://127.0.0.1:7897;不要填写外部控制端口,也不用为了本机终端开启局域网共享。端口占用或没有监听时,先看 端口设置与监听检查。Mihomo 代理端口说明
目标网址是 HTTPS,代理地址仍可以是 http://127.0.0.1:7897。 两处协议描述的是不同连接:curl 可以向本机 HTTP 代理建立 CONNECT 隧道,再访问 HTTPS 目标,不需要把代理前缀改成 https://。curl 的 HTTP 代理说明
第二步:用 curl 验证一次显式代理请求
在 Windows PowerShell 中执行:
curl.exe -q --proxy http://127.0.0.1:7897 --noproxy localhost,127.0.0.1 --connect-timeout 10 --max-time 30 --head https://github.com这里明确调用 curl.exe,避免 Windows PowerShell 中同名别名带来的参数差异。如果提示找不到命令,先确认电脑上可用的 curl 程序,不要把这条命令当作 PowerShell 的 Invoke-WebRequest 使用。
macOS/Linux 的本机终端可以使用同样参数,将开头换成 curl:
curl -q --proxy http://127.0.0.1:7897 --noproxy localhost,127.0.0.1 --connect-timeout 10 --max-time 30 --head https://github.com-q 放在第一个参数位置,用于跳过默认 curl 配置文件;--noproxy 在这次测试中仅绕过两个本机名称,减少旧环境变量把 GitHub 绕过代理的干扰。请求最多等待 30 秒,不会写入永久代理设置。curl 官方参数手册
查看结果时分清三层:
- 本机入口:连接
127.0.0.1失败或被拒绝,先核对客户端、地址和端口。 - 目标响应:如果输出里出现
200 Connection established,它只是代理隧道建立的响应;继续看后面的目标网站响应。403、429、证书错误或超时,需要按实际错误继续判断。 - 实际路径:在 Clash Verge Rev 的“连接”页查找同一时间的
github.com请求,核对规则与链路。连接可能很快结束,可重新执行命令时观察。
GitHub 只是测试目标。这里得到正常响应后,还要测试你真正需要访问的网站或工具;如果连接页显示 DIRECT,说明请求进入了内核,但最终走的是直连。需要调整出口时看 规则与分流教程。
第三步:让当前 PowerShell 会话使用代理
单次请求成功后,新开一个专门用于测试的 PowerShell 窗口,执行下面两行。不要在里面启动需要长期保留的后台任务:
$env:http_proxy = 'http://127.0.0.1:7897'$env:https_proxy = 'http://127.0.0.1:7897'再运行一条不带 --proxy 的 curl 命令:
curl.exe -q --connect-timeout 10 --max-time 30 --head https://github.com这次用于检查 curl 是否通过环境变量获得代理地址。Windows 环境变量名不区分大小写;这些赋值只修改当前 PowerShell 进程的环境,随后启动的子进程会继承。已经打开的其他终端和应用不会因此同步改变。微软环境变量说明
撤销本节改动:结束测试命令,关闭这个专用窗口。 如果你从该窗口另外启动了仍在运行的程序,也要退出并从未修改的环境重新启动。这样不会覆盖原有用户级、系统级或终端启动脚本里的配置;那些旧设置需要另行检查。
环境变量只有在程序支持时才有用。某个 CLI 仍然失败时,应查它自己的代理说明,不能把 curl 的成功推广到所有命令行工具。
macOS/Linux:先只给一条命令设置变量
在 bash 或 zsh 中,可用下面的写法临时给这一条 curl 命令传入变量:
http_proxy=http://127.0.0.1:7897 https_proxy=http://127.0.0.1:7897 curl -q --connect-timeout 10 --max-time 30 --head https://github.com命令结束后,不会把本次赋值保留为当前 shell 的新设置,也不需要改 .bashrc 或 .zshrc。curl 在这些系统下的 http_proxy 要使用小写;no_proxy 仍可能让指定目标绕过代理。显式测试成功、环境变量测试失败时,优先核对这一项及工具自身设置。curl 代理环境变量说明
第四步:单独验证 Git 的 HTTPS 访问
已安装 Git 的用户可以执行下面的只读请求。它查询公开仓库的 HEAD,不会克隆项目,也不会修改当前仓库文件:
git -c http.proxy=http://127.0.0.1:7897 ls-remote https://github.com/clash-verge-rev/clash-verge-rev.git HEAD正常结果应包含提交哈希和 HEAD。这里的 -c 只为这一条 Git 命令传入配置,不写入全局或仓库配置文件,所以命令结束后无需执行删除配置的命令。Git 命令参数、ls-remote 说明
Git 文档中的代理配置项是 http.proxy,HTTPS 仓库同样使用这一项;不需要额外创建所谓标准的 https.proxy 配置。Git 配置手册
需要注意两种情况:
- 你的远端如果写成
git@github.com:用户名/仓库.git,使用的是 SSH。本节的 HTTPS 测试成功,不能证明 SSH 已走代理;先核对协议,再按需要配置 SSH 或考虑 TUN。Git 协议说明 - 如果以前配置过 Git 代理,特定 URL、远端和环境变量仍可能影响结果。先在发生问题的仓库目录读取配置来源,不要直接删除整份配置。
查询 GitHub 对应的代理配置:
git config --show-origin --get-urlmatch http.proxy https://github.com/没有输出只表示没有匹配到这个 Git 配置项,不表示环境变量或 TUN 不存在。若输出包含旧端口,按显示的来源检查;如果地址内有账号或密码,不要把原始输出公开分享。
仍然失败时,按现象继续检查
| 现象 | 下一步 |
|---|---|
显式 --proxy 成功,设置变量后失败 |
确认命令在同一会话运行,检查 no_proxy 是否绕过目标,以及工具是否有自己的代理配置 |
| 报错仍连接旧端口 | 检查当前进程继承的变量、终端启动脚本和 Git 配置来源;改动后重开相关程序 |
| 本机端口可达,目标请求超时 | 核对节点、目标服务与链路,转到 节点与订阅超时排查 |
| curl 正常,Git 仍失败 | 核对远端是 HTTPS 还是 SSH,再检查 Git 代理、认证和原始错误;证书错误应排查信任配置,不靠关闭校验掩盖 |
| 请求进入 Clash,但出口与预期不同 | 查看命中的规则和最终链路;设置终端代理不等于改成全局模式 |
| 退出 Clash 后命令无法联网 | 结束临时测试窗口;若新窗口仍连接本机代理,检查原有持久环境变量或工具配置中的残留地址 |
如果某个程序没有可用的手动代理入口,可以再按 TUN 模式指南处理。已经通过以上步骤正常工作的命令,无须仅为“终端代理”再叠加一种接管方式。
