如何讓 Shoply AI 的爬蟲通過你的防火牆
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:
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 規則
-
在 Cloudflare 儀表板中,打開你的網站(zone),然後前往 Security rules。
-
選擇 Create rule > Custom rules。
-
在 Rule name 輸入清楚的名稱,例如
Allow Shoply AI crawler。 -
在 When incoming requests match 下,設定:
- Field: User Agent
- Operator: contains
- Value:
ShoplyAIBot
如果你偏好使用 expression editor,請使用:
text(http.user_agent contains "ShoplyAIBot") -
在 Then take action > Choose action 下,選擇 Skip。
-
選擇要略過的項目(見下表)。
-
保持 Log matching requests 為開啟。這樣 Shoply 的請求便會顯示在 Cloudflare 的 Security Events 中,有助疑難排解。
-
選擇 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 地址。
如何檢查是否已成功?
- 在 Shoply 管理後台中,按下 Recrawl Now。
- 等待爬取完成,然後檢查儀表板上的 “Last updated” 是否已重設為最近時間。
- 向聊天機械人查詢一個你最近更改過的產品或頁面,並確認回答及連結與你的即時網站一致。
你亦可以在自己的電腦上快速檢查。請把 https://your-site.com/ 替換成你的網站地址:
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 金鑰。
