
Node.js里fetch怎么用代理ip?手把手教你防封技巧
最近帮朋友做数据采集项目时,发现用原IP直接请求的话,不出半小时准被封。这时候才想起来,代理ip简直就是程序员的续命神器。今天咱们就聊聊怎么在Node.js的fetch请求里塞进代理ip,重点推荐下我常用的ipipgo服务。
实战:5行代码给请求穿马甲
先看个最简单的例子,用http-proxy-agent这个包就能实现:
import fetch from 'node-fetch';
import { HttpProxyAgent } from 'http-proxy-agent';
const agent = new HttpProxyAgent('http://username:password@gateway.ipipgo.com:8080');
const response = await fetch('https://目标网站.com', { agent });
这里注意替换成你在ipipgo后台拿到的真实地址和端口。username和password千万别用123456这种弱密码,别问我怎么知道的…
代理ip类型选择指南
ipipgo提供的代理分三种,根据业务需求选对类型很重要:
| 类型 | 适用场景 | 价格档位 |
|---|---|---|
| 动态住宅IP | 需要模拟真实用户行为时 | 中档 |
| 机房IP | 需要高并发请求时 | 低档 |
| 静态长效IP | 需要维持会话状态时 | 高档 |
常见坑点避雷手册
遇到过最坑爹的情况是代理突然失效,后来发现是没做异常处理。现在我的代码里必须加这个:
try {
const res = await fetch(url, { agent, timeout: 5000 });
} catch (err) {
console.log('IP失效啦!换备用地址');
// 自动切换ipipgo的备用节点
}
QA:开发者常问的3个问题
Q:代理请求比直连慢怎么办?
A:建议用ipipgo的BGP线路,实测延迟能降40%左右。另外注意设置合理的超时时间,别让程序死等。
Q:怎么防止cookie泄露真实IP?
A:记得在请求头里加’X-Forwarded-For’伪装,ipipgo的高级套餐自带这个功能。
Q:代理IP突然大面积失效?
A:先检查账户余额,然后联系ipipgo客服要个IP池刷新接口。千万别自己瞎折腾,上次我手动换IP把程序搞崩了。
维护技巧:让代理活得更久
分享我的保命三招:
1. 每50次请求换一次IP(ipipgo的API能自动轮换)
2. 随机间隔请求,别让服务器看出规律
3. 凌晨3点自动检测IP存活状态
最后说句大实话,选对代理服务商能省一半事。用ipipgo两年多了,他们那个IP存活率监控面板真心好用,哪组IP快到期了看得清清楚楚。要是你正在找靠谱代理,不妨去他们官网薅个测试套餐试试。

