大家好,我是安果!
一些复杂的网站针对参数是层层加密,如果选择硬刚,去扣代码、补环境,耗时耗力的同时,不一定能获取完整的加密逻辑
在 JS 逆向中,我们可以通过 RPC 通信,直接调用浏览器的方法生成加密参数,这样可以省去扣代码的时间
本篇文章将介绍 Sekiro RPC 进行 JS 逆向的完整流程
目标网站:
aHR0cHM6Ly93d3cueGluZ3R1LmNuL3N1cC9jcmVhdG9yL2hvdA==
具体操作步骤如下:
1、Sekiro RPC
Sekiro 是一个多语言的、分布式网络拓扑无关的服务发布平台
它能基于长连接和代码注入 API 服务暴露的框架,可用于逆向(包含 JS 逆向和 App 逆向)
官网:
https://sekiro.iinti.cn/sekiro-doc/
2、分析网站
打开目标网站,发现接口 /h/api/gateway/handler_get 中的查询参数 sign 是加密的
在 Sources - Page 面板下,通过关键字 sign: 全局查询
发现加密参数生成的具体逻辑如下:
PS:通过方法 generatePayload 生成 sign,其中 c、l 为参数
文件位置:
https://*/obj/goofy/star/idou_fe/assets/vendor-a1b40867.js
然后,在方法 generatePayload 方法内添加条件断点
这样,通过多次 Debugger 分析,可以得出参数的生成规则(即:参数固定值、参数生成逻辑)
这样,在调试模式下,我们可以在浏览器控制台进行测试了
如下,直接调用方法可以拿到加密后的参数
3、加密文件重写 Overrides
在本地新建一个文件夹,Sources - Overrides 关联该本地目录
PS:开启 Overrides 并授予权限
在 Sources - Page 面板下,选择 vendor-a1b40867.js 文件右键,选择 Save for overrides 将文件保存到 Overrides 中
4、Sekiro 定义
修改 Overrides 中 vendor-a1b40867.js 文件
定义 SekiroClient 方法对象并实例化,注册一个方法进行监听处理
SekiroClient 源码如下:
https://raw.githubusercontent.com/yint-tech/sekiro-samples/main/demo-web/sekiroWeb.js
通过关键字 generatePayload 找到对应方法,回车换行,输入如下逻辑
PS:修改源码后,需要重新开启、关闭 Overrides 开关一次( Enable Local Overrides )
重新访问下面地址,查看控制台,发现 Sekiro 已经准备完毕
5、Python 调用
通过 Websocket 调用,借助浏览器调用 generatePayload() 方法,获取加密后的值 sign
最后,组成完整的 URL 获取数据
6、补充一下
除了 Overrides 覆盖文件外,还可以使用油猴脚本或浏览器插件进行脚本注入,完成 Sekiro 的初始化及事件注册
相比传统的 JS 逆向,利用 Sekiro 直接调用方法获取加密参数更加方便快捷然后;但是它有一个缺点,即:需要通过浏览器打开目标网站
如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!
推荐阅读
5 分钟,教你从零快速编写一个油猴脚本!
Python 绝招:解锁小红书信息流的无限潜力!
反爬篇 | 手把手教你处理 JS 逆向之字体反爬(下)
休闲时光:最近上映的电影与爬虫世界,带您彻底放松!
END
领取专属 10元无门槛券
私享最新 技术干货