Facebook 网络爬虫

内容最常以网页的形式分享到 Facebook。用户第一次分享某个链接时,Facebook 网络爬虫将抓取该网址的 HTML,收集、缓存内容信息并显示到 Facebook,例如标题、说明和缩略图。除了直接在 Facebook 分享的网页,还可以通过其他方法触发对您网页的抓取。例如,在网页中集成任何 Facebook 社交插件都可以触发我们的网络爬虫抓取该网页。

识别网络爬虫

可通过以下任一用户代理字符串识别 Facebook 网络爬虫:

facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)

facebookexternalhit/1.1

网络爬虫访问权限

为了正确抓取并分享您的内容,Facebook 网络爬虫需要这些内容的访问权限。您的页面应对网络爬虫可见。如果您要求登录或另行限制对内容的访问,则需要把 Facebook 网络爬虫添加到白名单。请注意,我们的网络爬虫只接受 gzipdeflate 编码,所以请确保您的服务器使用的是正确的编码。

如果内容在抓取时不可用,您可以在内容可用时,通过分享调试器传递网址或者使用图谱 API 来强制重新抓取。

有两种方法可以授予网络爬虫访问权限:

  1. 将上述用户代理字符串添加到白名单(不需要维护)
  2. 将网络爬虫使用的 IP 地址添加到白名单(更安全):

运行此命令,获取网络爬虫所用 IP 地址的当前列表。

whois -h whois.radb.net -- '-i origin AS32934' | grep ^route  

这会返回频繁更改的 IP 地址的列表:

# For example only - over 100 in total
31.13.24.0/21 
66.220.144.0/20    
2401:db00::/32  
2620:0:1c00::/40  
2a03:2880::/32 

确保合理的延迟

您需要确保,待搜刮网址中引用的资源可由网络爬虫以合理的速度检索,即几秒钟内。 如果网络爬虫无法达到此速度,Facebook 将无法显示资源。

网络爬虫频率限制

通过标记页面和对象,您可以更改 Facebook 网络爬虫在检查是否有新内容前需要等待的时长。 如果网络爬虫搜刮太频繁,可使用 og:ttl 对象属性限制网络爬虫的访问频率。

Facebot 网络爬虫

自 2014 年 5 月 28 日起,您可能还会看到具有以下用户代理字符串的网络爬虫:

Facebot

Facebot 是 Facebook 推出的网页网络爬虫程序,可帮助改善广告发布表现。 Facebot 是一款礼貌的程序。对于每个 web 服务器,它每隔数秒才会尝试访问一次,不仅符合行业标准,也会遵守您的 robots.txt 设置。

请注意,对于服务器的 robots.txt 文件,Facebot 每天只会检查几次其是否有更改,所以当您更新文件内容后,它不能立即发现内容更新,只有在下次搜刮您的服务器时才能发现。