Facebook刚刚实施了一些网络抓取工具吗?我的网站在过去几天里已经崩溃了几次,严重超载了我追溯到Facebook的IP。
我试过谷歌搜索,但找不到任何关于通过robots.txt控制Facebook的爬虫机器人的权威资源。有关添加以下内容的参考:
User-agent:facebookexternalhit / 1.1 爬网延迟:5
User-agent:facebookexternalhit / 1.0 爬网延迟:5
用户代理:facebookexternalhit / * 爬网延迟:5
但我找不到任何关于Facebook机器人是否尊重robots.txt的具体参考。根据较老的消息来源,Facebook“不会抓取您的网站”。但这肯定是假的,因为我的服务器日志显示他们以每秒许多页面的速率从69.171.237.0/24和69.171.229.115/24范围内的十几个IP中爬行我的网站。
我找不到任何关于此的文献。我怀疑这是FB刚刚在过去几天实施的新功能,因为我的服务器从未崩溃过。
有人可以建议吗?
答案 0 :(得分:3)
正如in this similar question on facebook and Crawl-delay中所讨论的,facebook并不认为自己是机器人,甚至不会请求你的robots.txt,更不用说注意它的内容了。
您可以实施自己的限速代码,如类似的问题链接所示。这个想法是当服务器超出容量或被特定用户代理淹没时简单地返回http代码503。
似乎那些为大型科技公司工作的人不理解“改善你的缓存”是小公司没有预算可以处理的事情。我们专注于为实际付钱的客户提供服务,并且没有时间抵御来自“友好”公司的网络机器人。
答案 1 :(得分:1)
我们在大约同一时间(10月中旬)看到了相同的行为 - 来自Facebook的大量请求导致整个系统排队请求和缓慢。每开始90分钟;在几天之内,这种频率增加并且随机分布。
请求似乎不尊重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/ 但是我最近才意识到类似的东西。
答案 2 :(得分:0)
无论facebook发明了什么,你都需要修理你的服务器,因为它可能会因外部请求而崩溃。
此外,谷歌首次点击facebookexternalhit
:http://www.facebook.com/externalhit_uatext.php