Facebook 刚刚实施了一些网络爬虫吗?在过去的几天里,我的网站崩溃了好几次,IP 严重超载,我可以追溯到 Facebook。
我尝试过谷歌搜索,但找不到任何关于通过 robots.txt 控制 Facebook 爬虫机器人的明确资源。有一个关于添加以下内容的参考:
用户代理:facebookexternalhit/1.1 爬行延迟:5
用户代理:facebookexternalhit/1.0 爬行延迟:5
用户代理:facebookexternalhit/* 爬行延迟:5
但我找不到任何关于 Facebook 机器人是否尊重 robots.txt 的具体参考资料。根据较早的消息来源,Facebook“不会抓取您的网站”。但这绝对是错误的,因为我的服务器日志显示他们以每秒许多页面的速度从 69.171.237.0/24 和 69.171.229.115/24 范围内的十几个 IP 爬行我的网站。
我找不到任何这方面的文献。我怀疑这是 FB 在过去几天刚刚实施的新功能,因为我的服务器以前从未崩溃过。
有人可以建议吗?
正如在 facebook 和 Crawl-delay 上的类似问题中所讨论的那样,facebook 并不认为自己是机器人,甚至不请求您的 robots.txt,更不用说关注它的内容了。
您可以实现自己的速率限制代码,如类似问题链接所示。这个想法是当您的服务器超出容量或被特定用户代理淹没时,简单地返回 http 代码 503。
那些为大型科技公司工作的人似乎不明白“改进缓存”是小公司没有预算来处理的事情。我们专注于为实际付款的客户提供服务,没有时间抵御来自“友好”公司的狂暴网络机器人。
这些请求似乎不尊重 robots.txt,因此我们被迫考虑不同的解决方案。最后,我们设置 nginx 将所有带有 facebook useragent 的请求转发到一对专用的后端服务器。如果我们使用 nginx > v0.9.6,我们可以为此做一个很好的正则表达式,但我们没有,所以我们使用了沿着
的映射
map $http_user_agent $fb_backend_http {
"facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)"
127.0.0.1:80;
}
这对我们来说效果很好;在我们遭受重创的几周内,这种请求划分使繁重的流量远离系统的其他部分。
现在对我们来说似乎已经基本上消失了 - 我们只是看到间歇性的峰值。
至于为什么会发生这种情况,我仍然不确定 - 4月份似乎发生过类似的事件,归因于一个错误
http://developers.facebook.com/bugs/409818929057013/ 但我最近不知道有什么类似的事情。
我在
https://botspy24.com/应用程序的帮助下设法阻止了这种现象,我首先观察并禁止了导致过载的代理..