首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

玩转 JS 逆向:RPC 加持,爬虫效率飙升

大家好,我是安果!

一些复杂的网站针对参数是层层加密,如果选择硬刚,去扣代码、补环境,耗时耗力的同时,不一定能获取完整的加密逻辑

在 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

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Oh0RO9b8pWDSkQibu5JQmpww0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券