You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在npm的request包中正确配置并使用代理?

如何在npm request包中正确配置代理

嘿,我来帮你解决这个代理不生效的问题!你遇到的情况很常见,主要是request包的代理配置有几个容易踩的小坑,咱们一步步来搞定它。

首先给你一个能直接运行的正确示例代码,之后再拆解关键点:

const request = require('request');

// 替换成你的实际代理地址,带认证的话格式是 http://用户名:密码@代理地址:端口
const proxyOptions = {
  proxy: 'http://your-proxy-host:your-proxy-port',
  // 如果代理证书有问题(仅测试环境用,生产环境不建议开启),可以添加这个字段
  // rejectUnauthorized: false
};

request.get('https://v4.ident.me/', proxyOptions, (err, res, body) => {
  if (err) {
    console.error('请求失败:', err);
    return;
  }
  console.log('当前对外IP:', body);
});

接下来说说你之前可能踩的坑:

  • 代理地址格式错误:哪怕你请求的是HTTPS接口,代理地址也必须以http://开头——因为request处理HTTPS代理时,是通过HTTP代理建立隧道连接的,很少有代理本身是https://类型的,别写错前缀。
  • 代理认证没正确编码:如果你的代理需要用户名密码,比如http://user:pass@proxy:port,要是密码里包含@、&这类特殊字符,一定要用encodeURIComponent()对用户名和密码分别编码,不然会导致代理地址解析失败,请求还是走本地网络。
  • 环境变量干扰:如果你的系统里设置了HTTP_PROXY或HTTPS_PROXY环境变量,request会默认优先使用这些值。如果这些环境变量里的代理不是你想要的,就会导致请求走了错误的代理,所以直接在options里指定proxy字段是最稳妥的,它的优先级最高。

另外提一句:request包已经被官方标记为废弃(deprecated)了,虽然目前还能正常使用,但如果是新项目的话,更推荐用axios、node-fetch这些维护活跃的库哦。不过既然你现在在用request,上面的配置肯定能解决你的问题。

内容的提问来源于stack exchange,提问作者Azevedo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:10:04