如何讓 Shoply AI 的爬蟲通過您的防火牆

A brick firewall opens one gate so Shoply's crawler can carry website pages to the chat assistant

Shoply AI 會定期讀取您的網站內容,以維持回答的正確性。如果您的網站使用 Cloudflare 或其他防火牆或機器人防護服務,該服務可能會封鎖 Shoply 的爬蟲。一旦發生這種情況,聊天機器人就只能根據您網站的舊版副本來回答。

通常只要設定一條規則即可解決:允許 User-Agent 包含 ShoplyAIBot 的請求。 本指南會說明為什麼需要這個爬蟲、如何辨識它,以及如何在 Cloudflare 與其他防火牆中允許它通過。

誰需要處理這件事?

  • SiteChat 網站擁有者。 SiteChat 是 Shoply 為任何非 Shopify 商店網站提供的聊天與搜尋功能,也包含 Magento 商店。
  • 代理商與開發人員,負責管理這些網站的主機、CDN(內容傳遞網路)或安全性設定者。

Shopify app 商家通常不需要變更任何設定。 Shoply 會透過 Shopify 的 API 取得 Shopify 商品資料,而不是爬取您的前台商店。不過,如果您新增了來自非 Shopify 網站的頁面作為知識來源,例如架設在其他地方的說明中心或部落格,該網站的防火牆仍可能封鎖 Shoply。可參考如何教 Shoply 認識您的商店,查看這些頁面列在哪裡。

為什麼 Shoply 需要讀取我的網站?

Shoply 會讀取您在爬取設定中列出的頁面,讓聊天機器人的回答、價格與連結都能與您的即時網站內容一致。

對於 Magento 商店,Shoply 也會透過您商店的 GraphQL 端點(/graphql)讀取公開的商品目錄。它會送出唯讀的商品查詢,以取得名稱、SKU、價格、變體與商品 URL 等詳細資料。

爬蟲不會登入、也不會下單,更不會提交表單。若想了解 Shoply 如何使用這些內容,請參閱Shoply 使用哪些資訊來回答顧客問題。

如果爬蟲被封鎖,會發生什麼事?

  • 爬取會失敗。 Shoply 無法擷取您的頁面或商品資料。
  • AI 會持續根據上一次成功爬取的資料來回答。 購物者可能會看到舊價格、已下架商品,以及過時或錯誤的連結。曾有實際案例是某商店從開發站搬移到正式網域,但其防火牆封鎖了爬蟲,導致聊天機器人仍持續把購物者導向舊的開發站。
  • Shoply 管理後台上的「上次更新於 … 前」將不再推進。

爬蟲被封鎖的常見徵兆

在 Shoply 管理後台中,爬取時間明顯落後。 在儀表板上,Content crawled by Shoply AI 下方的 “Last updated at: … ago” 時間會持續增加,而不是每隔幾小時重設一次,例如顯示為「770 hours ago」(約一個月前)。即使您點擊 Recrawl Now,它仍然不會更新,因為被封鎖的爬取根本無法完成。

如果您查看防火牆日誌,常見症狀通常是 Cloudflare 對 Shoply 的請求回傳 HTTP 403,形式通常如下:

  • Error 1010,表示網站擁有者根據瀏覽器特徵封鎖了該請求。Cloudflare 對此錯誤的官方修正說明會指向 Browser Integrity Check。
  • “Just a moment…” 驗證頁面,而爬蟲無法完成這種挑戰。

我該如何辨識 Shoply 的爬蟲?

來自 Shoply 爬蟲的每個請求都會使用這個 User-Agent:

