$ ls ~yifei/notes/

如何破解被 JS 加密的数据

Posted on:

Last modified:

由于网页和 JavaScript 都是明文的,API 也就直接暴露在爬虫的眼里,所以很多网站选择使用混淆后的 JavaScript 计算一个验证参数来加密接口。

找到 Ajax 入口

首先,我们需要找到相关的网络请求。如果找不到,清空缓存或者重新开一个无痕模式窗口尝试触发

找到加密函数

  1. 打断点,可以是 ajax 断点或者 js 断点,或者直接看网络请求的 initiator
  2. 在断点所在的文件中搜索加密参数的名称,找到入口
  3. 或者直接 Cmd+Opt+f 全局搜索,但是有时候全局搜索不准确,得在找到的文件中再搜索一次

找到 Cookie 接口

新开一个匿名窗口,重新请求一次,在 Network 面板中,搜索 set-cookie

JS 混淆

https://mp.weixin.qq.com/s/i_HwHaDaD7pZyurWSa6B6g 还原工具

JS VMP

Python 调用 JS

最后一步是使用 Python 调用 JS 脚本生成 sign 值,大多数的教程到这里都是直接使用 pyexecjs, 然而这样做并不是最优的。execjs 本质上还是使用 subprocess 调用了 node,所以你并不能省掉 安装 Node 环境这一步,而且每次调用还需要启动一个新进程,效率肯定是收到影响的。execjs 这个 包虽然简单,但是也不维护了,总有一天会用不了了。

最后

做爬虫和逆向要有两个念头随时记着:

  1. 人总会犯错的,To err is human. 耐心寻找对方思路不严谨的地方。
  2. 考虑成本,没有不可能的事,主要看成本可不可以接受。

逆向的目的是为了了解程序的逻辑,按照结果可以分为两种:hook 和反汇编代码。hook 相当于黑盒调用别人的源码,而反汇编则把原来的代码完全理解了,可以直接白盒调用。

参考

  1. 中国天气质量网返回结果加密的破解
  2. 破解 Google 翻译的 token
  3. JavaScript 生成 Cookie
  4. 常见加密算法
  5. 微博 Cookie 生成
  6. 又一篇微博的
  7. 威锋网 X-Request-ID
  8. 威锋网 AES
  9. Cloudflare 分析
  10. https://mp.weixin.qq.com/s/i_HwHaDaD7pZyurWSa6B6g
  11. https://mp.weixin.qq.com/s?__biz=Mzg3MjU3NzU1OA==&mid=2247496261&idx=1&sn=8b1c98502849e26ba8eebb91be9d1583
  12. https://blog.huoding.com/2019/05/06/739
  13. JS 反调试技巧
  14. 无限 debugger
  15. 逆向中常见加密算法
  16. js-hook
  17. https://juejin.cn/post/7015603661225066532
  18. 逆向教程汇总
WeChat Qr Code

© 2016-2022 Yifei Kong. Powered by ynotes

All contents are under the CC-BY-NC-SA license, if not otherwise specified.

Opinions expressed here are solely my own and do not express the views or opinions of my employer.

友情链接: MySQL 教程站