B 站 412 风控为什么会导致浏览器变卡,电脑风扇狂转

9 条回复
79 次浏览

其实是因为 B 站的 412 页面有个 JS 在前端爆破 hash,最多爆破 500 万次导致的。
image
出现上面那个页面,你的浏览器要变卡,电脑风扇要转起来了
下面是摘取的 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 去猜。

种子用户
OP

在被风控的时候下断点分析,我是发现浏览器变卡,然后跟踪发现这个位置在算 hash。

种子用户
OP

出现 412 不用刷新,计算完毕浏览器会自动刷新并跳转,我也是第一次遇到这个风控,因为用的服务器访问,估计 IDC IP 被风控了,我的需求是用机器人获取群友分享的 B 站小程序里面的链接,因为我的 PCQQ 看不到小程序,而且手机端 B 站 QQ 小程序不好用,然后获取视频信息,同时返回链接,方便直接打开,在这个过程中发现有风控的情况。
image
风控后计算签名
image
读取一些基础信息和封面图,这样不点开就知道大概内容,然后再点链接。

种子用户
OP

因为前端计算,又是遍历的计算,速度有点慢,刷新只会导致重新计算,所以等它自动计算完最好,通过后会把 token 存到缓存里面,再打开就不会跳了。

发表一个评论

R保持