B 站 412 风控为什么会导致浏览器变卡,电脑风扇狂转
其实是因为 B 站的 412 页面有个 JS 在前端爆破 hash,最多爆破 500 万次导致的。

出现上面那个页面,你的浏览器要变卡,电脑风扇要转起来了
下面是摘取的 412.js 里面的一段 JS
function pow1(_0xc30a94, _0x57d780) {
const _0x2d903e = {
'EiKLf': function(a, b) { return a < b; },
'pLKoU': function(fn, arg) { return fn(arg); },
'wetnk': function(a, b) { return a + b; }
};
let _0x58037b = 0x4c4b40; // 十六进制:0x4c4b40 = 5,000,000
for (let _0x3542f9 = 0; _0x2d903e.EiKLf(_0x3542f9, _0x58037b); _0x3542f9++) {
if (sha256(_0x2d903e.wetnk(_0xc30a94, _0x3542f9)) == _0x57d780)
return _0x3542f9;
}
}
为什么要算这个 hash,因为风控页面请求了一个接口,需要将接口返回的数据和一个随机数拼起来做 hash,随机数的范围就是 500 万,所以挨个代入计算,当指定的数值参与计算得到的 hash 与接口返回的一致,那就说明这个数是服务端计算的时候用的数,将指定的数据和这个数字返回给服务端,服务端则放行。
这么设计实际上是为了防止直接请求 API,因为正常用户用浏览器打开页面,那么就会执行 JS,自动计算并通过,如果是机器人请求 API,这些 JS 就不会执行,就会被拦截下来。正常用户被拦截后后台会自动执行 JS,无感知(浏览器和电脑觉得有点累)通过。
再直白点就是服务端生成随机数,让客户端用 JS 去猜。


技术贴哇,这是怎么发现的