周一至周五 09:00 - 18:00(UTC+08:00) 
©2026 NST LABS TECH LTD. 保留所有权利。 Axios代理设置:2026年5种经过测试的Node.js方法Marcus ChenProduct & Network Architect
如何使用 Axios 和代理:2026 完整指南
TL;DR
- Axios代理配置是Node.js的功能。 浏览器端Axios无法选择出站代理,因为浏览器拥有网络栈。
- Axios 1.19.0接受一个包含
protocol、host、port和可选的auth的proxy对象。 设置超时并验证返回的内容,而不仅仅是状态。
- 常规的
HTTP_PROXY、HTTPS_PROXY和NO_PROXY环境变量在Node.js中有效。 当自定义代理必须是唯一的路由机制时,设置proxy: false。
- 轮询客户端使代理选择可观察。 在增加流量之前,增加端点健康检查、冷却时间和有限的重试预算。
- 使用代理来处理Axios内置HTTP代理路径以外的协议或隧道策略。 将
HttpProxyAgent、HttpsProxyAgent或SocksProxyAgent与实际端点匹配。
什么是Axios代理?
Axios代理是为Axios的Node.js适配器配置的中介,以便请求通过指定的网络端点进行传输。官方Axios请求配置定义了一个仅适用于Node.js的proxy选项,包含代理协议、主机名、端口和可选的基本认证凭据。
Axios仍然负责请求配置、Promise、响应解析、超时、重定向行为和错误。代理改变Node.js进程与目标之间的路线。标准端点,如Nstproxy Residential Prime Proxies,可以通过正常的Axios代理对象链接,而无需特定于提供商的JavaScript包。
浏览器边界很重要。在网页中运行的Axios使用浏览器适配器,JavaScript无法选择系统或每个请求的出站代理。相反,配置浏览器、操作系统、扩展、测试运行程序或反向代理。React开发服务器中的proxy字段也是一个构建工具特性,而不是此处描述的Axios Node.js请求设置。
使用Axios代理进行授权API检查、本地化QA、价格监控、公共数据工作流和受控服务器出口。代理并不授予目标权限,也不保证成功响应包含预期数据。
Axios代理路由在Node.js中的工作原理
Axios代理路由有三个控制点:显式的对象、常规环境变量或自定义代理。每个请求选择一种主导机制,以便路由保持可测试。
proxy
| 机制 | 最佳适配 | 重要边界 |
|---|
proxy: { protocol, host, port } | 标准HTTP或HTTPS代理配置 | 仅限Node.js适配器 |
HTTP_PROXY / HTTPS_PROXY | 部署管理的路由 | NO_PROXY可以绕过选定的主机 |
httpAgent / httpsAgent | 自定义隧道、连接策略或SOCKS | 设置proxy: false以避免双重处理 |
Axios的当前文档指出,HTTP网关可以为HTTPS目标建立CONNECT隧道,并且代理凭据在代理交换中发送。保持源TLS验证启用。如果合法的检查路由使用私有CA,请安装批准的CA,而不是禁用证书检查。
官方Axios版本在测试时列出了v1.19.0作为最新版本。本文指定该版本,因为最近的版本改变了代理、重定向、错误编辑和Node.js适配器行为。
前提条件
示例在Node.js 22.23.2、Axios 1.19.0和http-proxy-agent 7.0.2下运行。创建一个ESM项目并安装测试过的包:
npm init -y
npm install axios@1.19.0 http-proxy-agent@7.0.2
在package.json中添加"type": "module",然后通过受保护的环境变量提供授权的TARGET_URL和代理配置。切勿提交代理密码或记录完整的端点。
根据您的应用程序设置有限的超时和响应大小限制。当前的请求配置文档警告,最大响应和主体大小默认没有上限,因此调用不受信任服务器的服务应设置明确的限制。
通过 Nstproxy 路由 Axios 请求
创建一个经过身份验证的端点,将其附加到 Axios,并验证每个接受的响应。
创建一个 Axios 代理路由
|
|
详细教程:如何使用 Axios 与代理
您可以通过五种经过测试的 Node.js 方法使用 Axios 与代理:原生代理对象、代理身份验证、环境变量、可重用的轮换池或自定义代理。以下每个示例都针对一个专门构建的本地端点进行了检测,该端点返回其非秘密路由 ID 和目标 URL。
方法 1:在 Axios 实例上配置一个代理
当多个调用共享一个代理、超时和响应策略时,请使用 axios.create()。一个实例将路由配置与无关的 Axios 调用分开。
import axios from "axios";
const client = axios.create({
proxy: {
protocol: "http",
host: process.env.PROXY_HOST,
port: Number(process.env.PROXY_PORT),
},
timeout: 10_000,
});
const response = await client.get(process.env.TARGET_URL);
if (response.data.route !== "basic-18580") {
throw new Error(`意外的路由: ${JSON.stringify(response.data)}`);
}
console.log(response.data);
执行的响应包含 route: basic-18580 和绝对目标 http://fixture.test/items。在生产中,用经过授权的 IP 反射响应或提供者会话标识符替换固定标记。
始终将端口转换为数字,并明确定义协议。作为 host 复制的字符串不得包含 http://;协议、主机和端口是单独的字段。Nstproxy 的 Node.js 代理指南 涉及超出 Axios 的相同路由层。
方法 2:使用经过身份验证的 Axios 代理
当 HTTP 代理需要基本身份验证时,请使用 proxy.auth。将用户名和密码作为单独字段传递,避免手动构建包含凭据的 URL。
import axios from "axios";
const response = await axios.get(process.env.TARGET_URL, {
proxy: {
protocol: "http",
host: process.env.PROXY_HOST,
port: Number(process.env.PROXY_PORT),
auth: {
username: process.env.PROXY_USERNAME,
password: process.env.PROXY_PASSWORD,
},
},
timeout: 10_000,
});
if (response.data.route !== "auth-18581" || !response.data.authenticated) {
throw new Error(`代理身份验证失败: ${JSON.stringify(response.data)}`);
}
console.log({ route: response.data.route, authenticated: response.data.authenticated });
本地代理首先要求进行 407 挑战,然后接受一个包含空格的用户名和一个包含 @ 和 : 的密码。Axios 返回了 { route: 'auth-18581', authenticated: true }。
Axios的proxy.auth设置会覆盖手动提供的Proxy-Authorization头信息。请保持代理凭证与目标服务器凭证的区分:请求中的auth或Authorization头用于对目标进行身份验证,而proxy.auth用于对中介进行身份验证。
方法3:使用HTTP_PROXY和HTTPS_PROXY
当运行时平台负责出站路由时,使用环境代理变量。Axios在Node.js中解析常规代理变量,而NO_PROXY提供应直接访问的主机。
export HTTP_PROXY="http://proxy.example:9000"
export HTTPS_PROXY="http://proxy.example:9000"
export NO_PROXY="localhost,127.0.0.1"
node app.mjs
import axios from "axios";
const response = await axios.get(process.env.TARGET_URL, { timeout: 10_000 });
if (response.data.route !== "basic-18580") {
throw new Error(`意外的路由: ${JSON.stringify(response.data)}`);
}
console.log(response.data.route);
基于环境的运行在没有显式代理对象的情况下打印了basic-18580。当机器之间的行为不同时,请检查大小写变量、NO_PROXY、容器设置和服务管理器配置。
在请求或实例上设置proxy: false以让Axios忽略代理环境变量。当自定义代理已经执行代理路由时,这一点至关重要。
方法4:轮换有限的Axios客户端池
使用预配置的Axios实例进行确定性的应用侧轮换。轮询选择确保每个可用的端点以已知顺序接收工作。
import axios from "axios";
const proxyConfigs = [
{ protocol: "http", host: "127.0.0.1", port: 18580 },
{ protocol: "http", host: "127.0.0.1", port: 18582 },
];
const clients = proxyConfigs.map((proxy) => axios.create({ proxy, timeout: 10_000 }));
const routes = [];
for (let index = 0; index < 4; index += 1) {
const response = await clients[index % clients.length].get(process.env.TARGET_URL);
if (typeof response.data.route !== "string") {
throw new Error("响应不包含路由标识");
}
routes.push(response.data.route);
}
console.log(routes);
输出交替显示basic-18580、rotate-18582、basic-18580和rotate-18582。随机选择可能会重复选择相同的端点;确定性选择更容易观察和测试。 网络爬虫IP轮换指南 解释了路由变化如何影响独立的采集工作。
生产轮换需要的不仅是选择。跟踪连续失败,施加冷却,限制并发,仅重试瞬态错误。除非操作是幂等的或携带幂等性密钥,否则不要自动重放状态更改请求。将cookies和粘性路由放在一起以支持有状态会话。
方法5:通过自定义代理路由Axios
当端点协议或隧道策略超出Axios的本机代理路径时,使用自定义代理。禁用Axios代理解析,以便代理是路由的单一来源。
import axios from "axios";
import { HttpProxyAgent } from "http-proxy-agent";
const agent = new HttpProxyAgent(process.env.PROXY_URL);
const response = await axios.get(process.env.TARGET_URL, {
httpAgent: agent,
proxy: false,
timeout: 10_000,
});
if (response.data.route !== "basic-18580") {
throw new Error(`意外的路由: ${JSON.stringify(response.data)}`);
}
console.log(response.data.route);
基于代理的运行打印了basic-18580。 http-proxy-agent包 旨在用于HTTP代理连接。对于HTTPS隧道或SOCKS端点,请使用相应的维护代理并将其分配到正确的httpAgent或httpsAgent字段。在代理URL中嵌入凭证时,请进行编码。
如何验证Axios代理路由
通过分别检查网络出口、响应合同和接收数据来验证Axios代理路由。从一个授权的IP反射或受控的诊断端点开始。确认其路由标识,然后调用真实目标并要求预期的内容类型、状态和稳定的语义字段。
Axios通常会拒绝超出其接受状态范围的响应,但状态200仍可能包含错误页面、登录屏幕、备用区域或意外的JSON架构。 官方Axios错误处理指南 区分带有响应的错误、没有响应的错误和设置失败。仅记录非机密的错误代码、路由ID和时间。
设置 AbortSignal 或超时,限制响应大小,并约束重定向。仅在意图明确的地方保留目标服务器的敏感头信息;最近的 Axios 版本包括重定向和序列化的强化,但应用程序在 URL 来自外部输入时仍需要一个 whitelist 的目标策略。
为 Axios 选择 Nstproxy 路由
Nstproxy Residential Prime Proxies 为需要住宅路由、位置选择和当前产品表面上的旋转或粘性会话的 Node.js 工作流提供标准认证的端点。Axios 可以通过其本地代理对象或兼容的代理连接,这使得业务逻辑独立于供应商特定的 SDK。包和按使用付费的计费模型让团队在测量流量和接受响应后选择操作模式。该产品适合授权的本地化、价格监测、广告验证和公共数据工作;在增加并发之前,请测试目标、协议和会话策略。
- 本地 Axios 设置: 将生成的端点映射到
protocol、host、port 和 proxy.auth。
- 会话感知路由: 对于独立调用使用轮换,或者使用依赖 cookie 的工作保持一个粘性路由。
- 经过测量的操作模型: 使用每个接受结果的成本比较当前的 Residential Prime 套餐和按使用付费选项。
常见的 Axios 代理错误及修复办法
| 症状 | 可能原因 | 实际修复 |
|---|
ECONNREFUSED | 错误的主机/端口或代理离线 | 确认可达性和协议;使用限制超时。 |
407 Proxy Authentication Required | 缺少或无效的代理凭证 | 验证 proxy.auth 字段和帐户策略;不要无限期重试无效凭证。 |
| 代理在 HTTP 工作但 HTTPS 失败 | CONNECT 或 TLS 信任问题 | 确认隧道支持和预期的 CA;绝不要禁用 TLS 验证作为永久修复。 |
| 直接 IP 出现 | 匹配到 NO_PROXY 或正在使用浏览器端 Axios | 检查环境旁路规则;在 Axios 外部配置浏览器路由。 |
| 自定义代理被忽略或重复 | Axios 代理解析仍处于活动状态 | 设置 proxy: false 并将代理附加到正确字段。 |
SOCKS 端点在 proxy 中失败 | 内置选项期望一个 HTTP 兼容的代理 | 使用维护的 SOCKS 代理和编码的 SOCKS URL。 |
| 状态 200 但数据无效 | 软错误或替代响应 | 验证内容类型、路由标记和特定域的架构。 |
结论
一个可靠的 Axios 代理配置从 Node.js 边界和一个明确的路由机制开始。对于标准 HTTP 网关使用本地代理对象,使用 proxy.auth 进行凭证管理,使用环境变量管理部署的路由,并在代理拥有传输行为时使用 proxy: false 结合自定义代理。
从一个授权目标开始,并验证路由和响应契约。仅在超时、语义验证和故障分类工作正常后才添加有限的客户端池;如果池、健康和路由策略超出了应用程序代码,请考虑稍后使用 Nstproxy Proxy Manager。
体验 Nstproxy — 今天开始您的免费试用
常见问题解答
不。Axios 的 proxy 选项仅限于 Node.js;浏览器 JavaScript 无法选择浏览器的出站代理。请改为配置浏览器、系统、扩展、开发服务器或上游网关。
在 Axios 的 proxy 对象中添加 auth: { username, password }。将这些值保存在受保护的运行时配置中,并将它们与目标服务器的授权区分开。
问:Axios 是否支持 HTTP_PROXY 和 HTTPS_PROXY?
是的。Axios 在 Node.js 中支持常规的代理环境变量,而 NO_PROXY 则跳过匹配的主机。当请求必须忽略它们时,使用 proxy: false。
问:Axios 可以使用 SOCKS5 代理吗?
Axios需要一个与SOCKS兼容的Agent,而不是其内置的HTTP代理对象。设置适当的Agent字段和proxy: false,以便Axios不应用第二条路线。
创建一个固定的配置Axios实例集合,并使用诸如轮询或基于健康的选择等可观察政策来选择它们。添加冷却时间和有限的重试预算,而不是通过每个端点重试每一次失败。
问:为什么Axios代理会返回状态200但内容错误?
代理或目标可以返回状态200的软错误页面。在接受响应之前,要求预期的内容类型、路由证据和特定域字段。
Marcus Chen
Aug. 20th 2026
立即访问住宅、数据中心、IPv6 与 ISP 高质量代理池。