一、分析
经典案例之 加速(乐)cookie生成
在请求头中可以发现 cookie是这样的
简单分析下
可以看到状态码是521
我们会在第一次请求的时候获取到__jsl_clearance_s=xxxxxxx的值
然后cookie中再带上这个计算出的值再次请求
会发现
状态码仍然是521
又是另一段js代码
先美化下 再本地分析看看
首先 这部分代码 有以下几部分
从最后这一部分看以看出 这里是调用了go这个函数 然后传了一个参数
这个参数肯定就是和加密相关的了
直接copy这部分代码到控制台 看能否运行 可以的话
那么这次就要我们自己进入debugger模式了
我们直接手动在代码里面 加上debugger进入调试模式
在go函数声明的第一行加上debugger
然后把代码扔到控制台
然后进入调式之后 会发现以下代码 分析下
然后再往上分析下看
这里会发现 返回了一个长度为2的list 第一个元素就是计算后cookie的值 第二个我跟了下 是一个时间差(好像) 可以不管 没啥用
我们只需取第一个元素就行了
到这里的话 其实有个思路 我们直接把代码全部扣到本地 补下window环境 然后把这个值挂载在全局变量里面 返回就行了
就不用还原算法和去扣这个加密的函数了
好了 直接上手试试吧!
首先 在js代码里有window 出现 补上window
window = global;
var cookie = '';
window.navigator = {
userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
}
document = {}
然后找到刚刚代码行的位置 把这个cookie值挂载上
var _0x59eca3 = _0x355069(_0x53794c['ct'], _0x53794c[_0x50f1('0x172', 'Bd%s')]);
if (_0x59eca3.length == 2){cookie = _0x59eca3[0]}
最后 return出来
这样的话 我们调用go这个函数的时候 就有返回值了 就是cookie
到这里 我以为完了 其实不然
我们注意这个参数 里面的’ha’ 这个的值 他有三种 分别是 md5, sha1, sha256 每次访问可能都会变化 但只有这三种
如果说你当前扣的是md5的js代码 如果返回的是其他两个算法的其中一种 那么就会出错
这样的话 我们就需要把这三种 算法的js代码都扣下来就行了 也不多
同理 和md5扣的方式一样 也是补环境 挂载 然后返回就行了
计算出cookie 带上cookie再次访问
然后接着用py试试
以下分别是三种算法对应的情况
OK!