HeadlessChrome iri kusangana netraffic yakawandisa zvisina kujairika here? Gwaro reCloudflare rine matanho matatu ekuivhara zvachose (nemitemo yeWAF)

最近看网站后台,日均访问量大概也就几千。

结果我打开Google Analytics一看,直接愣住了。

某一天的访问量突然飙到了两万多,我兴奋得不行,以为自己终于火了。结果仔细一看浏览器分布,90%的流量,全部来自一个叫「HeadlessChrome」的东西。

我问ChatGTP这是什么浏览器?是不是新的Chrome版本?

AI回答这不是浏览器。

这是机器人。

HeadlessChrome iri kusangana netraffic yakawandisa zvisina kujairika here? Gwaro reCloudflare rine matanho matatu ekuivhara zvachose (nemitemo yeWAF)

HeadlessChrome到底是什么

HeadlessChrome,顾名思义,就是Chrome的无头模式。Chrome大家都知道,就是你每天用的那个浏览器。无头模式呢,就是把这个浏览器的图形界面给砍了,让它在后台纯命令行运行。

没有地址栏,没有书签栏,没有任何你能看到的东西。它就是一段代码,调起一个浏览器内核,加载你的网页,然后把内容抓走。

真人用户是不可能用这种东西浏览网页的。你我打开Chrome,是为了看新闻、刷视频、逛Taobao。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标识,你从统计后台就完全看不出来了。这才是真正让人头疼的地方。

shandisaCloudflare WAF精准拦截HeadlessChrome

好,问题找到了,怎么解决?

最直接有效的方案,就是在CDN或者WAF这一层进行拦截。不要等流量打到你的服务器上再处理,直接在门口就给它挡回去。

如果你用的是Cloudflare,操作其实非常简单。

登录你的Cloudflare控制台,选中目标域名,找到 安全性,然后点WAF,再进自定义规则,创建一条新规则。

规则名称随便填,比如「Challenge Headless Chrome」之类的,

登录你的Cloudflare控制台,选中目标域名,找到 安全性,然后点WAF,再进自定义规则,创建一条新规则。

能记住就行。

字段选User Agent,运算符选contains,值填HeadlessChrome.

这时候你会看到一条预览表达式,就是http.user_agent contains "HeadlessChrome"

然后在操作里选Managed ChallengekanaJS 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 模式,同样打开。

路径是 安全性→ 自动程序 → Bot Fight 模式,同样打开。

这个功能会结合行为特征来判断流量是不是机器人,比如请求频率、鼠标移动轨迹、页面停留时间等等。

免费版开启后会对可疑机器人自动应用托管质询,付费版可以配置更精细的规则。

从垃圾邮件到爬虫,攻防从未停止

说到这里,我突然想到了一件事。

其实这种攻防对抗,在互联网历史上一直都在上演。早些年垃圾邮件泛滥的时候,也是这样,你封了一个特征,对方就换一个特征。你用关键词过滤,对方就把敏感词拆开写。你用频率限制,对方就降低发送频率。

到了今天,变成了网站和爬虫之间的对抗。你用User-Agent过滤,对方就伪装User-Agent。你用TLS指纹识别,对方就开始研究怎么模拟TLS指纹。

技术在变,但底层的博弈逻辑从来没变过。

不过话说回来,对于我们大多数网站所有者来说,做到前面那一步已经够用了。

80%的HeadlessChrome流量都是懒得伪装的默认配置爬虫,一条WAF规则就能解决。至于那些高级伪装的,除非你有特别敏感的数据需要保护,否则没必要过度焦虑。

把该开的功能都开上,基本就稳了。

最后我想多说一句。

很多人觉得,网站流量越多越好。但如果你分不清哪些是真人、哪些是机器人,那些暴涨的数字对你来说就只是虚荣指标。甚至会误导你的判断,让你以为某个内容特别受欢迎,结果只是某个爬虫恰好在批量抓你这个页面。

看清流量的本质,比追求流量的数字,重要得多。

这篇文章,如果你身边有做网站或者做SEO的朋友,可以转发给他们看看。很多人可能还不知道自己的网站正被大量机器人刷着,也不知道解决起来其实这么简单。

Sezvo waverenga kusvika pari zvino, kana wawana zvichibatsira, ndapota tumira like uye share. Kana uchida kugamuchira nhau dzichangoburwa, unogonawo kunditevera!

Ndatenda nekuverenga chinyorwa changu. Tichaonana nguva inotevera.

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Mupumburu TOP