直接用 node 的 http/https 模块发 get 请求测代理延迟,需显式传入 agent 实例,确保走代理而非直连;vscode 终端运行脚本可快速比对不同代理,避免 fetch/axios 等忽略 agent 的问题。

直接测代理延迟,别绕路走浏览器或外部工具
VSCode 里开个 Node 终端就能干这事,不用切到命令行敲 ping 或跑 Chrome DevTools。关键是用原生 http 模块发一个极小请求(比如 GET /health),并确保走你配置的代理——否则测的只是直连延迟。
确认 Node 进程是否真的走代理
很多卡顿问题其实出在“以为走了代理,实际没走”。Node 默认不读系统代理设置,必须显式传入 agent 实例。常见错误包括:
- 只设了环境变量
HTTP_PROXY,但没在代码里用https.Agent或http.Agent构造请求 - 代理地址写成
http://localhost:8080,而实际是http://127.0.0.1:8080(某些代理对 host 解析敏感) - HTTPS 请求用了
http.Agent,该换https.Agent
正确做法是:
const https = require('https');
const agent = new https.Agent({
host: '127.0.0.1',
port: 8080,
keepAlive: true,
timeout: 5000
});
<p>const startTime = Date.now();
https.get('<a href="https://www.php.cn/link/d92c088452611f9784bdde9c00b80e97">https://www.php.cn/link/d92c088452611f9784bdde9c00b80e97</a>', { agent }, (res) => {
console.log(<code>Proxy latency: ${Date.now() - startTime}ms</code>);
}).on('error', err => {
console.error('Proxy unreachable:', err.message);
});
</p>
用 VSCode 调试终端快速验证不同代理端点
你在 VSCode 里打开集成终端(Ctrl+`),粘贴上面代码保存为 proxy-test.js,然后改两处就能横向比对:
诊断并恢复通过 SSH 隧道连接的 OpenClaw 节点。用于解决配对必需错误、隧道冲突、远程端点错误以及 SSH 目标配置错误等问题。
- 换
host/port测多个局域网代理(比如192.168.1.100:3128vs192.168.1.101:8000) - 把
https.Agent换成http.Agent,再测 HTTP 代理延迟(有些代理对协议处理差异很大) - 加
rejectUnauthorized: false绕过自签名证书报错(内网代理常用)
注意:不要用 fetch 或 axios——它们默认忽略手动传入的 agent,除非你显式配置适配器。
为什么 Date.now() 比 process.hrtime() 更适合这里
测代理延迟不需要纳秒级精度,Date.now() 足够且更稳定。而 process.hrtime() 在跨进程(比如 VSCode 的 Node 子进程)中可能受调度抖动影响,反而让结果波动更大。实测中,对同一代理连续测 5 次,Date.now() 的标准差通常比 hrtime() 低 3–8ms。
真正容易被忽略的是:必须等 res.statusCode 返回才算完成。只监听 connect 事件会把 TCP 握手时间当成全部延迟,漏掉 TLS 握手和 HTTP 头解析——而这部分在代理链路上往往占大头。










