声明:
该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关
关键字__jsluid_s搜索,会发现__jsluid_s是由响应头set-cookie设置的cookie,Set-Cookie是服务器在客户端储存的一些信息,用于在后续的请求中传递和存储用户相关的信息或状态,带有__jsl字样时加速乐特点之一
分析该请求会发现请求失败,而且后面还有两个同样的请求,一个成功,一个失败,分析三个请求里面的cookie会发现第一个请求生成__jsluid_s,第二个请求根据__jsluid_s生成__jsl_clearance_s,第三个请求根据__jsluid_s、__jsl_clearance_s成功获取数据
修改mfw.py,第一次请求拿到__jsluid_s
查看第二次请求会发现,请求失败什么返回都没有,切换到sources,找到事件监听中的script打勾,每次加载script都会断点,缺点是如果插件过多,就需要跳过多次断点,才能找到该文件,可以打开个无痕窗口进行调试
切换到Application,清除浏览器的cookie,一定要先清除cookie,清除cookie后,刷新页面,如果有插件的一直点击跳过断点,直到看到有混肴js停下,分析代码最后会发现 __jsl_clearance_s,是作为go方法的参数,在go方法内部打个断点
点击跳过断点,会进入go方法内刚才的断点,Ctrl+F搜索_0x545136(这个每次加载时候会变,根据你文件go的参数进行搜索),会发现_0x545136[‘tn’] + ‘=’, _0x103368[0x0],_0x545136[‘tn’]是传过来的参数__jsl_clearance_s,而_0x103368[0x0]是__jsl_clearance_s的值,而_0x103368 = _0x190a7c(_0x545136[‘ct’], _0x545136[_0x38c5(‘0x3d’, ‘YDN0’)]);,在该行打上断点
点击跳过断点,分析_0x103368 = _0x190a7c(_0x545136[‘ct’], _0x545136[_0x38c5(‘0x3d’, ‘YDN0’)]),会发现_0x103368是由_0x190a7c函数生成,其中参数分别是传过来的参数中的 ct、bts,把ob混肴的自执行方法、ob混肴的数组、go函数拷贝带mdw.js,修改_0x545136[‘tn’] + ‘=’, _0x103368[0x0],_0x545136[‘tn’]代码为 return _0x103368[0x0]
运行mdw.js,会报_0x38c5的错误,把_0x38c5拷贝到mdw.js,再运行会报window的错误,开始补环境
在代码顶部声明window = global
运行mdw.js会报userAgent的错误,userAgent是navigator下的,在控制台输出该值,并在mdw.js补上userAgent
运行mdw.js,会报hash的错误,把hash方法拷贝到mdw.js
运行mdw.js,无报错
修改mdw.py,会发现并没有拿到正确的混肴js代码,再看第二次请求会发现第二次请求中也有__jsl_clearance_s参数,原因是在第一次请求时,会有个设置cookie的逻辑
清空cookie刷新页面,一直点击跳过断点,会发现document.cookie赋值的地方,在方法内部打断点,点击跳过断点,把document.cookie在控制台输出会发现__jsl_clearance_s
修改mdw.py,运行mdw.py,会发现已经拿到混肴的js代码
修改mdw.py,并运行,数据获取成功