|
|
本帖最后由 MasterCard 于 2026-2-16 19:44 编辑
直接AI还原效果不够好 我让AI花10秒生成了个babel插件简单处理了下 下面是chatgpt生成的分析报告
下面是去混淆 + 重命名 + 结构整理后的可读版本。逻辑没有改变,只是把变量名还原为有意义的名称,并修复了乱码文本。
✅ 还原后的可读版本
超出loc字数限制了
https://pastebin.com/PzwyyuwR
这套代码目前实现更偏向教学级行为验证示例,在对抗真实自动化环境方面缺少完整性校验、环境一致性检测以及 challenge 绑定机制。如果要用于生产,需要补充环境篡改检测、深度 WebDriver 识别以及 PoW 防重放机制。
一、核心问题分析
1️⃣ 所有逻辑完全可重放
当前逻辑:
risk 计算在前端
pow 在前端
tapProof 在前端
所有字段可篡改
2️⃣ 风险模型太线性
当前 risk 算法:
risk = 基础值
- eventScore * 0.4
- entropy * 0.15
- distance * 0.1
- time * 某比例
+ webdriver * 0.35
问题:
权重固定
可预测
无随机扰动
无多维统计特征
攻击者只需:
模拟鼠标移动
加长时间
控制轨迹
即可把 risk 压到 0.1 以下。
这是典型“静态阈值模型”。
3️⃣ PoW 只是 CPU 限速,不是安全机制
PoW:
无 salt 绑定 IP
无服务器签名
prefix 可预测
可并行
可预计算
而且:
nonce = counter.toString(36)
太简单。
真正的防重放 PoW 需要:
服务器下发 challenge
challenge 内含签名
包含过期时间
包含客户端指纹
否则可直接离线算好。
4️⃣ 完全没有环境完整性检测
这是最明显的缺失。
没有:
原型链污染检测
Function.prototype.toString native 校验
WebDriver 深度检测
headless 特征检测
canvas / audio 指纹
stack trace 检测
DevTools hook 检测
VM 执行环境检测
debugger trap
现在的检测级别是:
navigator.webdriver
这在 2026 年属于玩具级检测。
二、可以给出的专业改进建议
下面这些是“真正 anti-bot 级别”的方向。
1️⃣ 原型链完整性校验
检测是否被 Hook:
function isNative(fn) {
return /\{\s*\[native code\]\s*\}/.test(Function.prototype.toString.call(fn));
}
const checks = [
isNative(window.fetch),
isNative(JSON.stringify),
isNative(Object.getOwnPropertyDescriptor),
isNative(Element.prototype.appendChild),
];
攻击者常用:
重写 fetch
重写 addEventListener
注入 Proxy
可以增加:
Object.getPrototypeOf(fetch) === Function.prototype
2️⃣ 深层 WebDriver 检测
不只是:
navigator.webdriver
还可以:
'chrome' in window
navigator.plugins.length
navigator.languages
permissions.query({name:'notifications'})
检测:
Headless Chrome
Playwright
Puppeteer
Selenium
CDP 注入
3️⃣ Stack Trace 检测
自动化环境常见 stack:
try {
null.f();
} catch (e) {
console.log(e.stack);
}
查找:
puppeteer
playwright
selenium
puppeteer_evaluation_script
at evaluate
4️⃣ 时间抖动检测
自动化通常:
事件间隔极稳定
执行极线性
可以做:
const deltas = [];
// 统计间隔标准差
检测:
是否符合人类随机性
5️⃣ 真正的 PoW 设计建议
改为:
服务器返回:
{
challenge: "...",
expires: 123456,
sig: HMAC(challenge, serverSecret)
}
客户端算:
sha256(challenge + nonce)
服务器验证:
签名是否正确
是否过期
是否重复
否则现在这个 PoW 可以被重放。
6️⃣ VM / DevTools 检测
可以加入:
debugger timing trap
const t = performance.now();
debugger;
if (performance.now() - t > 100) suspicious++;
Console hook 检测
const original = console.log;
console.log = function(){};
if (!isNative(original)) suspicious++;
7️⃣ VM 混淆建议
当前代码:
完全可读
结构明显
没有自校验
可以加入:
字符串数组动态解码
控制流平坦化
死代码混淆
runtime integrity hash
自毁机制
例如:
if (sha256Hex(sourceCode) !== expected) {
throw new Error("tampered");
}
8️⃣ 行为模型升级建议
可以加入:
曲率统计
轨迹方向变化率
鼠标加速度
scroll inertia
点击前 hover 时间
键盘节奏统计
现在的:
distance + entropy
太基础。
总结
这套代码的问题:
维度 等级
行为采集 入门级
风险模型 线性可预测
PoW 可重放
环境检测 几乎没有
抗自动化 极弱
抗 hook 无
如果你愿意,我可以帮你写一份:
✅ 进阶版 anti-bot 结构设计图
✅ 带完整性检测的强化版客户端框架
✅ 生产级 challenge + PoW 协议设计
|
|