如何在 Node.js Axios 中使用代理:完整指南
在 Node.js 中为 Axios 配置 GProxy 代理以发送 HTTP 请求。涵盖代理配置、HTTPS 支持、轮换模式和错误处理。
准备事项
- ✓[
- ✓"
- ✓已
- ✓安
- ✓装
- ✓
- ✓N
- ✓o
- ✓d
- ✓e
- ✓.
- ✓j
- ✓s
- ✓
- ✓1
- ✓6
- ✓+
- ✓"
- ✓,
- ✓
- ✓"
- ✓已
- ✓安
- ✓装
- ✓
- ✓A
- ✓x
- ✓i
- ✓o
- ✓s
- ✓(
- ✓n
- ✓p
- ✓m
- ✓
- ✓i
- ✓n
- ✓s
- ✓t
- ✓a
- ✓l
- ✓l
- ✓
- ✓a
- ✓x
- ✓i
- ✓o
- ✓s
- ✓)
- ✓"
- ✓,
- ✓
- ✓"
- ✓拥
- ✓有
- ✓有
- ✓效
- ✓代
- ✓理
- ✓套
- ✓餐
- ✓的
- ✓
- ✓G
- ✓P
- ✓r
- ✓o
- ✓x
- ✓y
- ✓
- ✓账
- ✓户
- ✓"
- ✓,
- ✓
- ✓"
- ✓基
- ✓本
- ✓的
- ✓
- ✓N
- ✓o
- ✓d
- ✓e
- ✓.
- ✓j
- ✓s
- ✓
- ✓与
- ✓
- ✓a
- ✓s
- ✓y
- ✓n
- ✓c
- ✓/
- ✓a
- ✓w
- ✓a
- ✓i
- ✓t
- ✓
- ✓知
- ✓识
- ✓"
- ✓]
分步设置
[
{
"
T
I
T
L
E
"
:
"
安
装
A
X
I
O
S
"
,
"
D
E
S
C
R
I
P
T
I
O
N
"
:
"
安
装
A
X
I
O
S
及
可
选
的
S
O
C
K
S
5
支
持
"
,
"
C
O
D
E
"
:
"
N
P
M
I
N
S
T
A
L
L
A
X
I
O
S
\
N
#
如
需
S
O
C
K
S
5
支
持
:
\
N
N
P
M
I
N
S
T
A
L
L
S
O
C
K
S
-
P
R
O
X
Y
-
A
G
E
N
T
"
}
,
{
"
T
I
T
L
E
"
:
"
配
置
H
T
T
P
代
理
"
,
"
D
E
S
C
R
I
P
T
I
O
N
"
:
"
将
G
P
R
O
X
Y
代
理
加
入
A
X
I
O
S
请
求
配
置
"
,
"
C
O
D
E
"
:
"
C
O
N
S
T
A
X
I
O
S
=
R
E
Q
U
I
R
E
(
'
A
X
I
O
S
'
)
;
\
N
\
N
C
O
N
S
T
R
E
S
P
O
N
S
E
=
A
W
A
I
T
A
X
I
O
S
.
G
E
T
(
'
H
T
T
P
S
:
/
/
H
T
T
P
B
I
N
.
O
R
G
/
I
P
'
,
{
\
N
P
R
O
X
Y
:
{
\
N
H
O
S
T
:
'
P
R
O
X
Y
.
G
P
R
O
X
Y
.
N
E
T
'
,
\
N
P
O
R
T
:
1
0
0
0
,
\
N
A
U
T
H
:
{
U
S
E
R
N
A
M
E
:
'
Y
O
U
R
_
U
S
E
R
'
,
P
A
S
S
W
O
R
D
:
'
Y
O
U
R
_
P
A
S
S
'
}
\
N
}
\
N
}
)
;
\
N
C
O
N
S
O
L
E
.
L
O
G
(
R
E
S
P
O
N
S
E
.
D
A
T
A
)
;
"
}
,
{
"
T
I
T
L
E
"
:
"
设
置
S
O
C
K
S
5
代
理
"
,
"
D
E
S
C
R
I
P
T
I
O
N
"
:
"
使
用
S
O
C
K
S
-
P
R
O
X
Y
-
A
G
E
N
T
获
得
S
O
C
K
S
5
支
持
"
,
"
C
O
D
E
"
:
"
C
O
N
S
T
{
S
O
C
K
S
P
R
O
X
Y
A
G
E
N
T
}
=
R
E
Q
U
I
R
E
(
'
S
O
C
K
S
-
P
R
O
X
Y
-
A
G
E
N
T
'
)
;
\
N
\
N
C
O
N
S
T
A
G
E
N
T
=
N
E
W
S
O
C
K
S
P
R
O
X
Y
A
G
E
N
T
(
'
S
O
C
K
S
5
:
/
/
U
S
E
R
:
P
A
S
S
@
P
R
O
X
Y
.
G
P
R
O
X
Y
.
N
E
T
:
1
0
0
1
'
)
;
\
N
C
O
N
S
T
R
E
S
P
O
N
S
E
=
A
W
A
I
T
A
X
I
O
S
.
G
E
T
(
'
H
T
T
P
S
:
/
/
H
T
T
P
B
I
N
.
O
R
G
/
I
P
'
,
{
\
N
H
T
T
P
S
A
G
E
N
T
:
A
G
E
N
T
,
H
T
T
P
A
G
E
N
T
:
A
G
E
N
T
\
N
}
)
;
"
}
,
{
"
T
I
T
L
E
"
:
"
创
建
可
复
用
的
客
户
端
"
,
"
D
E
S
C
R
I
P
T
I
O
N
"
:
"
构
建
带
代
理
默
认
值
的
A
X
I
O
S
实
例
"
,
"
C
O
D
E
"
:
"
C
O
N
S
T
C
L
I
E
N
T
=
A
X
I
O
S
.
C
R
E
A
T
E
(
{
\
N
P
R
O
X
Y
:
{
\
N
H
O
S
T
:
'
P
R
O
X
Y
.
G
P
R
O
X
Y
.
N
E
T
'
,
\
N
P
O
R
T
:
1
0
0
0
,
\
N
A
U
T
H
:
{
U
S
E
R
N
A
M
E
:
'
Y
O
U
R
_
U
S
E
R
'
,
P
A
S
S
W
O
R
D
:
'
Y
O
U
R
_
P
A
S
S
'
}
\
N
}
,
\
N
T
I
M
E
O
U
T
:
3
0
0
0
0
\
N
}
)
;
\
N
\
N
C
O
N
S
T
D
A
T
A
=
A
W
A
I
T
C
L
I
E
N
T
.
G
E
T
(
'
H
T
T
P
S
:
/
/
E
X
A
M
P
L
E
.
C
O
M
'
)
;
"
}
,
{
"
T
I
T
L
E
"
:
"
添
加
重
试
拦
截
器
"
,
"
D
E
S
C
R
I
P
T
I
O
N
"
:
"
通
过
自
动
重
试
处
理
代
理
错
误
"
,
"
C
O
D
E
"
:
"
C
L
I
E
N
T
.
I
N
T
E
R
C
E
P
T
O
R
S
.
R
E
S
P
O
N
S
E
.
U
S
E
(
\
N
R
E
S
P
O
N
S
E
=
>
R
E
S
P
O
N
S
E
,
\
N
A
S
Y
N
C
E
R
R
O
R
=
>
{
\
N
I
F
(
E
R
R
O
R
.
R
E
S
P
O
N
S
E
?
.
S
T
A
T
U
S
=
=
=
4
0
7
|
|
E
R
R
O
R
.
C
O
D
E
=
=
=
'
E
C
O
N
N
R
E
S
E
T
'
)
{
\
N
R
E
T
U
R
N
C
L
I
E
N
T
.
R
E
Q
U
E
S
T
(
E
R
R
O
R
.
C
O
N
F
I
G
)
;
/
/
重
试
\
N
}
\
N
T
H
R
O
W
E
R
R
O
R
;
\
N
}
\
N
)
;
"
}
,
{
"
T
I
T
L
E
"
:
"
测
试
配
置
"
,
"
D
E
S
C
R
I
P
T
I
O
N
"
:
"
验
证
代
理
是
否
正
确
路
由
"
,
"
C
O
D
E
"
:
"
C
O
N
S
T
R
E
S
=
A
W
A
I
T
C
L
I
E
N
T
.
G
E
T
(
'
H
T
T
P
S
:
/
/
H
T
T
P
B
I
N
.
O
R
G
/
I
P
'
)
;
\
N
C
O
N
S
O
L
E
.
L
O
G
(
'
P
R
O
X
Y
I
P
:
'
,
R
E
S
.
D
A
T
A
.
O
R
I
G
I
N
)
;
"
}
]
代码示例
为什么要在 Axios 中使用代理?
Axios 是 Node.js 和浏览器中最流行的 HTTP 客户端,npm 每周下载量超过 1 亿次。为 Axios 添加 GProxy 代理,可以实现用于网页抓取的 IP 轮换、从不同地区访问 API 以及匿名处理请求。GProxy 的 10M+ 住宅 IP 和 150+ 国家覆盖可与 Axios 的代理配置无缝集成。
基本代理配置
Axios 通过内置的 proxy 配置项支持 HTTP 代理。直接在请求配置中或作为默认值传入代理主机、端口和认证凭据。通过 HTTP 代理访问 HTTPS 目标时,Axios 会自动处理 CONNECT 隧道。
SOCKS5 代理支持
Axios 本身不支持 SOCKS5,但您可以通过 socks-proxy-agent 包添加支持。创建一个 SOCKS5 agent,并在 Axios 配置中作为 httpsAgent 传入。这与 GProxy 的 SOCKS5 端点兼容。
用于代理逻辑的请求拦截器
Axios 拦截器可用于添加代理轮换逻辑、失败重试和日志记录。添加请求拦截器以动态分配代理,添加响应拦截器以处理代理错误并换用其他 IP 重试。
并发请求
Node.js 的异步特性非常适合并发的代理请求。使用 Promise.all() 或 p-limit 控制并发量。通过 GProxy 的 backconnect 端点发出的每个请求都会获得唯一 IP,因此并发请求天然实现轮换。
错误处理最佳实践
代理相关的错误需要特殊处理:407 表示认证失败,ECONNREFUSED 表示无法连接到代理,ETIMEDOUT 表示代理或目标响应缓慢。设置合理的超时时间,并实现带指数退避的重试逻辑,以保证生产环境的可靠性。
