مقالې لارښود
最近看网站后台,日均访问量大概也就几千。
结果我打开Google Analytics一看,直接愣住了。
某一天的访问量突然飙到了两万多,我兴奋得不行,以为自己终于火了。结果仔细一看浏览器分布,90%的流量,全部来自一个叫「HeadlessChrome」的东西。
我问ChatGTP这是什么浏览器?是不是新的Chrome版本?
AI回答这不是浏览器。
这是机器人。

HeadlessChrome到底是什么
HeadlessChrome,顾名思义,就是Chrome的无头模式。Chrome大家都知道,就是你每天用的那个浏览器。无头模式呢,就是把这个浏览器的图形界面给砍了,让它在后台纯命令行运行。
没有地址栏,没有书签栏,没有任何你能看到的东西。它就是一段代码,调起一个浏览器内核,加载你的网页,然后把内容抓走。
真人用户是不可能用这种东西浏览网页的。你我打开Chrome,是为了看新闻、刷视频、逛تاؤبو。HeadlessChrome打开你的网页,是为了把你的数据扒下来走人。
所以当你在统计后台看到HeadlessChrome占比80%甚至90%的时候,你可以直接下结论,这些流量100%是机器人。
这些机器人流量都是哪来的
说真的,来源非常杂。
最常见的就是数据爬虫。有些公司或者个人,用Puppeteer、Playwright或者Selenium这些自动化框架,调起无头浏览器,批量抓取网页内容。有的是抓商品价格,有的是抓新闻文章,有的是抓竞品数据。
还有AI这块的。现在各种AI工具、AI搜索引擎、AI检索器,很多都在后台解析网页。你发一篇文章,可能有几十个AI Agent在同时读你的内容。
还有一种比较隐蔽的,就是你自己的定时任务。比如你部署了SEO监控脚本,每隔一小时去检查某个页面的排名变化,用的就是HeadlessChrome。或者你搞了个自动截图服务,定时给页面拍照,用的也是这玩意。
最烦的是最后一种,恶意扫描。自动化脚本跑过来,扫你网站的漏洞,试你的后台登录接口,甚至批量提交垃圾留言。
统计后台是怎么识别出HeadlessChrome的
其实很简单。每个浏览器在访问网页的时候,都会在请求头里带一个User-Agent字段,告诉服务器「我是谁」。HeadlessChrome的默认User-Agent里,就包含了「HeadlessChrome」这个字符串。你的统计系统一解析这个字段,就知道了。
但如果爬虫开发者稍微动点手脚,在代码里把User-Agent改成正常的Chrome或者Safari标识,你从统计后台就完全看不出来了。这才是真正让人头疼的地方。
لپارهCloudflare WAF精准拦截HeadlessChrome
好,问题找到了,怎么解决?
最直接有效的方案,就是在CDN或者WAF这一层进行拦截。不要等流量打到你的服务器上再处理,直接在门口就给它挡回去。
如果你用的是Cloudflare,操作其实非常简单。
登录你的Cloudflare控制台,选中目标域名,找到 安全性,然后点WAF,再进自定义规则,创建一条新规则。
规则名称随便填,比如「Challenge Headless Chrome」之类的,

能记住就行。
字段选User Agent,运算符选contains,值填HeadlessChrome.
这时候你会看到一条预览表达式,就是http.user_agent contains "HeadlessChrome"
然后在操作里选Managed ChallengeیاJS Challenge.
- 我建议选
Managed Challenge,因为它的验证方式更智能,对真实用户的影响更小。
最后点Deploy,这条规则就全球生效了。
Cloudflare在全球有几百个节点,配置秒级同步,基本上你点完按钮的那一瞬间,无头浏览器的流量就被拦住了。
防护盲区与进阶防范
但是,这里有个但是。
只靠匹配User-Agent,能解决绝大多数默认配置的爬虫。但遇到高手,就不够用了。
从Chrome 110开始,谷歌引入了一个新的无头模式,用--headless=new参数启动。这种模式下,HeadlessChrome的User-Agent跟普通Chrome完全一样,你根本区分不出来。
还有那种主动伪装的。爬虫开发者在代码里直接把User-Agent替换成正常的Chrome或者手机浏览器标识,你用再精确的规则也匹配不到。
针对这种情况,Cloudflare还有两个更高级的功能可以开。
第一个叫Browser Integrity Check,浏览器完整性检查。
开启路径是 安全性→ 设置→ 浏览器完整性检查,把这个开关打开。

它会通过TLS指纹来识别异常流量,就算你把User-Agent伪装得再像,TLS指纹是伪装不了的。
第二个叫Bot Fight Mode,机器人战斗模式。
路径是 安全性→ 自动程序 → Bot Fight 模式,同样打开。

这个功能会结合行为特征来判断流量是不是机器人,比如请求频率、鼠标移动轨迹、页面停留时间等等。
免费版开启后会对可疑机器人自动应用托管质询,付费版可以配置更精细的规则。
从垃圾邮件到爬虫,攻防从未停止
说到这里,我突然想到了一件事。
其实这种攻防对抗,在互联网历史上一直都在上演。早些年垃圾邮件泛滥的时候,也是这样,你封了一个特征,对方就换一个特征。你用关键词过滤,对方就把敏感词拆开写。你用频率限制,对方就降低发送频率。
到了今天,变成了网站和爬虫之间的对抗。你用User-Agent过滤,对方就伪装User-Agent。你用TLS指纹识别,对方就开始研究怎么模拟TLS指纹。
技术在变,但底层的博弈逻辑从来没变过。
不过话说回来,对于我们大多数网站所有者来说,做到前面那一步已经够用了。
80%的HeadlessChrome流量都是懒得伪装的默认配置爬虫,一条WAF规则就能解决。至于那些高级伪装的,除非你有特别敏感的数据需要保护,否则没必要过度焦虑。
把该开的功能都开上,基本就稳了。
最后我想多说一句。
很多人觉得,网站流量越多越好。但如果你分不清哪些是真人、哪些是机器人,那些暴涨的数字对你来说就只是虚荣指标。甚至会误导你的判断,让你以为某个内容特别受欢迎,结果只是某个爬虫恰好在批量抓你这个页面。
看清流量的本质,比追求流量的数字,重要得多。
这篇文章,如果你身边有做网站或者做SEO的朋友,可以转发给他们看看。很多人可能还不知道自己的网站正被大量机器人刷着,也不知道解决起来其实这么简单。
څرنګه چې تاسو تر دې دمه لوستلي دي، که تاسو ګټور وموندل، مهرباني وکړئ خوښ یې کړئ او شریک یې کړئ. که تاسو غواړئ لومړی تازه معلومات ترلاسه کړئ، تاسو کولی شئ ما تعقیب کړئ!
زما د مقالې د لوستلو لپاره مننه. بل ځل به سره ګورو.
امید چن وییلینګ بلاګ ( https://www.chenweiliang.com/ ) 分享的《HeadlessChrome异常流量爆表?Cloudflare 3步彻底拦截指南(附WAF规则)》,对您有帮助。
د دې مقالې لینک شریکولو لپاره وړیا احساس وکړئ: https://www.chenweiliang.com/cwl-34500.html
