跳到正文
本中心目录
代码示例

Node.js 代理接入示例

使用 undici ProxyAgent、环境变量、AbortSignal 超时和安全日志完成代理请求。

只只HTTP技术团队维护更新于 2026年9月20日

Node.js 示例使用调用方项目锁定的 undici 依赖。账密网关固定为 us.zzhttp.com:7878,用户名和密码从受控环境读取。

Node.js

JavaScript
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 与状态。

这篇内容解决了你的问题吗?

反馈只用于改进公开文档,不会提交账号或请求信息。