Facebook 網絡爬蟲

內容經常以網頁的形式分享至 Facebook。用戶第一次分享連結時,Facebook 網絡爬蟲將抓取位於該網址的 HTML 以收集和快取內容相關資訊,並以標題、說明和縮圖圖像的方式顯示在 Facebook 上。

網絡爬蟲存取權

Facebook 網絡爬蟲必須能夠存取您的內容,才能夠正確進行抓取和分享。您的網頁必須對網絡爬蟲顯示。如果要以登入或其他方式限制存取您的內容,您需要提供白名單給網絡爬蟲。您還應該將網絡爬蟲排除在 DDoS 保護機制之外。

如果內容在進行抓取時不可用,您可以在內容可用時透過分享錯誤檢查工具來傳遞網址,以強制重新抓取。

識別網絡爬蟲

Facebook 網絡爬蟲可以透過下列一個用戶代理程式字串來識別:

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

facebookexternalhit/1.1

您可以鎖定這些用戶代理程式中的其中一個,向網絡爬蟲提供僅具有中繼資料而沒有實際內容的非公用版網頁。這樣做有助於優化成效,對於保護付費牆內容安全也有幫助。

從 2014 年 5 月 28 日起,您可能還會看到網絡爬蟲顯示下列用戶代理程式字串:

Facebot

Facebot 是 Facebook 的網絡爬蟲機器人,可以幫助改善廣告成效。 Facebot 的設計概念相當溫和。該機器人存取每個網絡伺服器的時間每數秒鐘不超過 1 次,符合業界標準規範,並且還會尊重您的 robots.txt 設定。

請注意,Facebot 每天檢查並變更您伺服器的 robots.txt 檔案的次數不多,所以任何更新記錄都不是立即產生,而是在下次爬行時產生。

網絡爬蟲速率限制

您可以對網頁和物件附加標籤,變更 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 重新導向將用戶傳送至新網址。

網絡爬蟲仍然需要能夠存取舊網頁,因此請從重新導向排除網絡爬蟲的用戶代理程式,並只傳送 HTTP 重新導向至非 Facebook 網絡爬蟲用戶端。

舊網址的 HTML 應該仍然包含「開放式圖表」標籤(其中包含指向本身的 og:url 標籤),並在網絡爬蟲載入該 HTML 時傳回 HTTP 200 回應。

另外在變更網址時,請確保您的 AAAA 紀錄已更新無誤,因為網絡爬蟲會尋找 1,如果找不到就會回傳代碼 0。

2.使用舊網頁作為新網頁的標準網址

將此標籤新增至新網址的 HTML:

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

雖然我們建議使用 og:url 標籤,不過這個方法也能配搭 rel=canonical 使用。

這樣做可以告訴我們的網絡爬蟲:標準網址在舊位置上,網絡爬蟲將會使用該標準網址產生網頁的讚好次數。任何位置的新讚好將同時匯總到兩個位置。

舊網址仍必須以開放式圖表標籤顯示文件,並傳回 HTTP 200 回應(至少在 Facebook 網絡爬蟲載入時必須這樣操作)。舊網址應包含其本身的 og:url 標籤,並指向自己。如果您希望其他客戶訪問網址時重新導向,請務必傳送您的 301 HTTP 回應至所有非 Facebook 網絡爬蟲的客戶端。

請參閱我們的分享最佳操作實例指南,以瞭解如何辨識 Facebook 網絡爬蟲。