text
ShoplyAIBot/1.0 (https://shoplyai.ai; support@shoplyai.ai; For sites installed Shoply AI Search & Chatbot)

請將您的規則寫成比對較短的文字 ShoplyAIBot(例如「User-Agent contains ShoplyAIBot」)。這樣即使版本號改變,您的規則仍然有效。

請依 User-Agent 允許,不要依 IP 位址允許。 Shoply 的爬蟲不使用固定 IP 位址,因此 IP allowlist 無法可靠運作。

爬蟲的運作方式

  • 它只會爬取您在 Shoply 中設定的網站。
  • 它會遵守 robots.txt 來讀取頁面。如果您的 robots.txt 封鎖某個頁面,Shoply 就會略過,因此請確認它沒有封鎖您希望 AI 學習的頁面。
  • 它對伺服器負載很溫和: 同時間最多 2 個請求,且每次請求之間會間隔 2 秒。
  • 頁面數量會受您的 Shoply 方案限制。

爬蟲何時執行

  • 依排程自動執行。 頻率取決於您的方案。
  • 當您在 Shoply 管理後台點擊 “Recrawl Now” 時。
  • 當爬取持續失敗時,每 2 天會再試一次。 Shoply 會自動重試,因此一旦您加入允許規則,下次重試或手動重新爬取時就會重新讀取您的網站。

我該如何在 Cloudflare 中允許 Shoply?

在 Cloudflare 中,請建立一條使用 Skip 動作的 custom rule。Skip 規則可讓符合條件的請求略過原本會封鎖它或要求驗證的安全性檢查。

步驟 1:建立 skip 規則

  1. 在 Cloudflare 控制台中,開啟您的網站(zone),然後前往 Security rules。

  2. 選擇 Create rule > Custom rules。

  3. 在 Rule name 中輸入清楚易懂的名稱,例如 Allow Shoply AI crawler。

  4. 在 When incoming requests match 下,設定:

    • Field: User Agent
    • Operator: contains
    • Value: ShoplyAIBot

    如果您偏好使用 expression editor,請使用:

    text
    (http.user_agent contains "ShoplyAIBot")
  5. 在 Then take action > Choose action 下,選擇 Skip。

  6. 選擇要略過的項目(請見下表)。

  7. 保持 Log matching requests 為開啟狀態。這樣 Shoply 的請求就會出現在 Cloudflare 的 Security Events 中,方便您排除問題。

  8. 選擇 Deploy。

步驟 2:選擇要略過的項目

Cloudflare 中的 Skip 選項是否略過?原因
Browser Integrity Check是這會導致爬蟲出現 error 1010
Security Level是避免 Security Level 檢查向爬蟲提出驗證挑戰
All Super Bot Fight Mode rules是,適用於 Pro 以上方案Super Bot Fight Mode 可能會向爬蟲提出驗證或直接封鎖
User Agent Blocking若您有使用只有在您自行建立了 user-agent 封鎖規則時才有影響
All rate limiting rules僅當 Security Events 顯示是 rate limiting rule 封鎖了 Shoply 時Shoply 的請求頻率很低,但嚴格限制仍可能誤傷
All managed rules僅當 Security Events 顯示是 managed rule 封鎖了 Shoply 時讓 Cloudflare 的攻擊樣式規則對其他人仍持續生效
All remaining custom rules若您有其他會封鎖機器人的自訂規則避免您後續的自訂規則封鎖 Shoply

請先從標示為「是」的項目開始。如果 Cloudflare 的 Security Events 仍顯示 Shoply 的請求被封鎖或被要求驗證,事件內容會告訴您是哪個功能造成的。再把該功能加入 skip 規則即可。

步驟 3:將規則放在最前面

Cloudflare 會依照順序評估 custom rules,從上到下。如果位於您規則上方的某條規則先封鎖或驗證了該請求,您的 skip 規則就不會執行。請將 Shoply 這條規則移到 custom rules 清單的最上方。

如果您使用 Bot Fight Mode(Cloudflare Free 方案)

Bot Fight Mode 無法透過 skip 規則繞過。 Cloudflare 會將它與 custom rules 分開執行,因此 skip 與 allow 規則對它都沒有作用。您有兩個選項:

  • 關閉 Bot Fight Mode: 前往 Security > Settings,以 Bot traffic 篩選,然後將 Bot fight mode 關閉。
  • 升級至 Pro 或更高方案,並使用 Super Bot Fight Mode,因為它支援 skip 規則。

如果已開啟 Under Attack mode

Under Attack mode 會對每位訪客顯示驗證頁面,而爬蟲無法通過。Cloudflare 建議僅在遭受實際攻擊期間使用此模式。在關閉之前,Shoply 都無法讀取您的網站。

允許某個 user agent 安全嗎?

任何用戶端都可以宣稱自己是 ShoplyAIBot,因此這條規則會讓所有送出該 User-Agent 的請求略過部分機器人檢查。為了將風險降到最低,請只略過那些會封鎖爬蟲的功能,並保留對登入、結帳與管理後台的防護。Shoply 永遠不需要存取這些區域。

我該如何在其他防火牆中允許 Shoply?

原則到哪裡都一樣:允許 User-Agent 包含 ShoplyAIBot 的請求。 不同產品的實際選單名稱會不同,因此請參考您所使用廠商的文件,建立 allow 或 exception 規則。常見可檢查的位置包括:

  • 雲端 Web 應用程式防火牆(WAF),例如 Sucuri、AWS WAF 與 Akamai:新增一條比對 User-Agent 標頭的 allow 或 exception 規則。
  • WordPress 安全性外掛,例如 Wordfence:尋找 bot blocking、rate limiting 或 user-agent blocking 設定。
  • 伺服器層級過濾器,例如 ModSecurity 規則,以及您的主機商提供的 bot blocker:將該 user agent 加入白名單,或請主機商代為處理。

Magento 商店: 請確認該規則也涵蓋對 /graphql 的 POST 請求。有些防火牆會將 API 請求與頁面瀏覽分開處理。如果頁面可通過,但 /graphql 被封鎖,您的商品目錄就無法更新。

不要依賴 IP allowlist。Shoply 的爬蟲不使用固定 IP 位址。

我該如何確認已經生效?

  1. 在 Shoply 管理後台中,點擊 Recrawl Now。
  2. 等待爬取完成,然後確認儀表板上的 “Last updated” 已重設為最近時間。
  3. 詢問聊天機器人一個您最近剛更新過的商品或頁面,確認回答與連結都與您的正式網站一致。

您也可以從自己的電腦做個快速測試。請將 https://your-site.com/ 替換為您的網站網址:

bash
curl -I -A "ShoplyAIBot/1.0 (https://shoplyai.ai; support@shoplyai.ai; For sites installed Shoply AI Search & Chatbot)" https://your-site.com/

如果回應是 HTTP/2 200(或 HTTP/1.1 200 OK),表示您的規則允許該 user agent 通過。如果是 403,就表示仍有某處在封鎖它。

這項測試是從您自己電腦的 IP 位址發出,而不是從 Shoply 的伺服器發出。有些防火牆會依流量來源位置採取不同處理方式,因此以 Shoply 管理後台中的重新爬取結果作為最終確認。

需要協助嗎?

請寄信至 support@shoplyai.ai,並附上您的網站網址、您使用的防火牆或主機商,以及防火牆日誌中任何被封鎖請求的截圖。請勿提供密碼或 API 金鑰。