先看网站,两个521,紧接着才是200
第一个521
写代码看一下第一次返回的什么
<script>document.cookie = ('_') + ('_') + ('j') + ('s') + ('l') + ('_') + ('c') + ('l') + ('e') + ('a') + ('r') + ('a') + ('n') + ('c') + ('e') + ('=') + (-~false + '') + ((1 + [2]) / [2] + '') + (~~'' + '') + (5 + '') + (~~'' + '') + (2 + 5 + '') + (2 + 4 + '') + ((1 << 2) + '') + (8 + '') + (6 + '') + ('.') + (1 + 7 + '') + (~~{} + '') + (-~[5] + '') + ('|') + ('-') + (-~0 + '') + ('|') + ('A') + ('B') + ('K') + ('%') + (2 + '') + ('B') + (1 + 2 + '') + ('j') + ('u') + ('H') + ('p') + ('A') + ('p') + ('L') + ('j') + ('Y') + ('U') + ('g') + ('H') + ('A') + (-~{} + '') + ('l') + ('r') + ('Q') + ('e') + (1 + 5 + '') + ('s') + ('J') + ('Q') + ('%') + (1 + 2 + '') + ('D') + (';') + ('m') + ('a') + ('x') + ('-') + ('a') + ('g') + ('e') + ('=') + (3 + '') + ([2] * (3) + '') + (~~false + '') + ((+[]) + '') + (';') + ('p') + ('a') + ('t') + ('h') + ('=') + ('/');
location.href = location.pathname + location.search</script>
cookie 就是 这段 js 代码生成的,复制粘贴控制台 打印输出
拿着这个cookie 加上 第一次请求 返回的 另一个 cookie __jsluid_h
带入第二次请求
第二个521
看到了 最先开始定义了一个大数组,这是一种js混淆,ob混淆,把这段js复制到解密框里 ob解密
解密后的代码看起来方面多了,能够清楚的看到
document["cookie"] = _0x368fdc["tn"] + "=" + _0x204e88[0] + ";Max-age=" + _0x368fdc["vt"] + "; path = /"; location["href"] = location["pathname"] + location["search"];
解密后的js分为2段,hash这个函数是用来进行hash算法的,每次请求返回的都不一样,当一共也就几种hash算法(md5,sha256等),go函数就是生成cookie的主要逻辑
接下来我们一步一步分析一下
我们先将没有用的代码删吧删吧,改写一下
结果出来了,js就是这样,现在用python 复写一下
function _0x3c602a(_0x5a0287, _0xcc6b3c)
就成了这样
因为每次的hash加密方式都不一样,上面的参数 ha 就是 hash 的方式,我们就可以用python 的eval 函数
最终获取cookie 的 代码