7

Facebook 是否只是实施了一些网络爬虫?在过去的几天里,我的网站已经崩溃了几次,被我追溯到 Facebook 的 IP 严重超载。

我试过谷歌搜索,但找不到任何关于通过 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 在过去几天刚刚实施的新东西,因为我的服务器以前从未崩溃过。

有人可以请教吗?

4

3 回答 3

3

正如在 facebook 和 Crawl-delay 上的类似问题中所讨论的那样,facebook 并不认为自己是机器人,甚至不请求您的 robots.txt,更不用说注意它的内容了。

您可以实现自己的速率限制代码,如类似问题链接中所示。这个想法是在您的服务器容量过剩或被特定用户代理淹没时简单地返回 http 代码 503。

那些为大型科技公司工作的人似乎不明白“改善缓存”是小公司没有预算来处理的事情。我们专注于为真正付钱的客户提供服务,并且没有时间抵御来自“友好”公司的猖獗网络机器人。

于 2012-11-09T16:56:49.447 回答
1

我们几乎在同一时间(10 月中旬)看到了相同的行为——来自 Facebook 的大量请求导致排队请求和整个系统的缓慢。一开始是每 90 分钟一次;几天后,这种频率增加并随机分布。

这些请求似乎不尊重 robots.txt,因此我们不得不考虑不同的解决方案。最后,我们设置 nginx 将所有带有 facebook 用户代理的请求转发到一对专用的后端服务器。如果我们使用 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/ 但我不知道最近有类似的事情。

于 2012-11-02T15:43:10.810 回答
0

无论 facebook 发明了什么,你肯定需要修复你的服务器,因为它可能会因外部请求而崩溃。

此外,只是在谷歌上的第一次点击:http facebookexternalhit: //www.facebook.com/externalhit_uatext.php

于 2012-10-14T08:43:54.907 回答