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 的設計相當友善,它會依循業界規範,盡可能不在每幾秒內造訪各個網頁伺服器超過一次,且會遵守您 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 紀錄已正確更新,因為網路爬蟲若未找到該紀錄,將會另外尋找一個紀錄並傳回程式碼 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 的網路爬蟲,請參閱分享最佳作法指南