61DH61DH
Home
Diary
English
Tools
Photography
Health
Tech
Home
Diary
English
Tools
Photography
Health
Tech
  • 日记

    • 前言
    • Scraper(爬虫)异常流量排查与处理记录
    • Windows MongoDB Restore 性能排查记录
    • pnpm 10 也可以管理项目指定的 pnpm 版本
    • Node.js、nvm、Corepack 与 pnpm 环境说明
    • 装修故事 3|厨房
    • 装修的故事二 · 卫生间
    • 装修的故事一 · 选柜子
    • 讨好 Google,不是一件容易的事
    • VS Code 中 Markdown 粘贴图片工作流(VuePress)
    • Best Buy 与我的电器店记忆:从 2001 到今天的一次“退货又下单”
    • 中国流量异常日记
    • 我的 iPhone 17 Pro 首日开箱记
    • Perplexity 是流氓软件吗?– 一个技术站长的实录与更正
    • 给 VuePress 添加评论系统:Waline 实战指南
    • 从“骨瘤?”到“脂肪瘤”:我的第一次手术日记
    • Coffee Sleeve 是什麼?
    • 一次 Maker 升级到 SKY 的实操:从 Coinbase 到 MetaMask,再谈钱包安全
    • Skyoo「脑力素」广告很火,但靠谱吗?
    • 回国礼物推荐:清单与避坑指南
    • 厨房装修小记:岛台移除后的地板方案
    • 苹果 2025 发布会小记
    • VuePress v2 index.scss 覆盖问题笔记
    • 康师傅酸梅汤:异乡小记
    • 升级笔记:VuePress 从 2.0.0-beta.51 到 ^2.0.0-rc.24
    • 旧日记
2026/08/29

Scraper(爬虫)异常流量排查与处理记录

背景

2026 年 8 月,网站流量出现异常:GA4 Pageview 明显增加、广告 Impression 未按相同比例增加,且部分数据页面访问量上升。请求来自持续变化的数据中心和住宅网络 IP,单个 IP 的访问量不一定很高。

结合服务器 access log、Cloudflare 与 GA4 数据,确认其中存在比较明显的自动化数据抓取行为。

访问特征

可疑请求有一组稳定的共同特征:

  • Linux、X11、Chrome。
  • IP 持续轮换,访问页面较分散。
  • 打开页面后数秒内继续调用前端 API。

这表明至少部分 scraper 并非只下载 HTML,而是运行完整或接近完整的浏览器环境:

访问页面
   ↓
执行前端代码
   ↓
调用相关 API

这也解释了流量会进入 GA4。Pageview 明显增加但广告 Impression 不成比例,说明这些自动化浏览器可能执行了 JavaScript,却没有像正常用户一样完整加载、等待或显示广告。

Cloudflare Challenge 的效果与局限

先后使用过 Cloudflare Managed Challenge 与 Interactive Challenge。Interactive Challenge 的流程是:

请求
 ↓
Challenge
 ↓
失败 → 拒绝
成功 → 允许继续访问

实测 Challenge Solve Rate 约 2%。这表示 Challenge 挡住了绝大多数尝试,但无法根除后续垃圾流量:大规模 scraper 若有 1,000 次尝试,即使只有约 20 次成功,成功的 session 仍可继续访问很多页面。

日志也观察到过以下链路:

Cloudflare 发出 Interactive Challenge
             ↓
          约几十秒
             ↓
同一个 IP / Browser 成功访问网站
             ↓
          几秒以后
             ↓
       继续调用前端 API

因此只能确认少量 scraper session 能通过 Interactive Challenge;不能据此判断 Challenge 本身已被破解。可能原因包括完整浏览器自动化、人工参与或第三方 solving service,日志无法确定具体方式。

改为直接 Block

IP 轮换太快,逐个封锁没有实际意义。异常流量中较稳定的共同特征是 Linux + X11,因此 Cloudflare 规则调整为:

Linux
+
X11
+
排除 Android
+
排除 Verified Bot
→ BLOCK

这条规则不以具体 IP 为主要条件。

效果验证

Block 后,GA4 中异常 Linux 流量很快下降。期间做过一次对照:

Block
   ↓
改成 Interactive Challenge
   ↓
异常流量重新出现
   ↓
改回 Block
   ↓
异常流量再次明显下降

结论:对当前这批 scraper,直接 Block 比 Interactive Challenge 有效。Challenge 允许少量成功的 session 继续访问;Block 则会直接拒绝符合条件的请求。

Residential Proxy 的迹象

可疑流量同时包含两种来源:

自动浏览器 → 数据中心 / Proxy IP → 大量轮换
自动浏览器 → Residential Proxy → 大量住宅网络 IP

住宅代理的 IP 看起来像普通家庭用户,但大量不同住宅 IP 表现出相似的 Linux/Chrome 特征与数据访问行为,不像正常用户。

因此不应把 IP、ISP 或 ASN Block 作为长期主要方案,以免误伤真实用户。

为什么仍然暴露 Linux

User-Agent 容易修改,但伪装完整 browser fingerprint 更难。可能的 worker 架构为:

Linux Server / Container
          ↓
       Chromium
          ↓
 Browser Automation
          ↓
        Proxy
          ↓
         网站

在此前可正常抓取时,无需改变环境。即使 User-Agent 改成 Windows,浏览器仍可能通过 Client Hints、JavaScript API、字体、WebGL、屏幕、时区、TLS/HTTP 等暴露真实环境。

当前策略与后续观察

目前继续使用 Linux + X11、排除 Android 与 Verified Bot 的 Block 规则,暂不扩大范围:

  1. 对当前 scraper 效果明显,异常 Linux 流量已下降。
  2. 暂未发现明显的正常流量损失。
  3. 无需追踪不断变化的 IP,也避免因住宅代理误封正常 ISP。

接下来观察 scraper 是否切换为 Windows 或 macOS fingerprint。若有类似异常访问重新出现,再组合比对:

Browser / OS
+
User-Agent
+
网络来源
+
访问内容与频率
+
Referer
+
前端执行行为

总结

不要把 IP 当作识别 scraper 的主要依据。现代 scraper 可以使用数据中心代理、住宅代理、大量轮换 IP,并运行完整浏览器与 JavaScript。

更有效的做法是综合浏览器与操作系统特征、访问行为与频率、网络来源、前端执行行为,找出稳定且误伤较小的共同特征再 Block。目前先以 Linux/X11 控制这批异常流量,并持续观察其 fingerprint 是否改变。

Last Updated: 8/30/26, 10:41 PM
Contributors: Adam C
Prev
前言
Next
Windows MongoDB Restore 性能排查记录