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

如何使用代理并忽略特定请求的SSL证书错误(Node.js+Axios场景)

解决方案:针对单个Axios客户端忽略过期证书(带代理)

你的问题核心是自定义HttpsProxyAgent时,需要把证书验证配置加到代理实例里,而非Axios的全局配置——因为指定httpsAgent后,Axios会使用代理的TLS配置,不会读取自身的rejectUnauthorized参数。

Axios 正确实现代码

修改HttpsProxyAgent的构造参数,添加rejectUnauthorized: false:

const agent = new HttpsProxyAgent({ 
  host, 
  port, 
  auth: `${uname}:${pass}`,
  rejectUnauthorized: false // 关键:让代理实例跳过证书验证
});

this.client = axios.create({
    baseURL: this.baseUrl,
    headers: this.headers,
    httpsAgent: agent,
});

关于NODE_TLS_REJECT_UNAUTHORIZED=0的风险

这个环境变量是全局生效的,会让整个Node进程跳过所有TLS证书验证,包括你的服务中其他请求、依赖安装等操作,存在严重的中间人攻击(MITM)风险:攻击者可以伪造任意证书拦截你的请求,窃取敏感数据(如请求头中的认证信息、请求体内容)。它不会直接导致信息泄露,但会移除阻止泄露的关键防护。

其他HTTP客户端的替代方案

1. node-fetch

通过配置带证书忽略的代理实例实现:

const { HttpsProxyAgent } = require('https-proxy-agent');
const fetch = require('node-fetch');

const agent = new HttpsProxyAgent({ 
  host, 
  port, 
  auth: `${uname}:${pass}`,
  rejectUnauthorized: false 
});

fetch(`${this.baseUrl}/your-endpoint`, {
  method: 'GET',
  headers: this.headers,
  agent: agent
})
.then(res => res.json())
.catch(err => console.error(err));

2. got

支持更简洁的代理和证书配置:

const got = require('got');

// 方式1:使用代理实例
const { HttpsProxyAgent } = require('https-proxy-agent');
const agent = new HttpsProxyAgent({ 
  host, 
  port, 
  auth: `${uname}:${pass}`,
  rejectUnauthorized: false 
});

got(`${this.baseUrl}/your-endpoint`, {
  headers: this.headers,
  agent: { https: agent }
})
.then(res => console.log(JSON.parse(res.body)))
.catch(err => console.error(err));

// 方式2:直接配置代理URL(更简洁)
got(`${this.baseUrl}/your-endpoint`, {
  headers: this.headers,
  proxy: `http://${uname}:${pass}@${host}:${port}`,
  https: { rejectUnauthorized: false }
})
.then(res => console.log(JSON.parse(res.body)))
.catch(err => console.error(err));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:45:42