Cloudflare规则怎么检查?避免把AI爬虫当成异常流量拦掉

浏览进度条

robots.txt 没挡,不代表 AI 爬虫真的拿到了页面。外贸站用了 Cloudflare 后,要重点查 WAF、Bot 规则、Rate Limiting、User-Agent Blocking、AI Crawl Control 和 Security Events;公开产品页应该能稳定返回真实 HTML,后台、提交接口和客户资料才应该严控。

这篇不讲“Cloudflare 会不会影响 SEO”的概念。
只讲一个很具体的问题:Cloudflare规则怎么检查,避免把 AI 爬虫当成异常流量拦掉。

先准备一组外贸核心 URL

不要一上来查全站。先抽样这些页面:

页面类型 示例 URL 期望状态
首页 https://www.example.com/ 200,有品牌和主营品类
产品分类页 /products/ 200,能进入产品体系
产品详情页 /products/industrial-valve/ 200,正文里有参数、用途、MOQ 等
FAQ 页 /faq/ 200,售前问题可读
案例页 /case-studies/water-treatment/ 200,项目背景可读
供应商介绍页 /about//factory/ 200,公司实体信息可读
RFQ 说明页 /request-a-quote/ 200,说明公开;提交接口另行保护

如果这些页面对普通浏览器能打开,但对 crawler User-Agent 返回 403429、挑战页或空 HTML,就要查 Cloudflare 规则,而不是只改 WordPress。

第一步:先看响应头和状态码

先查普通访问:

URL="https://www.example.com/products/industrial-valve/"

curl -sS -o /dev/null \
  -D - \
  -w "\nhttp_code=%{http_code}\nremote_ip=%{remote_ip}\ntime_total=%{time_total}\n" \
  "$URL"

再用一个常见搜索爬虫 User-Agent 做对照。注意:这只是模拟请求,用来检查规则差异,不能证明真实 Googlebot 身份。

URL="https://www.example.com/products/industrial-valve/"
UA_GOOGLEBOT="Mozilla/5.0 AppleWebKit/537.36 \
KHTML, like Gecko; compatible; Googlebot/2.1; \
+http://www.google.com/bot.html"

curl -sS -o /dev/null \
  -D - \
  -A "$UA_GOOGLEBOT" \
  -w "\nhttp_code=%{http_code}\ncontent_type=%{content_type}\ntime_total=%{time_total}\n" \
  "$URL" | \
  grep -Ei '^(HTTP/|cf-ray:|server:|location:|content-type:|http_code=)'

重点看这些信号:

字段 怎么看
HTTP/ 是否 2003014034295xx
cf-ray Cloudflare 请求追踪 ID,可回面板查 Security Events
server 是否经过 Cloudflare
location 是否被重定向到挑战页、登录页或错误页
content-type 是否返回真实 HTML

如果 cf-ray 存在,后面就可以拿 Ray ID 去 Cloudflare 面板里反查规则。

第二步:确认返回的是正文,不是挑战页

有些挑战页不一定只靠状态码能看出来。
所以要看 HTML 前几行:

curl -sS -L \
  -A "$UA_GOOGLEBOT" \
  "$URL" | \
  sed -n '1,60p'

如果看到的是 Cloudflare challenge、captcha、checking your browser、turnstile、access denied,而不是产品标题、参数、FAQ 正文,那就说明爬虫拿到的不是营销页面正文。

外贸 AI SEO 里,这一步很关键。
AI 搜索相关 crawler 需要读公开内容;如果拿到的是挑战页,它没有材料判断你的产品、案例和供应商信息。

第三步:去 Cloudflare Security Events 查证据

Cloudflare 排查不要凭感觉改规则。
建议按下面字段查:

Cloudflare Security Events 过滤条件:

Host:
www.example.com

Path:
/products/industrial-valve/

Action:
Block
Managed Challenge
JS Challenge
Interactive Challenge
Rate Limit

User Agent:
Googlebot
bingbot
GPTBot
OAI-SearchBot
PerplexityBot
ClaudeBot

Ray ID:
<curl_response_cf_ray>

重点记录这些字段:

字段 用途
Ray ID 把 curl 测试和 Cloudflare 事件串起来
Action 看到是 block、challenge、rate limit 还是 allow
Rule ID / Rule name 找到具体是哪条规则触发
User-Agent 只做线索,不做身份结论
Path 判断是否误伤公开产品页
Bot / Security service 判断来自 WAF、Bot Fight、Rate Limiting 还是自定义规则
Origin status 区分 Cloudflare 边缘层拦截还是源站返回

如果 Security Events 有拦截记录,而源站 access log 没有对应请求,说明请求没有到达 WordPress 或源站应用。
这时改主题、改 SEO 插件通常没用。

第四步:逐项检查 Cloudflare 规则位置

检查位置 常见误伤 怎么验证 处理口径
AI Crawl Control with WAF 对 AI crawler 的访问策略不符合业务目标,或被前置 WAF 规则影响 查看相关 WAF / AI crawler 规则命中 只按公开内容和业务风险决策
Managed robots.txt Cloudflare 管理的 robots 与站点预期不一致 拉取线上 robots.txt 对照源站 让线上版本和 SEO 策略一致
WAF Custom Rules http.user_agent contains "bot" 之类规则过宽 查 Security Events 的 Rule ID 规则收窄到恶意特征或敏感路径
Bot Fight / Super Bot Fight 把非浏览器请求挑战掉 对比普通 UA 和 crawler UA 公开内容页避免挑战
Rate Limiting 抓取一组产品页时返回 429 短时间多次 curl 测试 内容页和提交接口分开限速
User-Agent Blocking 误把搜索 / AI crawler 当垃圾爬虫 查 UA block 规则 不用宽泛 bot 直接阻断
Redirect Rules / Workers 把 crawler 带到错误语言、登录页或空页面 location 和最终 HTML 公开页面保持直达

