破解API加密逆向接口分析,看这篇就够了
每日一练:API接口数据逆向,看完这篇,就能学会找到逆向的入口函数、调试js代码、分析js代码、还原加解密算法!为了能及时获取后续的爬虫及逆向的技术分享文章,请先关注后再接续阅读!
逆向站点背景
本次编写的文章是国外知名的站点,由于其网站的运营数据的准确定性及可以给专业人士提供准确的行业报价的数据而深受国内外的用户青睐!年初的时候这个站点的数据还是可正常的访问的,但是后来因为帮助客户分析数据,一晚上高频抓取了30万的数据,导致站点把国内的访问直接给禁掉了!
被禁掉后就只能科学上网了,一段时间依旧可以访问,到了年中的时候,发现站点已经无法获取到数据了,分析站点后发现核心的接口返回的数据被加密了。
坚持原创写作很不容易,本计划一周写个两篇,优质文章写起来发现真的非常的耗费时间精力。因为有大家的关注,激励我坚持把原创写作的事情做下去。感谢每一个关注我的同学!
逆向站点分析
我们按照下面的操作,对网站进行分析:
-
打开浏览器 -
进入网站 -
F12打开控制台 -
发送请求
会看到如下图所示的结果网站的页面及控制台数据:
这个是我们获取到的请的api,我们接着分析该请求返回了什么?如下图站点返回显示什么都没有,那么猜测不是静态页面加载的。
那么由上图我确认了该接口的请求并没有返回我们需要的数据,那么我需要的数据又在哪里呢,猜测是异步加载的,因此我们再分析获取到的请求,看看有没有可能是我们需要的数据?
经过进一步的分析我发现有两个接口,符合我们的猜测,因此分别看下他们的返回的结果,发现并没有我们需要的数据呢,这是怎么回事?
如上图片是第一个接口返会的数据,不是我们需要的,直接pass
这是的第二个接口返回的数据,但是返回的数据是一串字符串,看上去也不像我们的需要的数据,这就很奇怪了,数据去哪里了呢?
作为一个资深爬虫工程师,经验告诉我,这是遇到了加密,我们返回的数据被加密成了一串字符串!那我们获取到的数据有啥用呢?
站点接口分析
以我的经验分析,上图一串字符串就是我们的所需要获取的数据,那么我们该如何验证呢?
-
利用控制台的功能 -
断点调试 -
代码分析
现在我们利用浏览器的监听对请求的接口进行断点,当加载到这个接口的时候,如果出现了断点调试的页面,并且我们需要的数据在页面上并没有出现,如下图,说明我们的猜想已经对了一半。如果我们点击如下图的按钮后页面的调试的按钮消失,同时数据被加载出来了。那就可以证明我们的猜想是正确的!
如下图我们成功截取了接口请求!
如下图当我们持续点击按钮消失后,页面成功加载出了我们需要的数据,这也证实了我们的猜想是完全正确的!
但是还是没有获取到数据,且看下面的断点调试?
调试分析
断点分析如下,我们发现api接口的参数出现在了下图中,分析代码应该是使用下图的方法发送了请求,那么猜测只需要跟踪这个请求就可以找到真实的数据返回?
如下图发现了一个post请求就是我们需要追踪的api.
继续单步调试后,发现这个请求返回了和我们上面找到的数据一样的一串字符串。这里猜测觉着在这个接口的逻辑中应该就是我们需要的数据?
调试js代码得到下面的一段代码。我们分析下可能就是解密这段加密字符串的方法?
下断点并进入这个方法查看。
单步调试进入这个js文件,并执行单步发现如下的数据就是我们需要的,如下图:
到这边我们就已经确认了我们上面的所有的猜想。下面我们来分析如何将字符串解密成一个对象的。
加密还原
分析代码我们可以根据经验发现如下图的代码是一个AES的加密方法,因此我们需要使用js的cryptojs方法进行还原即可。
但是现在的大模型发展的这么好,我们就使用大模型,帮助我们分析下这段的代码。并编写代码还原。
提示词:你是专业的js开发专家,帮我分析下面的js代码,写的注释必须让不懂编程的人也能看懂:
我们对代码分析之后并使用python3进行还原加解密看下结果:
结果如下成功了:
js逆向、调试、分析、还原、验证完成。当然我同时还原了加密和解密的方法!
原创不易,点个关注!不会错过后面的js逆向文章!觉着写的不错的可以帮忙点点赞。关注公众号:爬虫与大模型开发。
需要以上源代码的下面留言:“想要代码”。
活跃在一线的爬虫工程师分享自己学习之路我创建了爬虫与大模型开发的星球群适合爱好爬虫及从事爬虫的同学代码相关内容我放到了星球
本文由 mdnice 多平台发布