老有人问我:我明明挂了代理,为啥还是被封?这话听着耳熟,因为我刚开始爬数据的时候也这么问过。代理IP不是万能钥匙,挂上就以为没事,封了在问为什么,纯属白折腾。我后来把被封的原因拆开看,发现翻来覆去就三个:IP不干净、轮换没节奏、行为太机械。今天挨个说说我的排查路子。
先看IP干不干净
被封的第一个嫌疑就是IP本身。免费代理、网上随便扒的IP,多半是很多人共用,今天别人拿它刷过接口,明天你拿它爬数据,网站早就把这段IP记上号了。你访问频率再低,它也秒封你。
所以我现在选节点先看两条:是不是纯净、重复率高不高。那种网上满天飞的免费IP,能不用就不用,省下的钱不够你赔时间的。
再看轮换有没有节奏
第二个原因是单IP怼到底。反爬系统最核心的逻辑就是统计一个IP单位时间内的请求量,你固定一个IP跑一整天,频次早就爆表了,不封你封谁。
我现在的做法是让IP按节奏动起来:可以按请求次数换,比如每发几十个请求换一个;也可以按时间换,比如每几分钟切一次。节点最好还能跨城市、跨网段分散着来,流量一散开,看起来就像全国各地的真实用户各看各的,而不是一个人蹲在角落猛刷。
行为太机械也会暴露
还有一种情况最冤:IP干净、也换得勤,照样被封。这时候问题多半出在行为上。固定间隔发请求、请求头永远那一套、连停顿都没有,这种机器味隔着屏幕都能闻出来,智能反爬一眼就认。
我的土办法是给程序加“人味”:请求间隔设成随机的,有时候等两秒,有时候歇五秒;UA和请求头备几套轮着用;别一口气开几百个线程往死里怼,并发压太高照样触发风控。万一某次失败了,先换个新IP再重试,别让同一个坏节点反复送人头。
上线前筛一遍,跑着也得盯
上面这些调整完,我还会做两道保险。上线之前,先把要用的代理批量检测一遍,延迟高、连通差的直接筛掉,别让高危节点带病上岗;跑起来之后,实时盯着节点状态,谁超时、谁被拦截,立刻换掉,免得一颗老鼠屎坏了一锅汤,把整批IP都拖进黑名单。
代理这块我现在用的是星月代理,IP池覆盖全国300多个城市,节点纯净、重复率低,可用率标的90%以上,支持按自己的节奏做自动轮换,也可以API实时提取,配合白名单用挺省心。新用户能领免费试用IP,建议趁试用期把我这套“筛IP→控节奏→加人味→跑着盯”的流程先调顺,再决定上多大量。
爬虫被封,真不是单换一个IP就能解决的事。IP干净、轮换有节奏、行为像人,这三样凑齐了,封禁概率能降一大截。下次在被封,别急着骂代理,先照这三条自查一遍。
爬虫被秒封,多半是IP不干净、轮换没节奏、行为太机械。先换纯净节点,再让IP按次数或时间自动轮换,请求间隔和UA也得带点人味,上线前筛一遍、跑着实时剔失效,封禁率自然降下来。