打开网易新闻 查看精彩图片

做电商价格监控的开发者最近栽了个跟头。他写了脚本准备爬某网站300个商品页,前20页测试顺利,放心丢去跑通宵。结果一觉醒来,数据停在187条,后面全空——日志里连报错都没有。

真相是网站管理员在他睡着时更新了robots.txt,在/products/*路径加了Disallow。他的脚本只在启动时读一次规则,跑到第188页时,服务器开始返回403。换句话说,前半程合法,后半程突然"犯法"了。

他头铁试了三次补救。第一次无视robots.txt硬爬,15分钟被封IP。第二次加了5秒延迟,慢点死,但还是死。第三次上住宅代理,成了,但花了40美元——这本该是免费数据。「Checking robots.txt every 5 minutes caught changes before getting banned」,他最后给脚本加了5分钟轮询机制,才拦住这种半路变卦。

Shopify店铺常这么干,流量一爆就动态锁robots.txt。亚马逊这种大厂反而懒得动。他的教训是:任何跑超过10分钟的爬虫,都得周期性重读规则。大多数教程跳过这步,因为演示跑太快,根本碰不到现场改规则的操作。

评论区有人补刀:「Still annoying when sites block you halfway through」——确实,但比一觉醒来发现IP进了黑名单强点。