【问题标题】:HTTP Error 403: request disallowed by robots.txt' generated? [duplicate]HTTP 错误 403:robots.txt 不允许的请求生成? [复制]
【发布时间】:2012-08-30 09:22:30
【问题描述】:
可能重复:
Ethics of Robots.txt
我正在尝试使用 Mechanize 来自动化网站上的一些工作。我已经设法通过使用 br.set_handle_robots(False) 绕过上述错误。使用它有多合乎道德?
如果不是,那么我想遵守“robots.txt”,但我试图机械化的网站阻止我查看 robots.txt,这是否意味着不允许机器人访问它?
我的下一步应该是什么?
提前致谢。
【问题讨论】:
标签:
web
html-parsing
web-crawler
robots.txt
mechanize-python
【解决方案1】:
关于您的第一个问题,请参阅Ethics of robots.txt
您需要牢记robots.txt 的用途。爬取网站的机器人可能会对网站造成严重破坏,并从根本上导致 DoS 攻击。因此,如果您的“自动化”完全在爬网,或者每天下载的网页不止几页,并且该站点有一个排除您的 robots.txt 文件,那么您应该尊重它。
就我个人而言,我发现了一个灰色地带。如果我的脚本使用浏览器以与人类相同的速度运行,并且只抓取几个页面,那么本着机器人排除标准的精神,我可以毫无问题地抓取页面,只要它每天访问该网站的次数不超过一次。在评判我之前,请仔细阅读最后一句话。我觉得这完全合乎逻辑。不过,很多人可能不同意我的观点。
对于第二个问题,Web 服务器能够根据随请求发送的 HTTP 标头的 User-Agent 属性返回 403。为了让你的脚本模仿浏览器,你必须错误地表现自己。这意味着,您需要将 HTTP 标头 User-Agent 属性更改为与主流 Web 浏览器(例如 Firefox、IE、Chrome)使用的相同。现在它可能会说“机械化”之类的东西。
有些网站比这更复杂,并且有其他方法来检测非人类访问者。在这种情况下,请放弃,因为他们真的不希望您以这种方式访问该站点。