如何让 Shoply AI 的爬虫通过你的防火墙
Shoply AI 会定期读取你的网站,以保持其回答的准确性。如果你的网站使用了 Cloudflare 或其他防火墙或机器人防护服务,这些服务可能会阻止 Shoply 的爬虫。一旦发生这种情况,聊天机器人就会继续根据你网站的旧副本进行回答。
解决方法通常只需要一条规则:允许 User-Agent 包含 ShoplyAIBot 的请求。 本指南将说明为什么需要这个爬虫、如何识别它,以及如何在 Cloudflare 和其他防火墙中放行它。
谁需要进行这项设置?
- SiteChat 网站所有者。 SiteChat 是 Shoply 为任何非 Shopify 商店网站提供的聊天和搜索功能,包括 Magento 商店。
- 代理商和开发人员,他们负责这些网站的主机、CDN(内容分发网络)或安全设置。
Shopify 应用商家通常不需要更改任何设置。 Shoply 通过 Shopify 的 API 获取 Shopify 产品数据,而不是通过爬取你的店面。不过,如果你添加了来自非 Shopify 网站的页面作为知识源,例如托管在其他地方的帮助中心或博客,该网站的防火墙仍然可能拦截 Shoply。有关这些页面列在何处,请参阅如何教会 Shoply 了解你的商店。
为什么 Shoply 需要读取我的网站?
Shoply 会读取你在爬取设置中列出的页面,以便聊天机器人的回答、价格和链接与你的实时网站保持一致。
对于 Magento 商店,Shoply 还会通过你商店的 GraphQL 端点(/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 允许列表并不可靠。
爬虫的行为方式
- 它只会爬取你在 Shoply 中配置的网站。
- 它遵守 robots.txt 来读取页面。如果你的 robots.txt 屏蔽了某个页面,Shoply 会跳过它,因此请检查不要屏蔽你希望 AI 学习的页面。
- 它对你的服务器负载很轻: 同时最多 2 个请求,请求之间有 2 秒延迟。
- 页面数量有上限,由你的 Shoply 套餐决定。
爬虫何时运行
- 按计划自动运行。 频率取决于你的套餐。
- 当你在 Shoply 管理后台点击 “Recrawl Now” 时。
- 当爬取持续失败时,每 2 天运行一次。 Shoply 会自动重试,因此一旦你添加了放行规则,下一次自动重试或手动重新爬取就会重新抓取你的网站。
如何在 Cloudflare 中放行 Shoply?
在 Cloudflare 中,创建一个使用 Skip 操作的 custom rule。跳过规则会让匹配的请求绕过原本会阻止或质询它们的安全检查。
第 1 步:创建跳过规则
-
在 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
如果你更喜欢使用表达式编辑器,请使用:
text(http.user_agent contains "ShoplyAIBot") -
在 Then take action > Choose action 下,选择 Skip。
-
选择要跳过的内容(见下表)。
-
保持 Log matching requests 为开启状态。这样 Shoply 的请求就会显示在 Cloudflare 的 Security Events 中,这有助于排查问题。
-
选择 Deploy。
第 2 步:选择要跳过的内容
| Cloudflare 中的跳过选项 | 要跳过吗? | 原因 |
|---|---|---|
| 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 规则拦截了 Shoply 时 | Shoply 的请求频率很低,但严格的限制仍可能误拦截 |
| All managed rules | 仅当 Security Events 显示某个 managed rule 拦截了 Shoply 时 | 让 Cloudflare 的攻击模式规则继续对其他访问者生效 |
| All remaining custom rules | 如果你有其他会拦截机器人的自定义规则 | 防止你后面的自定义规则拦截 Shoply |
先从标为“是”的行开始。如果 Cloudflare 的 Security Events 仍然显示 Shoply 的请求被拦截或被质询,事件会告诉你是哪个功能生效了。然后把该功能添加到跳过规则中。
第 3 步:把规则放到最前面
Cloudflare 会按顺序评估自定义规则,从上到下依次执行。如果在你的规则之上的某条规则先拦截或质询了请求,那么你的跳过规则就永远不会运行。请将 Shoply 规则移动到自定义规则列表的顶部。
如果你使用 Bot Fight Mode(Cloudflare 免费套餐)
Bot Fight Mode 不能通过跳过规则绕过。 Cloudflare 会将其与自定义规则分开运行,因此 skip 和 allow 规则对它都无效。你有两个选择:
- 关闭 Bot Fight Mode: 前往 Security > Settings,按 Bot traffic 过滤,然后关闭 Bot fight mode。
- 升级到 Pro 或更高套餐,并使用 Super Bot Fight Mode,它支持跳过规则。
如果开启了 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:查找机器人拦截、速率限制或 user-agent 拦截设置。
- 服务器级过滤器,例如 ModSecurity 规则,以及主机服务商提供的机器人拦截器:将该 user agent 加入白名单,或请你的主机服务商代为操作。
Magento 商店: 请确保规则同样适用于对 /graphql 的 POST 请求。有些防火墙会将 API 请求与页面访问分开处理。如果页面已放行,但 /graphql 被拦截,你的产品目录仍然不会更新。
不要依赖 IP 允许列表。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 密钥。
