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 等服務維護一個經過驗證的機器人列表,可以跳過挑戰。預設情況下,並非每個社交平台的預覽爬蟲都保證會出現在該清單中,這就是為什麼當您的網站可以透過其他方式存取時,預覽可能會收支平衡。
- 檢查 Cloudflare 儀表板中的「安全性」下的 Under Attack Mode 目前是否已開啟。如果是,請將其關閉並重新測試預覽
- 如果您使用的是 Pro 或更高版本,請切換到 Super Bot Fight Mode,這樣您可以為已知的社交爬蟲添加跳過規則,而不是完全關閉保護
- 添加自訂規則,允許來自經過驗證的機器人和已知社交預覽用戶代理(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 快取的指南以了解下一步。
快速修復清單
- 檢查安全性 > 針對爬網程序請求的 Bot Fight Mode 操作事件
- 確認Under Attack Mode當前是否啟用
- 暫時禁用Bot Fight Mode測試是否為這個原因
- 在 Super Bot Fight Mode 中為已知的社交爬蟲添加了跳過規則(如果您的計劃可用)
- 使用爬蟲的實際用戶代理字串透過curl進行測試
- 用Proovd驗證最終結果
常見問題解答
Bot Fight Mode會阻止Facebook和Discord爬蟲嗎?
可以。 Bot Fight Mode 挑戰與已知機器人模式匹配的流量,社群媒體預覽爬蟲與這些模式相符。 Cloudflare自己的社群論壇上的開發者已經報告了這一點。
為什麼在添加 Cloudflare 之前我的連結預覽就可以工作?
如果您的 OG 標籤沒有更改,則 Cloudflare 的安全層就是新變數。 Under Attack Mode 和 Bot Fight Mode 是最常見的原因。
確認您的網站回傳給爬蟲的內容
使用 Proovd 免費檢查,以準確查看正在提供的服務,獨立於 Cloudflare 的儀表板或任何平台自己的快取。