这里不要直接写“放行所有 AI 爬虫”。
更稳妥的做法是:公开营销页面减少误拦,提交、后台、客户资料继续严格保护。

还有一个边界要写清楚:即使你在 AI Crawl Control 里允许某些 AI crawler,也要回头检查 WAF Custom Rules、Rate Limiting 和 Bot 相关规则。前置规则如果先 Block 或 Challenge,请求仍可能拿不到页面正文。

第五步:必要时用 Trace 做规则模拟

Cloudflare Trace 可以帮助你模拟某个 URL、User-Agent、请求头、地区等条件下会命中哪些规则。它适合做“规则会不会命中”的排查,不等于真实 crawler 已经访问。

可以把 Trace 结果和真实流量分开记录:

证据来源 能说明什么 不能说明什么
Trace 某个模拟请求可能命中哪些规则 真实 crawler 一定这样访问
Security Events 历史请求命中过哪些安全动作 页面是否被 AI 引用
源站 access log 请求是否到达源站 Cloudflare 边缘层之前发生了什么
Search Console / Bing 工具 搜索引擎侧抓取状态 ChatGPT / Perplexity 的引用结果

如果账户支持 Bot Management 字段,可以关注 verified_bot、bot score 或 bot 类别这类线索。不同 Cloudflare 套餐和产品能力不同,写排查 SOP 时不要假设每个站都有同样字段。

第六步:做一条观察规则,而不是全站白名单

排查阶段可以先用 Log 观察,不要一上来 Skip 全部安全规则。

Cloudflare WAF 自定义规则排查示例:

规则目的:
仅观察搜索和 AI crawler 相关请求,不直接放行。

Expression:
(
  http.host eq "www.example.com"
  and starts_with(http.request.uri.path, "/products/")
  and (
    http.user_agent contains "Googlebot"
    or http.user_agent contains "bingbot"
    or http.user_agent contains "GPTBot"
    or http.user_agent contains "OAI-SearchBot"
    or http.user_agent contains "PerplexityBot"
  )
)

Action:
Log

这类规则的价值是收集证据:哪些 URL 被请求、命中了什么策略、返回什么状态。
等证据稳定后,再决定是否对某些公开页面做精确例外。

第七步:把公开内容和敏感动作分层

外贸站常见错误,是用同一套 Cloudflare 策略处理所有路径。

公开内容层:
/products/
/category/
/case-studies/
/about/
/factory/
/faq/
/request-a-quote/

目标:
GET 请求返回 200 和完整正文。

敏感动作层:
/wp-login.php
/wp-admin/
/api/
/wp-json/forms/
/rfq-submit/
/upload/
/account/
/checkout/

目标:
鉴权、验证码、WAF、限速、日志审计。

公开 RFQ 说明页可以被读取,但 RFQ 提交接口必须保护。
这不是矛盾,是分层。

第八步:记录一个复盘表

日期 URL User-Agent 线索 状态码 Ray ID Cloudflare Action 初步判断 下一步
2026-08-13 /products/industrial-valve/ Googlebot 200 脱敏 Allow 可继续查内容 核对页面正文
2026-08-13 /faq/ PerplexityBot 403 脱敏 Managed Challenge 可能误伤公开 FAQ 查触发规则
2026-08-13 /request-a-quote/ OAI-SearchBot 429 脱敏 Rate Limit 说明页可能被限速 区分页面和提交接口

注意,表里写的是“User-Agent 线索”。
真实身份还需要结合官方 crawler 文档、IP 验证、DNS 验证或平台工具,不能只凭字符串判断。

容易误判的地方

误判 为什么不稳 更稳妥的做法
关掉 Cloudflare 就能解决 AI SEO 安全风险太大,也不一定是 Cloudflare 问题 定位具体规则和路径
模拟 UA 返回 200 就代表真实爬虫能访问 User-Agent 可伪造 结合 Security Events、源站日志和官方验证
所有 bot 都应该放行 恶意 bot 也会伪装 只对公开内容页做精确策略
robots.txt 允许就够了 WAF 在另一层 同时查响应、Security Events、源站日志
403 一定是坏事 后台和提交接口应该拒绝 按页面类型判断
AI Crawl Control 允许后就不会再被拦 其他规则仍可能先命中 同时检查 WAF、Bot、Rate Limiting 和 Security Events

改完后复测什么

  1. 首页、产品页、分类页、FAQ、案例、About、RFQ 说明页是否返回 200
  2. crawler User-Agent 模拟请求是否拿到真实 HTML。
  3. Security Events 里是否还有 block、challenge、rate limit。
  4. 源站 access log 是否能看到对应请求。
  5. 后台、提交接口、上传目录是否仍然被保护。
  6. robots.txt 的线上版本是否符合预期。
  7. 是否留下 Ray ID、URL、规则名和处理动作,方便下次复盘。

Cloudflare 不是 AI SEO 的敌人。问题通常出在规则太粗:该公开的产品信息被挑战,该保护的提交动作却没有单独处理。把这两层分开,才是外贸站更稳的做法。

参考资料

内卷越来越激烈,再不做好独立站,就真的晚了!

添加微信咨询

扫描二维码添加微信客服

联系我们

  • 微信同号: 13077312120
  • Email: service@wphuo.com
  • 地址: 工业设计城智点汇7楼701 佛山市顺德区工业大道32号