Facebook 网络爬虫

内容最常以网页的形式分享到 Facebook。用户第一次分享某个链接时,Facebook 网络爬虫将抓取该网址的 HTML,收集、缓存内容信息并显示到 Facebook,例如标题、说明和缩略图。

网络爬虫访问权限

为了正确抓取并分享您的内容,Facebook 网络爬虫需要这些内容的访问权限。您的页面应对网络爬虫可见。如果您要求登录或另行限制对内容的访问,则需要把 Facebook 网络爬虫添加到白名单。您还应从 DDoS 保护机制针对的目标中排除它。

如果内容在抓取时不可用,您可以在内容可用时,通过分享调试器传递网址,从而强制重新抓取。

识别网络爬虫

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

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

facebookexternalhit/1.1

您可以指定其中一个用户代理向网络爬虫提供页面的非公开版本,即仅有元数据没有实际内容的版本。这种做法可以帮助优化性能,并且有助于保证付费内容的安全。

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

Facebot

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

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

网络爬虫频率限制

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

授予网络爬虫访问权限

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

  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 将无法显示资源。

权威链接

我们的网络爬虫通过解析到您指定为权威链接的网址,提取要分享的内容。

根据最佳实践,您应使用 og:url 标签(首选)或 link rel="canonical",标记具有权威链接的页面的所有变体。权威链接本身的 HTML 也应包含 og:url 标签,以便指定自己为权威资源。

<meta property="og:url" content="https://example.com/path" />

这可以确保所有操作(例如赞和分享)在相同网址中汇总,而不会散布在页面的多个版本中。

这还意味着,相同内容的不同版本将接受相同的处理,即使这些内容托管在不同的子域,或者可通过 http:// 和 https:// 两者访问。

如果需要,我们的网络爬虫会执行一系列重定向,以解析权威链接。

迁移内容/更新网址

如果将内容从一个网址迁移到另一个网址,赞和分享不会自动迁移。执行以下两个步骤,可保留赞和分享计数:

1.从您的 HTTP 重定向对象中排除 Facebook 网络爬虫

在用户访问旧网址时,使用 HTTP 301 或 302 重定向,将用户发送到新网址。

网络爬虫仍然需要能够访问旧页面,因此,请从重定向对象中排除网络爬虫的用户代理,并仅向非 Facebook 网络爬虫客户端发送 HTTP 重定向。

旧网址的 HTML 仍应包含开放图谱标签(包括指向自身的 og:url 标签),并在网络爬虫加载它时返回 HTTP 200 响应。

此外,还应确保在更改网址时正确更新您的 AAAA 记录,因为网络爬虫会在未找到网址时查找网址并返回代码 0 响应。

2.将旧页面用作新页面的权威链接

向新网址的 HTML 添加此标签:

<meta property="og:url" content="https://example.com/old-url" />

尽管首选 og:url 标签,但此方法也可用于 rel=canonical

这会告知网络爬虫权威链接位于原来的位置,且网络爬虫会使用它生成相关页面的赞数。两个位置的新赞会在两个位置汇总。

旧网址必须至少在 Facebook 网络爬虫加载时仍然能够链接到包含开放图谱标签的文档,同时返回 HTTP 200 响应。旧网址应包含指向自身的 og:url 标签。如果您希望其他客户端在访问相关网址时重定向,则必须向所有非 Facebook 爬虫程序客户端发送 301 HTTP 响应。

如需了解如何识别 Facebook 网络爬虫,请查看我们的分享最佳实践指南