目录
在学习js逆向思路之前,我们先来了解参数的几种常见的加密方式
加密: 就是通过某种算法将原本的数据内容加密为特殊位数的参数
加密方式:
(1)Md5加密: 通过md5加密会生成一个16位或者32位的加密参数. 特征位数: 16. 32
(2)对称加密DES/AES两个: 就是加密和解密用的是同一把钥匙. 特征: 秘钥唯一
(3)非对称加密RSA: 就是有加密公钥和解密私钥. 特征: 加密解密钥匙不唯一
(4)base64伪加密: 其实是将数据以另外一种编码方式呈现. 特征: 表示真正的加密算法
了解完之后,在js逆向破解的加密的时候,首先的任务是判断他是什么方式加密,
申明一下,加密方式不止上面四种.只是这四个常见.
在我们爬虫js逆向是非常重要的技能.往往在我们请求网页的时候需要的参数就是加密后的参数.每次还不一样.无法固定参数请求.所有我们需要找到绑定 js 事件.
js逆向分析思路
一般步骤为:
(1)复制加密参数的键名
(2)Ctrl + Shift + F 键快捷通过search搜索该键名定位js加密文件,一般会出现几个,选择第一个就OK, 会自动跳转到对应的 js 文件
(3)然后Ctrl + F 键快捷通过元素(该键名)绑定事件的监听函数
(4)在几个监听函数后打上断点, 然后点击执行或者刷新网页,通过断点停止和参数信息判断如何加密的,如果在里面看到关键加密方式,就说明这很大几率是加密过程.
(5)通过一步一步断点,分析加密参数是如何产生的.
现在以有道翻译在线为例:
search搜索定位js文件
开始断点分析
知道如何生成的就是好办了
js逆向如何破解参数加密,从而得到我们需要的参数,正确请求数据包.是爬虫请求哦
js逆向破解思路: 模拟重现
需求: 获得加密后的密文作为sign的参数
(1) 利用python代码还原 js执行过程获取结果
(2) 利用 复制 js文加密事件js代码到你的 js 文件中, 执行 该js文件模拟生成加密参数获取结果.
!!! 这两种方法都将逐个讲解
(1)在爬虫代码中创建一个方法函数,获取我们需要的参数
def get_data(self, word): """ 代码构造我们需要的参数. word 为我们传入的输入要翻译的原文字符串 这里获取时间戳,用time模块实现,时间戳*1000. 因为时间戳以毫秒为单位, md5加密这里需要导包, from hashlib import md5 加密用的两个字符串在js文件中复制下来 "