某红书X-S逆向

某红书X-S逆向 某红书 Web 端在多数 API 请求中都携带X-S请求头进行签名校验。简单来说服务端会验证请求头中的X-S是否合法如果不合法就直接拒绝请求。首先我们得找到逆向的入口。1. 打开开发者工具找到链接 homefeed 结尾的链接。2. 筛选XHR/Fetch请求点击别的列表触发请求找到带有X-S请求头的接口例如美食 feed 接口/api/sns/web/v1/homefeed。3. 找加密入口有两种办法一个是搜索关键字还有一个是跟栈查找。我对于某红薯比较推荐搜索关键字这样更快。我们直接在搜索页面搜索 x-s 就可以直接定位到加密入口。4. 我们在 var x 这里打上断点点击别的列表触发一下断点。如下图我们点击下一步可以看到 a.headers[R] 这个参数里面的 R 就是 x-s它是由 v 赋值v 是由 seccore_signv2 函数生成的。5. 既然知道了加密函数是谁我们可以在加密函数 seccore_signv2 的位置打上断点点击别的列表刷新断点进去图片箭头的函数里面到函数里面就可以看到这就是核心的加密逻辑了。6. 传进来的 a 和 e 都是要用于加密的a 是请求链接e 是请求参数。根据调试我们可以得到其他的参数都是可以写死的只有这个 x3 是动态生成的。我们现在可以分析这个 x3 是怎么生成的。可以看到x3 是 v 赋值的但是 v 又是由 window.mnsv2(c, u, p) 这个函数生成的。现在我们需要分析的就是 c、u、p 这三个值是什么是怎么生成的。根据图片我们可以看到 u、p 都是经过 (0, ed.Pu) 这个函数处理的不绕弯子这个就是标准的 MD5 加密。c 是 a 跟 e 字符串拼起来的u 是 ae 进行 MD5 加密p 是 e 进行 MD5 加密。7. 我们已经分析完这三个的值是怎么来的最重要的就是 window.mnsv2 这个函数。我这边是直接点进去把这个 JS 全部扣了下来。下面的图是进入 window.mnsv2 这个函数后的样子我们想要调用这个函数的话可以将它赋值给全局变量 window如第二张图。8. 对于运行这个 JS 需要进行补环境我这边不是手动补的是用 AI 给我补全的。整体的代码就是下面这几个文件env 是补环境的代码jsvmp 是 window.mnsv2 全扣的代码x-s 是核心的加密 JS 代码。9. 第一张图这个是核心的加密 JS这里面的 MD5 可以直接用 JS 里面自带的s 里面的其他参数都可以写死。在最后要进行 base64 处理但是某红书的 base64 是自定义的我们也可以扣它自带的 JS 代码。从第二张图的位置进去可以看到第三图的四个函数给它全部扣下来第四张图的也需要扣不然会报错位置就在第三张图片上面一点。10. 整体就是这个逻辑完成后基本上就能拿到返回的数据了。第一次写写的可能有点乱见谅我也是小白记录一下学习过程。