百度贴吧sign参数逆向分析与本地验证

JS逆向解密教程5:某吧sign参数逆向分析与本地验证

之前写好的某吧发帖脚本突然全部失效。排查后发现,某吧进行了一次大更新,接口新增了一个 sign 参数。这章我们就针对 sign 这个参数进行百度贴吧 sign 参数逆向分析,彻底解决脚本调用问题。

一、抓包定位 sign 参数

首先需要确定分析的切入点。按 F12 打开谷歌浏览器抓包工具,随便打开一个某吧点一下“最新”选项卡,可以发现抓包工具抓到了一个 /c/f/frs/page_pc 的 POST 请求包,请求主体包含 sign 参数。

请求方式:POST
请求地址:https://tieba.baidu.com/c/f/frs/page_pc

{
    "kw": "bilibili",
    "pn": "1",
    "is_good": "0",
    "cid": "",
    "sort_type": "0",
    "is_newfrs": "1",
    "is_newfeed": "1",
    "rn": "30",
    "rn_need": "10",
    "tbs": "f3a8f22bc1cc74f71776578469",
    "subapp_type": "pc",
    "_client_type": "20",
    "sign": "cffbccb8badb00467d9a0e73c509844b"
}
某吧 sign 参数逆向抓包定位sign参数
图1:抓包定位 sign 参数

二、搜索定位 sign 生成位置

找到目标参数后,下一步就是定位它的生成逻辑。通过浏览器搜索 sign: 关键词,看 sign 参数是在哪里赋值的。发现有很多 JS 文件都包含 sign 参数。

全局搜索sign关键词
图2:全局搜索 sign 关键词

这里有个实用的筛选技巧:像 sign: 'xxxxx' 和 assign: 这种写死的就不用关注了。我们只关注 sign: xxx() 或 sign: e 这种类型,这些都是在调用函数或者是使用变量动态赋值的,也是我们寻找某吧 sign 加密算法入口的关键特征。

三、断点调试锁定生成函数

我们先给 sign: xxx() 这样类型的全部打上断点,然后再点一下贴吧的“精华”选项卡,就看到断点成功断下来了。断下来的位置在:

sign: A(n, '', '')

分析代码结构可以看出,sign 参数的值就是由 A 函数生成的了。在 sign: A(n, '', '') 处设置断点,准备深入分析其内部逻辑。

断点定位到A函数
图3:断点定位到 A 函数

四、控制台验证生成逻辑

为了确认判断无误,复制 A(n, '', '') 这段代码在控制台运行一下来确认。经过运行,确实是由 A 函数生成的,其中 A 函数里面的 n 传递的是组装好的 URL 请求参数。生成的 sign 的值和抓包到的 sign 长度是一致的,由此完成了贴吧 sign 参数解密的初步验证。

控制台验证A函数
图4:控制台验证 A 函数

五、代码扣取与依赖补全

直接跟进函数 A 里面开始扣代码。把 A 函数扣下来在本地调用运行,发现缺少 h 函数,还依赖了其他函数。

某吧 sign 参数逆向本地运行A函数
图5:本地运行A函数

解决这个问题的方法很简单:从 A 函数所在的位置往上追溯,找到最顶层的 s 函数,把 A 函数往上到 s 函数全部复制下来,确保所有依赖的函数都完整不缺失。

扣取代码到代码编辑器
图6:扣取代码到代码编辑器

六、本地运行验证

再进行运行,发现生成的 sign 值和浏览器生成的值一致,说明没有问题。最后看了一下代码,这是一个标准的 MD5 算法。

本地运行验证结果对比
图7:本地 Node.js 运行验证结果

七、常见问题与解决方案

  • Q1:断点没有断下来是什么原因?
    • 原因分析:可能是断点打在了错误的位置,或者页面加载时还没有绑定事件。
    • 解决方案:刷新页面后重新触发操作(点击”最新”或”精华”选项卡),确保断点在代码执行时被命中。
  • Q2:扣下来的代码本地运行报错 “h is not defined”?
    • 原因分析A 函数依赖了同模块内的其他函数,单扣 A 函数会缺失依赖。
    • 解决方案:从 A 函数往上追溯,把整段包含依赖函数的代码块全部复制下来。
  • Q3:生成的 sign 值和抓包不一致怎么办?
    • 原因分析:传入 A 函数的参数 n 与抓包时的请求参数不完全一致。
    • 解决方案:在断点处仔细查看 n 的具体值,确保本地传入的参数字符串与之一模一样。参数拼接顺序通常按 ASCII 码升序排列。

总结
通过本次某吧 sign 参数逆向分析,我们定位到了加密入口并成功在本地复现。该算法本质是标准 MD5 哈希,逆向难度不高。配合之前逆向的 Acs-Token 等参数,某吧的请求模拟已可正常进行。

给TA打赏
共{{data.count}}人
人已打赏
技术文档

小红书X-S签名逆向解析(下篇):x3参数逆向与浏览器环境补全

2026-6-24 1:57:12

技术文档

抖音a_bogus参数逆向 从抓包到Python刷播放量脚本全记录

2026-6-24 2:25:16

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
有新私信 私信列表
搜索