手把手教你用Node.js的fetch配代理
咱们搞爬虫的兄弟都懂,用原生fetch直连目标网站,分分钟就被封IP。这时候就得请出代理IP这个救兵了。今天不讲那些虚头巴脑的理论,直接上硬菜,教你怎么用Node.js最新版自带的fetch配代理。
为啥要用代理IP?
举个栗子,你家快递员天天穿同一件衣服去送货,门卫是不是很快就记住他了?代理IP就像给快递员准备的各种马甲,每次换着穿,门卫就认不出来了。用ipipgo家的动态IP池,相当于有几百个快递员随时待命,采集数据稳得一批。
配置代理三步走
import fetch from 'node-fetch';
import { HttpProxyAgent } from 'http-proxy-agent';
// 这里换成你自己的ipipgo代理通道
const proxyUrl = 'http://username:password@gateway.ipipgo.com:9021';
const response = await fetch('https://目标网站.com', {
agent: new HttpProxyAgent(proxyUrl)
});
注意三个重点:
1. 代理地址格式要对,像用户名密码别写反了
2. http和https协议要分清楚
3. 端口号千万别照抄,得看服务商给的是啥
实战避坑指南
遇到证书问题可以加个配置项:
const response = await fetch(url, {
agent: new HttpProxyAgent(proxyUrl),
rejectUnauthorized: false // 跳过证书验证
});
但这样不安全,建议在ipipgo控制台下载他们的CA证书,配到系统里才靠谱。
代理参数对照表
参数 | 示例值 | 说人话 |
---|---|---|
协议 | http/https | 看你买的代理类型 |
端口 | 9021/3128 | 每家都不一样 |
认证方式 | user:pass@ip | 别漏了@符号 |
常见问题QA
Q:代理连不上咋整?
A:先检查三件套:地址、端口、密码。用ipipgo的在线检测工具测下通道状态。
Q:请求突然变慢?
A:可能是当前IP被限速了,在代码里加个自动切换IP的逻辑,或者用他们家提供的智能轮换API。
Q:出现ECONNRESET错误?
A:八成是代理不稳定,换个高匿名的套餐。建议试试ipipgo企业版的独享线路,稳如老狗。
说点掏心窝的
代理用得好,下班回家早。关键得选对服务商,像ipipgo这种能实时查看剩余流量的,用着心里才踏实。他们的技术支持回复速度也快,上次半夜两点提工单,十分钟就给解决了。
最后提醒新手朋友,测试阶段先买个按量付费的套餐,别上来就充年费。代码里记得做好错误重试,别让一个IP挂了就影响整个程序。有啥不明白的,直接去他们官网找在线客服,报我名字…算了,报我名字也没折扣(笑)。