大家好!今天给大家介绍一下python爬虫之js逆向,本节主要为然案例来给大家讲解,可以仔细阅读这篇文章,了解一下关于js逆向的基本语法知识。
了解网页结构
本节案例网址:闪职
进入网站后会出现登录的窗口,我们随便输入一个账号或密码,打开检查,打开网络,点击登录,进行抓包,我们会发现网页发送了两次请求,第一次是get请求,第二次请求是一个post请求,那为什么会有两次呢,大家想一想
我们先来看一下我们这个所谓的用户登录,对吧,他是应该是post请求,因为它post请求会携带表单数据,对吧,然后它里面会有user name会有password,对,会有username和password,然后下面还有一个叫做什么token这个字段信息,
我们把这个放在一边,再截一张图给大家看看,
然后我们再一次看,我们再一次输入我们的账号,再输一下密码,987654,点击登录,同样,我们这里还是找到这个POS的请求,找到这个表单数据,你去对比一下,做这个GS解密,首先一定要告诉做的事情是什么呢,就是要找到你要请求的,或者说要获取的这个加密字段,哪些加密参数是会变化,哪些参数是不变的,是固定值,像这个user name我们就不用去强调了,对吧,它是固定的吧,用户账号嘛,账号信息它固定,那最关键的就在于我们这个password,对,Password,你会发现它的值是变化的,那后面还会有一个叫做,token值这个也是变化的,也就是第一次发送的get请求会获取这个token值,之后携带着这个token值发送post请求,获取数据。
那现在token值有了,password怎么获取呢,我们接着往下看
发送的相应里面又password,然后点击搜索,找到JS文件,可以看到此时有两个JS文件,那为什么不选择上面的呢,应为第二个英语大致意思为加密函数什么的,所以可以排除掉第一个,我们可以看到这个代码量比较少,可以直接给他全部都复制下来,在编辑器里面打开,
我们可以看见,粘贴下来之后会有一个eval,后面有一个什么function,那你会发现,其实你会发现你复制下来的内容和你之前的形式不太一样,就即使你把它改了,你也发现这个函数没有办法运行,只要JS代码的开头有一个eval,那就证明这个JS文件也被加密处理了,就是他把你加密函数又进行了一次加密,现在我看到这段代码,其实就根本不是我的加密函数内容,这种叫做JS的一个混淆。
那怎么办呢,没关系,魔高一尺道高一丈,那我们要想还原这个代码有两种方式,第一种方式是最简单的一种方式,通过在线的工具,地址链接:格式化工具
选择解码方式
粘贴我们网页中复制的代码,点击解码,
我们会发现内容很乱,我们点击去格式化,再点击格式化,
现在你看到的这段代码才是真正意义上的加密函数的代码,因为你可以看到一个什么dologin,对你可以看到一个叫做password_old,这是旧的密码,从过从我们这个选择器对象来查询到这个选择器当中的值values,加密后面会得到一个新的密码,对叫做pass_new嘛,新的密码,那这个就是我们的加密函数。
那我们就把这个加密函数复制,放到我们的这个什么,放到我们的这个JS文件当中,那现在我们就直接尝试调用一下,
右键运行,你肯定不出意外就报错了,对吧,报错原因也很正常,他说这个符号,这个符号,没有被定义,什么意思呢,就在我们的这个前端当中,我们去选取元素对吧,选取这个标签元素的时候,找不到这个值,但是这个值我们现在都知道是多少,但是其实上我们应该怎么调试它,或者怎么确定这个东西就是我的加密函数呢,现在这个,就是我们要找的加密函数,这个就是我们要找的加密函数它的原内容,但现在它只是通过一个在线工具进行的一个解密。
那除了这种方式以外,我们还有另外一种方式,接着往下看,
我们回到网页中,打上断点,接着重新登录,会发现他会卡在这里,我们可以看见右边的p值,他是和我们在 解密网页工具中看到的函数是一样的,P函数就是我们还原后的代码数据。
我们连续点击步入
大家会发现,此时出来的这个函数是和我们在解码网页工具的函数是一样的,987654为旧密码,所以这这个就是我们需要的内容。
补环境–安装加密算法库
当我们的代码,当我们抠出来的这个JS代码,它运行不报错,并且得到的结果没有我们想要的,或者说我们连抠都无法抠出来的时候,我们只有两种方式,一种如果知道它的加密方法,它是用什么加密算法的,我们就通过Python来重构这个加密算法,另外一种就是通过JS环境来安装一些库,借助这个库里边自带的加密算法来进行加密,也就是俗称的补环境。
或者我也安装一个第三方库,那这种思路就是我们说到的补环境了,怎么补,很简单,我们先来看一下,怎么来安装这个库,怎么借助这个库里边自带的加密算法来进行这样一个加密,接着往下看,
首先第一点先打开我们这个JS文件所在目录,在这个路径下面打开我们的终端,
输入以下指令
npm config set registry https://registry.npm.taobao.org
npm install node-jsencrypt
npm install -g cnpm--registry=https://registry.npm.taobao.org
cnpm install node-jsencrypt
完成指令以后,出现蓝色符号,打开所在对应的js目录,会有两个文件,就代表安装成功,安装成功猴,我们进行文件加载
如果想要调用这个do log,我就不用再去获取用户数的密码,可以自己写个行参,我们可以先把这个password_old定w为形参,再次运行,会出现错误
我们在网页源代码里搜索pk,value值给他替换进去,我直接给他给他值,
每访问一次,这个密钥不变,是固定的,既然这个值是固定的,我直接在这里写好,登录按钮点击这些我都不要填写什么新的密码,这些我都不要,直接运行,我们可以看到,运行后的密文。
本节内容就到这里啦,如果对你有帮助的,别忘了收藏起来哦,如果有想要一起学习的伙伴,后台发送666,邀你进群,相互学习,一起向自己的方向启航!