Facebook 网络爬虫

Facebook 网络爬虫将通过复制粘贴链接,或通过 Facebook 社交插件,爬取 Facebook 上分享的应用或网站的 HTML 数据。网络爬虫会收集、缓存和显示应用或网站相关信息,如网站标题、描述和缩略图等。

网络爬虫要求

  • 您的服务器必须使用 gzipdeflate 编码。
  • 需要在爬取网站或应用的前 1 MB 内容之前列出任何开放图谱属性,否则爬取操作将会中断。
  • 确保网络爬虫可以在几秒内爬取内容,否则 Facebook 将无法显示相关内容。
  • 您的应用或网站应根据网络爬虫请求 Range 标头中的指定字节,生成并返回带有所有必要属性的响应,或应一并忽略 Range 标头。
  • 将网络爬虫使用的用户代理字符串或 IP 地址(更为安全)添加到白名单中。
  • 确保您的应用或网站允许 Facebook 网络爬虫爬取与应用或网站关联的隐私政策

网络爬虫 IP 和用户代理

Facebook 网络爬虫用户代理字符串:

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

如要获取网络爬虫当前使用的 IP 地址列表,请运行以下命令。

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

这些 IP 地址经常发生更改。

响应示例

...
route:      69.63.176.0/21
route:      69.63.184.0/21
route:      66.220.144.0/20
route:      69.63.176.0/20
route6:     2620:0:1c00::/40
route6:     2a03:2880::/32
route6:     2a03:2880:fffe::/48
route6:     2a03:2880:ffff::/48
route6:     2620:0:1cff::/48
... 

疑难解答

如果应用或网站内容在爬取时不可用,您可以在内容可用时,通过在分享调试器工具中传递网址或使用共享 API 来强制爬取。

您可使用以下代码模拟网络爬虫请求:

curl -v --compressed -H "Range: bytes=0-524288" -H "Connection: close" -A "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)" "$URL"