aHR0cHM6Ly93d3cuY252ZC5vcmcuY24vdXNlci9kb0xvZ2luL2xvZ2luRm9ybQ==
各位老师傅早上、上午、中午、下午、晚上好啊
之前的一篇拙作,最后提到了 cookie 是有时间限的( 跳转文章 -> https://www.52pojie.cn/thread-2064583-1-1.html )
buluo533 大佬提醒了我,此站 cookie 使用了加速乐防护
说来惭愧,我挠头苦学几个月,竟从未听闻加速乐,瑞数、极验等也仅仅是听说过
既然有缘相遇,我们就以从未接触过加速乐的视角,慢慢摸索
观察 cookie
打开目标网站

cookies.png (99.14 KB, 下载次数: 0)
下载附件
2025-10-11 21:19 上传
HttpOnly 字段为 true,说明该 cookie 值是由服务器下发的,在响应头的 Set-Cookie 字段中,为空则是客户端 js 生成的
已知有 cookie 字段:
cookies = {
'__jsl_clearance_s': '1760105969.693|0|WvtuAdKsgU38pYhjn3zcafnFVG4%3D', // 本地 js 生成
'__jsluid_s': 'eceb6b4128d175157e93245d743670b5', // 服务器下发
'JSESSIONID': '74411EEA870F8DF844E3F6EA0F7F407D' // 服务器下发
}
我们清空此站 cookie,刷新,让服务器下发新的 cookie,同时抓包观察

newCookie.png (27.97 KB, 下载次数: 1)
下载附件
2025-10-11 21:21 上传
发现了 3 个可疑请求,观察响应内容,同时也观察响应头的 Set-Cookie 字段

setcookie1.png (42.47 KB, 下载次数: 1)
下载附件
2025-10-11 21:22 上传

setcookie2.png (67 KB, 下载次数: 1)
下载附件
2025-10-11 21:23 上传

setcookie3.png (68.29 KB, 下载次数: 1)
下载附件
2025-10-11 21:22 上传

setcookie4.png (106.04 KB, 下载次数: 1)
下载附件
2025-10-11 21:22 上传

setcookie5.png (84.97 KB, 下载次数: 1)
下载附件
2025-10-11 21:22 上传
我们理清过程:
此地无银三百两,(3)的最终 __jsl_clearance_s 字段,怀疑就在(2)的混淆 js 中生成,毕竟没东西干嘛要混淆呢
Hook document.cookie
生成的 cookie 值总归是要赋值给 document.cookie 的,使用油猴脚本 hook 一下
(function () {
var cookieTemp = '';
Object.defineProperty(document, 'cookie', {
set: function (val) {
console.log(val);
if (val.indexOf("__jsl_clearance_s=") != -1) {
debugger;
}
cookieTemp = val;
return val;
},
get: function () {
return cookieTemp;
}
})
})();

hook1.png (86.39 KB, 下载次数: 1)
下载附件
2025-10-11 21:28 上传

hook2.png (69.87 KB, 下载次数: 1)
下载附件
2025-10-11 21:28 上传
这里有一些问题(至少在我的机子上是这样):
但是无所谓,我们可以先把当前断住的逻辑补全,然后关闭油猴脚本,使用本地结果与浏览器结果对比,看看是否一致
扣代码时间
在扣代码前,一般先看代码的整体结构,注意:(2)接口返回的混淆代码,变量名和混淆数组似乎会动态变化

structure.png (72.81 KB, 下载次数: 1)
下载附件
2025-10-11 21:30 上传
前三部分能看出是明显的 ob 混淆,首先有一个大数组,然后有一个自执行对数组元素重排,最后有一个解码函数,传入一个参数,解码得到一个字符串
这三部分全扣下,这样后续的代码就不需要再考虑混淆了,直接看逻辑
// 省略写法,实际记得扣干净
var _0x20d2 = ['Cy/DrWk=', 'dGNmCQ==', 'wptMVz0=', '......']
(function(_0x202eeb, _0x20d22c) {}(_0x20d2, 0xeb));
var _0x3e3f = function(_0x202eeb, _0x20d22c) {};
然后看断点处

jsl1.png (52.23 KB, 下载次数: 1)
下载附件
2025-10-11 21:31 上传
判断条件常驻为 true,扣下试执行

jsl2.png (84.78 KB, 下载次数: 1)
下载附件
2025-10-11 21:32 上传
缺什么就搜索,扣下来,最后的类似结构:
var _0x20d2 = ['Cy/DrWk=', 'dGNmCQ==', 'wptMVz0=', '......']
(function(_0x202eeb, _0x20d22c) {}(_0x20d2, 0xeb));
var _0x3e3f = function(_0x202eeb, _0x20d22c) {};
function hash(_0x305b3f) {}
_0x4321b4 = {
"bts": ["1760151418.93|0|yoME", "vzEV2XwBkaFP%2BxJzN0yvU%3D"],
"chars": "tIRMbkDXMigbVIAizFVRzN",
"ct": "98640d7578769f51e99a2fba2739d6ece6200fd38fe010843b0c16dbe5ff8211",
"ha": "sha256",
"is": true,
"tn": "__jsl_clearance_s",
"vt": "3600",
"wt": "1500"
};
var _0x150902 = {};
_0x150902[_0x3e3f('0x8c', 'CN]8') + 'f'] = function(_0x469a9b, _0x14a5b2) {
return _0x469a9b != _0x14a5b2;
}
// ......
var _0x1b0f61 = _0x150902;
var _0x2f69a9 = new Date();
function _0xa42228(_0x2fc481, _0x4c965c) {}
; var _0x3f0c4b = _0x1b0f61[_0x3e3f('0x125', '2cnT') + 'l'](_0xa42228, _0x4321b4['ct'], _0x4321b4[_0x3e3f('0xff', 'p33C')]);
var _0x5dd0c4 = _0x1b0f61[_0x3e3f('0x11f', 'yfbZ') + 'b'](_0x1b0f61[_0x3e3f('0x5b', 'Z74&') + 'b'](_0x1b0f61[_0x3e3f('0xce', 'yo%1') + 'b'](_0x1b0f61[_0x3e3f('0xfd', '[OoV') + 'b'](_0x4321b4['tn'], '='), _0x3f0c4b[0x0]) + _0x1b0f61[_0x3e3f('0x40', 'yVRw') + 'l'], _0x4321b4['vt']), _0x3e3f('0x9b', 't[Yh') + _0x3e3f('0xbb', 'CN]8') + '\x20/');
_0x5dd0c4 = _0x5dd0c4 + _0x1b0f61[_0x3e3f('0x93', 'ftCA') + 'G'];
jsl = _0x5dd0c4;
console.log(jsl); // 成功出值
注意到 go 函数传入的对象是随机的
{
"bts": ["1760151418.93|0|yoME", "vzEV2XwBkaFP%2BxJzN0yvU%3D"],
"chars": "tIRMbkDXMigbVIAizFVRzN",
"ct": "98640d7578769f51e99a2fba2739d6ece6200fd38fe010843b0c16dbe5ff8211",
"ha": "sha256",
"is": true,
"tn": "__jsl_clearance_s",
"vt": "3600",
"wt": "1500"
};
ha 字段标记了哈希算法种类,目前发现有 md5、sha1 和 sha256 三种哈希算法,我们多刷新请求几次,采用笨办法,不同的哈希算法,扣下对应的 3 份代码

jsl3.png (82.78 KB, 下载次数: 1)
下载附件
2025-10-11 21:34 上传
后续使用正则拿到这个对象,判断 ha 字段,调用相应的逻辑即可
测试
关闭油猴脚本,清空 cookie,刷新

jsl4.png (35.49 KB, 下载次数: 1)
下载附件
2025-10-11 21:35 上传
此时接口返回的动态对象为

jsl5.png (46.87 KB, 下载次数: 0)
下载附件
2025-10-11 21:35 上传
本地执行

jsl6.png (56.81 KB, 下载次数: 0)
下载附件
2025-10-11 21:36 上传
与上篇联动测试

jsl7.png (77.46 KB, 下载次数: 0)
下载附件
2025-10-11 21:36 上传
完美
总结
jjjsl.zip
(27.11 KB, 下载次数: 0)
2025-10-11 21:37 上传
点击文件名下载附件
下载积分: 吾爱币 -1 CB

