← Blog

Cloudflare 阻止您的連結預覽?這就是為什麼

您的 OG 標籤是正確的。您的圖像在瀏覽器中加載良好。但Discord、Facebook或Slack不會顯示預覽,因為您將網站放在Cloudflare後面。這通常不是標籤問題或快取問題。這是Cloudflare的機器人保護將爬蟲視為攻擊者。

不確定Cloudflare是否是原因?

使用 Proovd 免費檢查,看看您的網站實際返回給爬蟲的內容,然後將其與瀏覽器看到的內容進行比較。

快速解答

  • Bot Fight Mode 和「我是 Under Attack Mode」是添加 Cloudflare 後預覽損壞的最常見原因
  • 這兩個功能都對看似自動化的流量提出了挑戰,而社群預覽爬蟲在設計上看起來是自動化的
  • 正常的 WAF 規則無法繞過Bot Fight Mode。它在常規規則引擎之外運行

人們實際報告的模式

這不是理論上的極端情況。在 Cloudflare 自己的社群論壇上,一位開發人員描述了他們的 og:image 在 HTTP 上運作良好,但在將網站置於 Cloudflare 後面後,在 HTTPS 上出現故障。修復方法是停用“Under Attack Mode”。另一個線程的標題很明確:“Cloudflare阻塞Facebook,如何修復它”,原因又是Under Attack Mode。第三位開發人員直接詢問當連結共享時Bot Fight Mode是否會阻止Facebook和X,因為他們對預覽突然中斷沒有其他解釋。

共同點:網站的 HTML 或 OG 標籤沒有任何變化。唯一的新變數是Cloudflare位於來源伺服器前面的安全層。

為什麼會發生這種情況

Under Attack Mode 挑戰每位訪客,包括您想要的機器人

Under Attack Mode 在讓請求通過之前向每個訪客顯示一個 JavaScript 挑戰頁面。社交預覽爬蟲類(例如 Discord 或 Facebook)不運行 JavaScript,無法解決該挑戰。他們看到的是挑戰頁面而不是實際的 HTML,沒有 OG 標籤意味著沒有預覽。

Bot Fight Mode 計算流量並挑戰任何看起來自動化的東西

Bot Fight Mode 在 Cloudflare 的免費方案中預設為啟用。它識別與已知機器人模式匹配的請求並發出計算挑戰。抓取頁面一次,不加載圖像或運行腳本,並且沒有瀏覽器指紋與該模式緊密匹配,這正是鏈接預覽機器人從外部看起來的樣子。

Cloudflare自己的文件確認Bot Fight Mode無法使用WAF自訂規則或頁面規則繞過或跳過,因為它在單獨的評估管道中運行。如果它阻止了您的爬網程序,則普通的允許規則將無法修復它。您可以將其關閉或升級到 Super Bot Fight Mode,它確實支援例外。

經過驗證的機器人會遇到例外。大多數社交爬蟲不會自動獲得資格

Cloudflare 為 Googlebot 和 Bingbot 等服務維護一個經過驗證的機器人列表,可以跳過挑戰。預設情況下,並非每個社交平台的預覽爬蟲都保證會出現在該清單中,這就是為什麼當您的網站可以透過其他方式存取時,預覽可能會收支平衡。

  1. 檢查 Cloudflare 儀表板中的「安全性」下的 Under Attack Mode 目前是否已開啟。如果是,請將其關閉並重新測試預覽
  2. 如果您使用的是 Pro 或更高版本,請切換到 Super Bot Fight Mode,這樣您可以為已知的社交爬蟲添加跳過規則,而不是完全關閉保護
  3. 添加自訂規則,允許來自經過驗證的機器人和已知社交預覽用戶代理(Discordbot、facebookexternalhit、Slackbot、TwitterBot)的請求跳過挑戰

Setting Available on Can you add exceptions?
Under Attack Mode All plans No, it challenges everyone equally
Bot Fight Mode Free and above No, cannot be skipped with WAF rules
Super Bot Fight Mode Pro and above Yes, supports Skip rules per bot category
Custom WAF rules All plans Yes, fully configurable

如果 Under Attack Mode 和 Bot Fight Mode 均關閉且預覽仍然損壞,則下一個最可能的原因是服務舊 HTML 的陳舊邊緣緩存,或者 WAF 透過其他人設定的自訂規則阻止爬網程式的使用者代理。直接檢查響應頭而不是猜測:

curl -I -A "facebookexternalhit/1.1" https://yoursite.com/page

回應中的 403 或質詢頁面表示爬蟲程式仍然在您的 Cloudflare 配置中的某個位置被封鎖。帶有正確標籤的 200 意味著該區塊已解決,任何剩餘問題都在平台方面。請參閱我們的清除每個平台上的 OG 快取的指南以了解下一步。

快速修復清單

  1. 檢查安全性 > 針對爬網程序請求的 Bot Fight Mode 操作事件
  2. 確認Under Attack Mode當前是否啟用
  3. 暫時禁用Bot Fight Mode測試是否為這個原因
  4. 在 Super Bot Fight Mode 中為已知的社交爬蟲添加了跳過規則(如果您的計劃可用)
  5. 使用爬蟲的實際用戶代理字串透過curl進行測試
  6. 用Proovd驗證最終結果

常見問題解答

Bot Fight Mode會阻止Facebook和Discord爬蟲嗎?

可以。 Bot Fight Mode 挑戰與已知機器人模式匹配的流量,社群媒體預覽爬蟲與這些模式相符。 Cloudflare自己的社群論壇上的開發者已經報告了這一點。

為什麼在添加 Cloudflare 之前我的連結預覽就可以工作?

如果您的 OG 標籤沒有更改,則 Cloudflare 的安全層就是新變數。 Under Attack Mode 和 Bot Fight Mode 是最常見的原因。

確認您的網站回傳給爬蟲的內容

使用 Proovd 免費檢查,以準確查看正在提供的服務,獨立於 Cloudflare 的儀表板或任何平台自己的快取。