爬虫篇之JS逆向破解

网站建设3年前发布
13 0 0

20230306105347c1d9f014901dd881828209dce2ed8c50650aac491,爬虫中很重要的一个点就是JS的逆向破解加密,今天我们来浅析一下。,先简单介绍一下为什么要有JS解密,目前大部分网页都是采用的前后端分离的方式,所以呢,爬虫的一般破解之道都是从后端接口来做文章,进行突破。,不过道高一尺,魔高一丈,网页开发会对API接口请求参数进行加密,来增加爬虫抓取的门槛。为此可以通过js逆向来分析破解加密方式,模拟浏览器发送请求获取接口数据。,当然,先说明,这篇文章并不是非常专业的JS解密,因为JS的解密涉及很多种,多种行为的解密,本文只是对其中一种情况进行简单的介绍。,来吧,让我们一起简单学习一下。,202303061053483683853380c10a32b32897cef0a927a788e5f1310,上面这个图是请求翻译的全过程。,20230306105348019cc9123c1419f76e7098b10e5f7b81d4f7dc163,我们能清晰的看到这是直接以表单的形式提交的数据到后端API层,然后API来执行翻译的作用。,接下来我们用python模拟以下这个过程。,20230306105438414c97e1351682954ea1779d1645ec0574b537816,一定要注意的是,请求头写全,包括cookie和user-agent这些,还有下面的params一定要按照网页中的来。,代码给到大家。,我们可以看到,参数params中除了我们要传递的参数翻译内容之外,还有好多我们不认识的参数,如果这里错了会怎么样呢,随便改一下其中的一个参数,我们看看效果。,20230306105349185cd7d31da63554a1883961b06c5ebd26d447279,可以看到,直接返回错误了,很明显被禁止了,或者说是校验没通过,属于非法请求。,我们再来看一下,只改变翻译的内容,靠这些盐和签名是不是能够成功翻译呢?,20230306105350343337760e8f484dfb1902977f8e39293c0491227,结果发现,我们只改变了要翻译的内容,结果还是不行,很明显生成这些校验参数的过程是和要翻译的内容是相关的。,搜索不同的关键词,请求body参数如下,分析发现除了我们要传递的翻译内容外还有4个参数是变量:,这些就是属于请求盐和校验参数,有对应的加密格式,接下来我们围绕这四个参数来进行破解。,接下来我们打开控制台,打开我们要分析的JS程序,直接ctrl+f全局搜索salt关键字。,20230306105351198312d68692115378a622514e0a3259227562507,找到我们要分析的地方,然后在打上断点,重新请求一遍。,F10往下一步一步的执行。,2023030612074248fdb1248ae55cc0eb5434770ee6e70bb310df793,当执行到如图所示的位置的时候,我们把鼠标移动到r这个对象的位置上去,为什么要看这个对象呢,因为你看下面的salt、sign、lts、bv这些参数都是属于r这个对象的属性。,我们能够看到此时r对象的这几个属性已经被赋予了值了。,2023030610535228807d0954eae795ad5745ce414acf8b9c5bb0534,接着看看这个r到底是什么。,20230306105439c74708379528db51c537953bf5042b101a1d58806,进一步分析发现:,至此完成签名算法的实现,接下来可以通过python来实现。,2023030610535389020c6016dcdba002609424e87aff7421ee3f140,代码如下:

© 版权声明

相关文章