Node.js 代理接入示例
使用 undici ProxyAgent、环境变量、AbortSignal 超时和安全日志完成代理请求。
只只HTTP技术团队维护更新于 2026年9月20日
Node.js 示例使用调用方项目锁定的 undici 依赖。账密网关固定为 us.zzhttp.com:7878,用户名和密码从受控环境读取。
Node.js
import { ProxyAgent, fetch } from 'undici';
const username = process.env.PROXY_USERNAME;
const password = process.env.PROXY_PASSWORD;
if (!username || !password) throw new Error('代理凭据缺失');
const proxyUrl = new URL('http://us.zzhttp.com:7878');
proxyUrl.username = username;
proxyUrl.password = password;
const dispatcher = new ProxyAgent(proxyUrl.toString());
try {
const response = await fetch('https://ipinfo.io/json', {
dispatcher,
signal: AbortSignal.timeout(30_000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());
} finally {
await dispatcher.close();
}
配置
- 从受控环境变量读取完整代理用户名和子账号密码,不要把拼出的代理 URL 输出到控制台。
请求
- 将
ProxyAgent作为 fetch dispatcher。 - 使用
AbortSignal.timeout设置整体截止时间。
资源释放
- 示例结束后关闭 agent。
- 生产连接池按代理身份复用并在配置变更时淘汰。
错误处理
- 区分超时、代理认证和目标状态。
- 日志只记录任务 ID 与状态。
这篇内容解决了你的问题吗?
反馈只用于改进公开文档,不会提交账号或请求信息。