9月15日,Cloudflare会对一批站点默认启用新的AI爬虫拦截策略,范围是新增域名、新开的站点、从没动过爬虫设置的免费账号。默认动作:带广告的页面屏蔽 Training(训练)和Agent(代理)两类爬虫,Search(搜索)类放行。
听着是好事,但有个坑。Googlebot、Bingbot这类爬虫是"混合用途",既做搜索索引,又给AI喂数据。按Cloudflare的规则,只要你选了"屏蔽Training",这些混合爬虫会一起被挡,你的站就从Google搜索结果里消失了。
别一刀切,先用风险画像区分
你怎么知道请求你网站的是真Googlebot,还是顶着Googlebot名义的采集机器人?看IP风险画像。
真Googlebot的出口IP集中在谷歌的ASN段(AS15169),真人概率高、代理状态干净。冒充的采集机器人,IP大多来自IDC机房、代理节点或秒拨池,风险画像一查就能现形。
IP风险画像区分真Googlebot与伪装采集器对比图
代码落地
与其手动猜,不如在网关层做一层校验。以IP数据云的风险画像接口为例,对访问来源IP做识别:
import requests def _to_int(v, default=0): try: return int(v) except (TypeError, ValueError): return default def check_bot(ip, api_key): url = "https://api.ipdatacloud.com/v2/risk" params = {"ip": ip, "key": api_key} try: resp = requests.get(url, params=params, timeout=3) resp.raise_for_status() data = resp.json() except (requests.exceptions.RequestException, ValueError): return None if data.get("code") != 200: return None info = data.get("data", {}) return { "ip": ip, "asn": info.get("asn"), # 兼容驼峰/下划线两种字段命名 "is_proxy": info.get("isProxy", info.get("is_proxy")), "real": _to_int(info.get("real")), "risk_score": info.get("riskScore", info.get("risk_score")), } def is_googlebot(r): # 兼容 "AS15169" / "15169" / 15169 三种写法 asn = str(r.get("asn", "")).upper().replace("AS", "", 1) return asn == "15169" and r.get("real", 0) > 90 for ip in ["66.249.64.1", "203.0.113.10"]: r = check_bot(ip, "你的key") if r is None: print(f"{ip} -> 查询失败,跳过") elif is_googlebot(r): print(f"{ip} -> 放行真Googlebot: {r}") else: print(f"{ip} -> 需二次验证: {r}")IP风险画像三信号识别AI爬虫决策链路示意图
把ASN归属、真人概率、代理状态三个信号拼起来,真爬虫和伪装的采集器就分开了。Search类爬虫放心放行,Training和Agent按你9月15日之后的策略处理,两不耽误。
最后
Cloudflare这轮默认策略,是把"拦不拦AI爬虫"的选择权交回给站长。可要选,得先认得清对方是谁。9月15日之前把风险画像的校验接到网关里,你的站不会被误伤出 Google,也不至于被AI爬虫白嫖。
数据来源
- Cloudflare官方博客《AI Crawl Control》与9月15日默认策略说明
- Cloudflare Radar 2026年6月互联网流量报告(非人类流量57.4%)
- Search Engine Roundtable关于Googlebot/Applebot爬虫IP识别报道