如何讓 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 endpoint(/graphql)讀取你的公開產品目錄。它會送出唯讀的產品查詢,以取得名稱、SKU、價格、款式變體及產品 URL 等資料。

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

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

  • 爬取會失敗。 Shoply 無法擷取你的頁面或產品資料。
  • AI 會繼續根據上一次成功爬取的資料作答。 顧客可能會看到舊價格、你已移除的產品,以及過時或錯誤的連結。在一個真實案例中,有商店由開發網站搬到正式網域,但其防火牆封鎖了爬蟲,結果聊天機械人仍一直把顧客導向舊的開發網站。
  • Shoply 管理後台上的「Last updated … ago」不再更新。

爬蟲被封鎖的常見跡象

在 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 blocking 規則時才相關
All rate limiting rules只有當 Security Events 顯示有 rate limiting 規則封鎖 Shoply 時Shoply 的請求頻率很低,但嚴格的限制仍可能攔截它
All managed rules只有當 Security Events 顯示有 managed rule 封鎖 Shoply 時讓 Cloudflare 的攻擊模式規則繼續保護其他使用者
All remaining custom rules如果你有其他會封鎖機械人的 custom rules防止你之後的 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 application firewalls (WAFs),例如 Sucuri、AWS WAF 和 Akamai:新增一條匹配 User-Agent header 的 allow 或 exception 規則。
  • WordPress 安全外掛,例如 Wordfence:尋找機械人封鎖、rate limiting 或 user-agent blocking 設定。
  • 伺服器層級過濾器,例如 ModSecurity 規則,以及主機供應商提供的機械人封鎖工具:將該 user agent 加入 whitelist,或請你的主機商代為處理。

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 金鑰。