跳到內容

Cloudflare WAF 擋住 LINE 與 Facebook 分享預覽

整理日期:2026-09-22

網站在一般瀏覽器可以正常開啟,但網址貼到 LINE 或 Facebook 時,分享預覽沒有顯示標題、描述或縮圖。

這類問題和 Cloudflare WAF 擋到 Googlebot 很像。前台能開,不代表外部爬蟲沒有被 WAF 擋住。


  • 頁面來源:Open Graph 標題、描述與圖片是否真的存在。
  • HTTP 回應:社群爬蟲拿到的是正常頁面、Block,還是 Challenge。
  • WAF 條件:規則是否直接比對特定 User-Agent,或用 bot、crawl、spider 等廣泛字串。
  • Cloudflare 判定:該次請求是否被標記為 verified bot,以及實際命中哪一個分支。
  • 平台快取:修正後是否仍在讀取先前失敗的分享預覽。

規則裡若直接阻擋 facebookexternalhit,Facebook 與相關平台的分享預覽工具就會命中規則。

LINE 的預覽 User-Agent 包含 Linespider。如果規則阻擋所有包含 spider、同時又不是 cf.client.bot 的請求,LINE 沒被 Cloudflare 識別為 verified bot 時也會遭到誤擋。

一長串以 or 連接的規則中,每個分支都能獨立造成命中。後面另一個分支排除 Page Preview,不會抵銷前面已經直接命中的 User-Agent 條件。


如果網站需要正常產生 Facebook 分享預覽,就不要在 Block 或 Challenge 規則中保留這個獨立分支:

(http.user_agent contains "facebookexternalhit")

移除前先確認它不是其他必要安全規則的一部分,修改時不要順便放寬無關條件。

原本的廣泛條件:

(http.user_agent contains "spider" and not cf.client.bot)

可縮小為:

(http.user_agent contains "spider" and not http.user_agent contains "Linespider" and not cf.client.bot)

這個例外要放在原本會命中的 spider 分支內,不能只在另一個 or 分支加白名單。

3. 用新網址驗收,不沿用失敗快取

Section titled “3. 用新網址驗收,不沿用失敗快取”

儲存並部署規則後,可在測試網址加上新的查詢參數,例如:

https://example.com/?preview_test=20260922

接著確認:

  1. Cloudflare Security Events 裡的新請求沒有再命中 Block 或 Challenge。
  2. LINE 能取得標題、描述與縮圖。
  3. Facebook 的重新抓取結果能讀到 Open Graph 資料。
  4. 原本要阻擋的掃描器仍會命中規則,避免修正變成整條防護失效。

目前這份筆記記錄的是根因與修改方式。若還沒有 WAF 部署紀錄、Security Events 與成功預覽畫面,就不能把狀態寫成已修復。


  • 看到分享縮圖消失,就先改 WordPress 文章、特色圖片或 SEO 外掛。
  • 只用一般瀏覽器測試,沒有查看 Cloudflare Security Events。
  • 為了讓預覽恢復,直接放行所有名稱含 bot 或 spider 的請求。
  • 把例外寫在另一個無關的 or 分支,誤以為能抵銷前面的命中。
  • 一直重貼同一個網址,忽略 LINE 或 Facebook 已保存失敗預覽。
  • 沒有正式環境證據,就把修改方案記錄成已驗收完成。

  • 分享失敗的時間、網址與平台。
  • 頁面實際輸出的 Open Graph 標籤。
  • Cloudflare Security Events 裡的規則名稱、動作、User-Agent、IP 與 ASN。
  • 完整 User-Agent 是否包含 facebookexternalhit、Linespider 或其他廣泛關鍵字。
  • 規則中每一個 or 分支,以及例外是否寫在真正會命中的分支內。
  • 修改後的測試參數、回應狀態與成功預覽證據。

  • Cloudflare
  • WAF
  • LINE
  • Facebook
  • Open Graph
  • 社群預覽
  • User-Agent