周三下午三点十七分,Anker联盟后台突然弹出一条预警。React 18.3.1 里那个 useEffect 的依赖数组还没理清,光标还停在空括号上。172 次点击,全部落在同一个广告位。IP 全挤在华东家庭宽带的光猫池里——MAC 地址可验,iPhone 14 Pro 序列号在 Apple GSX 白名单里查得明明白白。Click Fraud Shield v4.2 的日志翻到底,连一个 warning 都没冒出来。
不是漏报。是规则引擎自己把判断权交出去了。
鼠标悬停比我还像人
PatPat Q1 的数据翻出来看,73% 的异常流量背后,设备 ID 和网络层完全合规。光猫没虚拟化,iOS 没越狱,UA 字符串甚至带上了 Safari 17.5 的完整特征串。
问题不在指纹,而在节奏。
鼠标在广告位上方悬停 1.8 秒左右,标准差只有 0.4 秒。页面停留时间分布曲线,硬生生贴着泊松过程的 λ=42.6 拟合。DOM 交互点被按用户画像分群打散——母婴类目偏爱首屏右下角热区,极客类目则集中在控制台可触发区域。
你还在调 IP 阈值?人家已经把行为熵压进了你生理节律的波动包络里。
去年有团队用 MouseFlow 录了三组对比视频:真人刷单、AutoHotKey 脚本、以及他们自己写的带随机抖动的 PyAutoGUI 挂机程序。三段轨迹叠在一起,人眼几乎分不出哪条是真人。但 Higuchi 算法算出来的分形维数,真人稳定在 1.28±0.15,两个脚本分别卡在 1.03 和 1.07。不是动作像不像,是“不像”的地方太规律。
装 Ollama 我踩过的坑
<script src="https://cdn.yh.blog/ai-entropy@2.3.1.min.js"></script>
就这一行。
它拉起一个独立 WebWorker,里面跑着三个模块:Higuchi 算法实时算鼠标轨迹分形维数;Page Visibility API 配合 document.hasFocus() 建模非齐次泊松过程;MutationObserver 监听真实用户触发的 DOM 事件密度。它们互不通信,也不改你任何一行业务代码。
Higuchi 模块认的不是轨迹长度,是拐点密度与空间填充效率的比值。挂机脚本再加随机延迟,也绕不开分形维数塌缩到 1.09 以下的事实。泊松模块不假设固定 λ,而是每 30 秒滚动更新基线,残差一旦超 2.1σ,立刻标红。MutationObserver 专门过滤掉 React 18.3.1 的 re-render 伪事件,只抓 click、keydown、pointerup 这些主动触发节点——SPA 路由跳转不算,history.pushState() 这种更不算。
有次本地测试,我把鼠标放桌上不动,插件五秒后开始闪烁黄标。我伸手碰了下触控板,标变绿。再静止八秒,又黄。它认的不是“有没有动作”,是动作背后的节奏拓扑。
报告不是红灯,是能拆开细看的活体切片
它不输出“检测到异常”。输出的是结构化对象:
ad_slot_id: "patpat-cn-taobao-union-03"
channel_tag: ["taobao", "cpa", "maternal"]
entropy_profile: {"fractal_dim": 1.05, "poisson_residual": 2.38, "dom_density": 0.12}
某跨境 DTC 品牌接入后,插件连续三次捕获熵分>85 的渠道,自动冻结该子渠道 CPA 结算,并往 Adjust SDK 的 attribution_callback 接口推送反向验证请求。虚假激活率降了 61%,有效转化率反而涨了 14%。不是模型变准了,是噪声剔掉之后,归因权重终于落回真实用户身上。这点我反复核对过他们 BI 里的 event_time 和 install_time 分布,确实更紧凑了。
报告里那个 entropy_profile 字段,其实是三个维度各自标准化后的加权和。但真正有用的是拆开看——比如某次报警,fractal_dim 正常,poisson_residual 飙升,dom_density 却偏低。一查发现是某安卓厂商浏览器在后台标签页里偷偷预加载广告 iframe,用户根本没看到,但页面停留时间被算进去了。这时候你不能直接封 IP,得去跟厂商谈预加载策略。
熵不会撒谎,但会被人骗
上周给一个做母婴电商的团队部署时,他们差点把咖啡杯放在触控板上跑压测。插件立刻把那段 30 秒静默判成挂机休眠。
后来我们加了 PointerEvent.capture() 状态校验,再叠一层 document.visibilityState 判断——用户真在喝咖啡,页面是 visible 但指针没 capture;挂机脚本想模拟这个,就得伪造 capture 状态,而伪造本身会留下 MutationObserver 可捕的痕迹。
泊松基线这事,真栽过跟头。去年一家电商联盟在 iOS 17.5 上开了 App Tracking Transparency,同一台 iPhone 的页面停留时间分布 λ(t) 突然偏了 35% 以上——不是小数点后两位的抖动,是整个分布塌了一角。我们后来把设备指纹哈希当锚点,让基线能跨会话自动校准熵漂移。设备指纹本身不可信,但它的漂移轨迹,每台都不一样,也值得单独存下来。
刷量工具迭代比文档更新快得多。上周刚上线的风控规则,这周五就发现鼠标轨迹分形维数在 1.27~1.33 区间反复震荡——而正常用户是 1.42±0.08。页面停留时间泊松分布的 λ 偏离超过 2.3σ,DOM 交互稀疏度矩阵里连续三帧无 eventTarget 的节点占比突然升到 61%。这些数字自己在报警,只是以前我们总想先归类再响应。
评论