当前位置: 首页 > news >正文

破解API加密逆向接口分析,看这篇就够了

破解API加密逆向接口分析,看这篇就够了

每日一练:API接口数据逆向,看完这篇,就能学会找到逆向的入口函数、调试js代码、分析js代码、还原加解密算法!为了能及时获取后续的爬虫及逆向的技术分享文章,请先关注后再接续阅读!

逆向站点背景

本次编写的文章是国外知名的站点,由于其网站的运营数据的准确定性及可以给专业人士提供准确的行业报价的数据而深受国内外的用户青睐!年初的时候这个站点的数据还是可正常的访问的,但是后来因为帮助客户分析数据,一晚上高频抓取了30万的数据,导致站点把国内的访问直接给禁掉了!

被禁掉后就只能科学上网了,一段时间依旧可以访问,到了年中的时候,发现站点已经无法获取到数据了,分析站点后发现核心的接口返回的数据被加密了。

坚持原创写作很不容易,本计划一周写个两篇,优质文章写起来发现真的非常的耗费时间精力。因为有大家的关注,激励我坚持把原创写作的事情做下去。感谢每一个关注我的同学!

逆向站点分析

我们按照下面的操作,对网站进行分析:

  • 打开浏览器
  • 进入网站
  • F12打开控制台
  • 发送请求

会看到如下图所示的结果网站的页面及控制台数据:

alt
alt

这个是我们获取到的请的api,我们接着分析该请求返回了什么?如下图站点返回显示什么都没有,那么猜测不是静态页面加载的。

alt

那么由上图我确认了该接口的请求并没有返回我们需要的数据,那么我需要的数据又在哪里呢,猜测是异步加载的,因此我们再分析获取到的请求,看看有没有可能是我们需要的数据?

alt 经过进一步的分析我发现有两个接口,符合我们的猜测,因此分别看下他们的返回的结果,发现并没有我们需要的数据呢,这是怎么回事?

alt 如上图片是第一个接口返会的数据,不是我们需要的,直接pass

alt 这是的第二个接口返回的数据,但是返回的数据是一串字符串,看上去也不像我们的需要的数据,这就很奇怪了,数据去哪里了呢?

作为一个资深爬虫工程师,经验告诉我,这是遇到了加密,我们返回的数据被加密成了一串字符串!那我们获取到的数据有啥用呢?

站点接口分析

以我的经验分析,上图一串字符串就是我们的所需要获取的数据,那么我们该如何验证呢?

  • 利用控制台的功能
  • 断点调试
  • 代码分析

现在我们利用浏览器的监听对请求的接口进行断点,当加载到这个接口的时候,如果出现了断点调试的页面,并且我们需要的数据在页面上并没有出现,如下图,说明我们的猜想已经对了一半。如果我们点击如下图的按钮后页面的调试的按钮消失,同时数据被加载出来了。那就可以证明我们的猜想是正确的!

如下图我们成功截取了接口请求!

alt

如下图当我们持续点击按钮消失后,页面成功加载出了我们需要的数据,这也证实了我们的猜想是完全正确的!

alt

但是还是没有获取到数据,且看下面的断点调试?

调试分析

断点分析如下,我们发现api接口的参数出现在了下图中,分析代码应该是使用下图的方法发送了请求,那么猜测只需要跟踪这个请求就可以找到真实的数据返回?

alt 如下图发现了一个post请求就是我们需要追踪的api.

alt

继续单步调试后,发现这个请求返回了和我们上面找到的数据一样的一串字符串。这里猜测觉着在这个接口的逻辑中应该就是我们需要的数据?

alt

调试js代码得到下面的一段代码。我们分析下可能就是解密这段加密字符串的方法? alt

下断点并进入这个方法查看。

alt

单步调试进入这个js文件,并执行单步发现如下的数据就是我们需要的,如下图:

alt 到这边我们就已经确认了我们上面的所有的猜想。下面我们来分析如何将字符串解密成一个对象的。

加密还原

分析代码我们可以根据经验发现如下图的代码是一个AES的加密方法,因此我们需要使用js的cryptojs方法进行还原即可。

alt

但是现在的大模型发展的这么好,我们就使用大模型,帮助我们分析下这段的代码。并编写代码还原。

提示词:你是专业的js开发专家,帮我分析下面的js代码,写的注释必须让不懂编程的人也能看懂:

alt

我们对代码分析之后并使用python3进行还原加解密看下结果:

alt 结果如下成功了:

alt

js逆向、调试、分析、还原、验证完成。当然我同时还原了加密和解密的方法!

       原创不易,点个关注!不会错过后面的js逆向文章!觉着写的不错的可以帮忙点点赞。关注公众号:爬虫与大模型开发。
需要以上源代码的下面留言:“想要代码”。
alt
活跃在一线的爬虫工程师分享自己学习之路我创建了爬虫与大模型开发的星球群适合爱好爬虫及从事爬虫的同学代码相关内容我放到了星球
alt

本文由 mdnice 多平台发布


http://www.mrgr.cn/news/59710.html

相关文章:

  • 二十三种设计模式之命令模式
  • Docker 安装 Prometheus 2.5
  • 关于在windows10系统64位安装luasocket问题
  • GCN+BiLSTM多特征输入时间序列预测(Pytorch)
  • Vscode + EIDE +CortexDebug 调试Stm32(记录)
  • 神经架构搜索:自动化设计神经网络的方法
  • 录屏软件推荐,4个工具助你高效录屏。
  • 自适应阻抗控制基本概念
  • redis 查找key使用正在表达式与java的区别
  • 《C++中局部变量与全局变量在内存中的奥秘》
  • vue 项目情景应用+深度理解+面试高频题
  • 海洋生物图像分割系统:算法改进策略
  • 习题2.40
  • 群控系统服务端开发模式-应用开发-业务架构逻辑开发API准备工作
  • D. Skipping 【 Codeforces Round 980 (Div. 2)】
  • 用Pycharm 运行深度学习,在测试(推理)运行测试文件会自动进入pytest模式,如何关闭默认测试框架
  • LVGL _基础控件_Label 文本
  • 《C++显式类型转换:解析多种转换方式的奥秘》
  • Docker | images镜像的常用命令总结
  • AI提示词工程优化Prompt-GPT使用手册(科普一键收藏史上最强攻略)
  • 【jvm】新生代和老年代
  • 【anki】如何图片遮挡分组
  • 数学建模学习(131):使用Python基于VIKOR算法的多准则决策分析
  • 【原创】红米K40(alioth)解锁BL,安装Magisk获取root权限并安装LSPosed模块
  • 实时操作系统(RTOS)深度解析及Java实现初探
  • windows@快速安装windows系统镜像安装@快速部署windows操作系统