国外IP代理推荐:
IPIPGO|全球住宅代理IP(>>>点击注册免费测试<<<)
国内IP代理推荐:
天启|全国240+城市代理IP(>>>点击注册免费测试<<<)
Node.js fetch模块的代理配置入门
搞过爬虫的老铁都知道,用Node.js的fetch发请求时最头疼的就是IP被封。这时候就需要给请求套个"马甲"——也就是代理IP。在代码里配置代理其实不难,重点是要选对服务商。像ipipgo这种支持全协议的代理服务,可以直接用HTTP-proxy-agent模块配合fetch使用:

import fetch from 'node-fetch';
import { HttpProxyAgent } from 'http-proxy-agent';
const agent = new HttpProxyAgent('http://用户名:密码@gateway.ipipgo.com:8080');
const response = await fetch('https://目标网站.com', { agent });
这里要注意用户名密码别写死在代码里,建议用环境变量管理。ipipgo的代理网关支持socks5/http/https多种协议,特别是他们的住宅IP资源池,能有效降低被识破概率。
实战中的IP轮换策略
单靠一个IP持续请求迟早要跪,这时候就得玩点花活。用ipipgo的API动态获取IP池,配合fetch的请求控制实现自动切换:
| 策略类型 | 适用场景 |
|---|---|
| 按请求次数切换 | 高频采集场景 |
| 按响应时间切换 | 需要稳定性的业务 |
| 异常触发切换 | 反爬严苛的网站 |
实战代码可以这么写:
let currentProxy = await ipipgo.getNewIP(); // 调用ipipgo的API获取新IP
async function smartFetch(url) {
try {
const res = await fetch(url, {
agent: new HttpProxyAgent(currentProxy),
timeout: 5000
});
return res;
} catch(e) {
currentProxy = await ipipgo.getNewIP(); // 触发IP更换
return smartFetch(url); // 自动重试
}
}
请求指纹伪装技巧
光换IP还不够,得把请求伪装得像真人操作。这里教大家几个防检测的骚操作:
// 随机生成浏览器指纹
const headers = {
'User-Agent': getRandomUserAgent(),
'Accept-Language': 'zh-CN,zh;q=0.9',
'Sec-Ch-Ua': `"Not/A)Brand";v="99", "Google Chrome";v="115"`
};
// 配合ipipgo的住宅IP使用
const response = await fetch(url, {
agent: proxyAgent,
headers,
referrerPolicy: 'strict-origin-when-cross-origin'
});
这里有个坑要注意:别用公共代理池,很多免费代理的IP已经被标记为数据中心IP。ipipgo的9000万+住宅IP都是真实家庭宽带,配合合理的请求间隔,能极大降低被识破风险。
常见问题QA
Q:用代理后请求变慢怎么办?
A:选离目标服务器近的节点,比如爬日本网站就用ipipgo的东京机房。同时检查代理协议是否匹配,https请求别用HTTP代理
Q:POST请求总是失败?
A:检查fetch的body格式设置,表单数据要用URLSearchParams转换。同时确认代理是否支持大文件传输,ipipgo的代理支持全类型数据传输
Q:如何测试代理是否生效?
A:可以先请求http://ip.ipipgo.com/checkip,看看返回的IP是否变化。ipipgo的检测接口会返回详细的代理类型和地理位置
国外IP代理推荐:
IPIPGO|全球住宅代理IP(>>>点击注册免费测试<<<)
国内ip代理推荐:
天启|全国240+城市代理IP(>>>点击注册免费测试<<<)
















发表评论
发表评论: