作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!
抓包分析
我们先抓包看下x-s-common
长什么样子,看不懂,直接F12开始分析。
逆向分析
打开F12, 搜索"X-S-Common"
定位到代码,在图中所示位置打下断点
操作页面,使断点断下,查看明文变量v
{
"s0":5,
"s1":"",
"x0":"1",
"x1":"3.7.8-2",
"x2":"Windows",
"x3":"xhs-pc-web",
"x4":"4.34.0",
"x5":"1920905cb73t8qsfkhoomdhscvlv...", // cookie中的a1
"x6":1726826121766, // x-t
"x7":"XYW_eyJzaWduU3ZuIjoiNTUiL...", // x-s
"x8":"I38rHdgsjopgIvesdVwgIC+oIELmBZ5e3VwXLg...", // 浏览器指纹 写死
"x9":1571604014, // 未知
"x10":8 // x-s-common 生成次数
}
向上查看x9
在哪里生成,打下断点,可以看出是将c、l、h
拼接后传入encrypt_mcr
函数
断点断下后,我们直接进入encrypt_mcr
函数内部,并在第一行打下断点
可以看出,这个函数通过一个for循环
对字符串进行了一系列操作,我们直接将整个函数encrypt_mcr
扣下来,缺啥补啥即可
x9
分析完了,我们接着看x-s-common
,就是json序列化后进行utf8和base64编码
e.headers["X-S-Common"] = encrypt_b64Encode(encrypt_encodeUtf8(stringify_default()(v)))
这里我们也直接扣这两个函数即可encrypt_b64Encode
和encrypt_encodeUtf8
,最终就扣下来这几个函数(encrypt_crc32
不用)
注意两个修改的地方:
(0, esm_typeof.A)(t)
改成typeof t
parse_int_default()
改成parseInt
代码
解混淆之后代码只有50多行
算法获取以及相关问题可以私聊作者交流~