Sukka 写前端、网络和基础设施时,习惯先把边界和代价摊开。把「从 Cloudflare API 获取被 Cloudflare WAF 拦截的 IP 并提交给 AbuseIPDB | Sukka's Blog」整理成可落地的中文笔记:问题在哪、默认做法会踩什么坑、该怎么选。原站导航和广告已去掉。
问题从哪来
由于「 隐私政策 」于 2020 年 5 月 27 日更新,已经不再将被 Cloudflare WAF 拦截的 IP 提交给 AbuseIPDB。
「Bot Fight Mode」启用后 Cloudflare 会检查请求是否发自 Bad Bot(恶意爬虫)、通过消耗 Bad Bot 的 CPU 资源来对抗 Bad Bot,并会通过植树来补偿 Bad Bot 带来的碳排放;关于我的 Firewall Rules 可以查看我的开源项目 cloudflare-block-bad-bot-ruleset ,在这个项目中我开源了我使用的其中非常小一部分的 Firewall Rules。
常见做法为什么不够
我采取的方案是:我编写的 WAF 规则远比 Cloudflare 的「Bot Fight Mode」严格许多,可以匹配到更多恶意爬虫(和无恶意的爬虫);通过 Cloudflare API 获取 Firewall Events 日志,获取所有被拦截的 IP,去重以后全部提交给 AbuseIPDB 。
首先是获取 Cloudflare 的 API Token。Cloudflare 最近终于支持 API Token 权限细分了,支持在不同服务、不同功能、读写操作等维度设置 API Token 的权限。使用新的 API Token 以后可以不需要使用 X-Auth-Mail X-Auth-Key 、可以直接使用 Authentication: Bearer [API Token] 这样的 HTTP Simple Auth 请求 Cloudflare API。
更稳的做法
前往 Cloudflare Dashboard 的「My Profile」,在「API Token」面板点击「Create Token」创建一个新的 Token,名字随意、权限设置如下图所示:
需要包含的域名也根据需要设置,不过每个 API Token 的权限自然是越小越好,所以最好使用「Specific Zone」。
落地检查
const fetch = require ( 'node-fetch' ) ; const FormData = require ( 'form-data' ) ; const { env } = process ; // 从环境变量读 API Key 等配置 const cfApiKey = env . CF_API_KEY ; // Cloudflare 的 API Token const cfZoneId = env . CF_ZONE_ID ; // Cloudflare 上指定域名的 Zone ID const abipdbKey = env . ABUSEIPDB_KEY ; // AbuseIPDB 的 Key const now = new Date ( ) . getTime ( ) ; const since = new Date ( now – 86400 * 1000 ) . toISOString ( ) ; const until = new Date ( now ) . to
接下来是利用 Travis CI 实现自动化。在 Travis CI 上为项目设置环境变量(注意 API Key 等需要设置为 Secret),设置 Cron 以实现每天定时运行一次:
落地时建议先做的 5 件事
- 用自己的流量和设备测,不要只抄厂商推荐最小配置。
- DNS、CDN、代理分流先画清 Fake IP 和 Real IP 的边界。
- 前端性能看 CLS、白屏和重复渲染,而不是只看打包体积。
- 基础设施变更走 Git,能复现、能回滚。
- 结论写成可检查的清单:接口、超时、失败样本、回滚版本。
和智能体产品怎么接
龙虾PRO做 OpenClaw 落地时,网络、DNS 和前端性能笔记最有用的是「边界」:哪一层该加速、哪一层不该假装智能。数字员工调用外部能力前,先把超时和失败路径写死。
本文侧重全链路风控方法论。落地时请用自身业务单据做回放验证,不要把示例阈值直接当生产策略。 相关:风控体检 · 方案资源
常见问题 FAQ
什么是AI智能系统?
「AI智能系统」可概括为:由于「 隐私政策 」于 2020 年 5 月 27 日更新,已经不再将被 Cloudflare WAF 拦截的 IP 提交给 AbuseIPDB。 本文从定义、方法与实践要点展开说明。
为什么要关注AI智能系统?
关注AI智能系统,是因为它直接影响效率、风险与可复制性。文中指出:由于「 隐私政策 」于 2020 年 5 月 27 日更新,已经不再将被 Cloudflare WAF 拦截的 IP 提交给 AbuseIPDB。
如何落地AI智能系统?有哪些关键步骤?
建议按以下路径推进AI智能系统:1) 用自己的流量和设备测,不要只抄厂商推荐最小配置。;2) DNS、CDN、代理分流先画清 Fake IP 和 Real IP 的边界。;3) 前端性能看 CLS、白屏和重复渲染,而不是只看打包体积。;4) 基础设施变更走 Git,能复现、能回滚。;5) 结论写成可检查的清单:接口、超时、失败样本、回滚版本。。细节见正文对应章节。
AI智能系统适合哪些人或团队?
AI智能系统更适合:产品/技术负责人、运营与增长团队、需要落地智能体或自动化的中小团队、关注「AI智能系统」方向的读者。若你只需要单次聊天式问答,可先读概念;若要上生产,请重点看步骤、权限与风控相关段落。
关于「问题从哪来」,本文给出了什么结论?
在「问题从哪来」部分,要点是:会通过植树来补偿 Bad Bot 带来的碳排放;关于我的 Firewall Rules 可以查看我的开源项目 cloudflare-block-bad-bot-ruleset ,在这个项目中我开源了我使用的其中非常小一部分的 Firewall Rules。 常见做法为什么不够 我采取的方案是:我编写的 WAF 规则远比 Cloudflare 的「Bot Fight Mode」严格许多,可以匹配到更多恶意爬虫(和无恶意的爬虫);通过 Cl
关于「常见做法为什么不够」,本文给出了什么结论?
在「常见做法为什么不够」部分,要点是:shboard 的「My Profile」,在「API Token」面板点击「Create Token」创建一个新的 Token,名字随意、权限设置如下图所示: 需要包含的域名也根据需要设置,不过每个 API Token 的权限自然是越小越好,所以最好使用「Specific Zone」。 落地检查 const fetch = require ( 'node-fetch' ) ; const FormData = require ( 'f