正向代理会为爬虫强制执行 robots.txt 吗?
把 robots 策略留在爬虫里,并理解在转发代理上执行它的局限。
给爬虫配置一个 HTTP 代理,改变的是它的请求如何到达网站。这并不会让代理去抓取 robots.txt、替爬虫选择规则组,也不会让请求变得有礼有节。
Robots Exclusion Protocol 描述了面向爬虫的规则,涵盖匹配、抓取失败、重定向与缓存行为。仅仅转发所请求文档的代理,并没有替爬虫实现这套策略。
把规则判断放在爬虫的请求队列附近。在任务发出之前,预期身份、目标 URI 和调度状态都聚集在这里。
为什么在代理侧做过滤比听起来更难
对明文 HTTP 而言,专门构建的过滤器或许能看到目标路径和 User-Agent。但它仍然需要真正实现规则,并就所适用 robots 文件的抓取、缓存与更新给出明确策略。把几行 Disallow 变成静态地址封锁,并不是完整的协议。
对经由普通 CONNECT 的 HTTPS,正向代理看到的是隧道终点,而不是每个加密页面的路径和内部的 User-Agent。除非另有刻意安排提供这些信息,它缺少按路径做 robots 判断所需的依据。
更换出口地址也不会把被禁止的路径变成被允许的路径。要在共享爬虫活动的多个工作进程之间协调节奏;轮换线路不能替代那套策略。
最后,robots 规则不是访问授权。被允许的路径并不豁免身份验证或站点其他访问要求,而公开的 robots 文件也不能保护私密内容。