国外IP代理推荐:
IPIPGO|全球住宅代理IP(>>>点击注册免费测试<<<)
国内IP代理推荐:
天启|全国240+城市代理IP(>>>点击注册免费测试<<<)
手把手教你用Node.js原生fetch挂代理
最近发现不少老铁在用Node.js写爬虫时,总卡在代理IP配置这个环节。今天咱们就唠唠怎么用原生fetch搭配ipipgo的代理ip服务,整点实战代码给你们参考。

为什么非得用代理IP?
举个栗子,你让自家宽带连着某网站疯狂请求,分分钟就被识别成机器人。这时候代理IP就像个中间人,帮你把真实IP藏得严严实实。像ipipgo这种有9000万+住宅IP的服务商,每次请求都能换不同地区的真实家庭网络地址,比那些机房IP靠谱多了。
配置代理的两种野路子
先说个冷知识:Node.js原生的fetch其实底层用的是undici库。要挂代理的话,重点在创建自定义的HTTPAgent。这里推荐两种方法:
方法一:http-proxy-agent直接怼
import fetch from 'node-fetch';
import { HttpProxyAgent } from 'http-proxy-agent';
const agent = new HttpProxyAgent('http://username:password@proxy.ipipgo.com:8080');
方法二:undici自带的Agent更丝滑
import { fetch, Agent } from 'undici';
const agent = new Agent({
connect: {
proxy: 'http://proxy.ipipgo.com:3128',
protocol: 'http'
}
});
实战代码片段
假设要用ipipgo的动态住宅IP,记得把账号密码换成自己的认证信息。这里给个带重试机制的完整示例:
async function fetchWithProxy(url, retries = 3) {
const controller = new AbortController();
setTimeout(() => controller.abort(), 10000);
try {
return await fetch(url, {
agent: new HttpProxyAgent('http://user123:pass456@dynamic.ipipgo.net:8888'),
signal: controller.signal
});
} catch (e) {
if(retries > 0) {
console.log('换个IP重试...');
return fetchWithProxy(url, retries - 1);
}
throw new Error('三次都挂了,检查代理配置吧');
}
}
常见翻车现场QA
Q:证书报错咋整?
A:试试在agent配置里加rejectUnauthorized: false,但生产环境慎用
Q:代理响应太慢怎么办?
A:建议换IPipgo的静态住宅IP,他们家的专线延迟能压到200ms以内
Q:如何验证代理是否生效?
A:可以先用curl -x http://代理地址 https://API.ipipgo.com/ip测试连通性
为什么选ipipgo?
用过七八家代理服务商,最后锁死ipipgo就三点:一是他家支持socks5/http/https全协议,不用改代码就能无缝切换;二是动态IP池够大,实测连续请求100次都没重复IP;三是他们家的住宅IP都是实打实的家庭宽带,不像某些服务商拿机房IP充数。
最后说个骚操作:如果要做分布式采集,可以把ipipgo不同地区的代理IP做成配置数组,随机抽选使用。比如要采集欧洲数据,就专门调用他们法国、德国的住宅IP节点,这样成功率能直接翻倍。
国外IP代理推荐:
IPIPGO|全球住宅代理IP(>>>点击注册免费测试<<<)
国内ip代理推荐:
天启|全国240+城市代理IP(>>>点击注册免费测试<<<)
















发表评论
发表评论: