【点赞 收藏 关注 】仅供学习,仅供学习,
1、打开某某网站(请使用文章开头的AES在线工具解密):/zf4dYpaVbBna4oFFFS+lXiskGNj9rKuHiy8z+D57/Lb1mqzgSuIUTJKfYJjLJIs
2、打开网站后,翻页抓包,控制台查看,这就是我们要逆向的【token】值
3、全局搜索,打断点,翻页,断住了,每次加密结果不一样,长度较短,直接排除RSA加密,目测为AES、DES、Base64加密,,里面应该有时间戳,这个token的唯一作用就是反爬虫的,会将token传递给服务器,服务器进行验证后,会看这个token有没有过期,是不是正确的加密方法。但对于会js逆向的爬虫工程师来说,就有点多余,,,直接断点步入进去
4、步入进来后,可以看到他用了一个【crypto】标准库,然后传递进来了一个固定参数【/api/movie】,然后经过循环添加了一个时间戳,然后用sha1加密,加密后的结果在与之前的时间戳合并,然后在进行Base64加密,得出的结果就是token了
5、我们直接本地模拟一下,然后看看结果是否和上面那个图的结果一样 ,,测试完成后,我们将那个时间戳改成实时生成的,然后我们取用python模拟测试一下
6、js直接优化一下,然后python直接模拟成功获取数据
【附上源码】
【token.js】
// 安装 crypto 加解密包
// npm install crypto-js --save
const CryptoJS = require('crypto-js')
function token(){
o = '/api/movie'
t = Math.round((new Date).getTime() / 1e3).toString()
data = [o,t].join(',')
c = CryptoJS.SHA1(data).toString()
data = data = [c,t].join(',')
a = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(data))
return a
}
【token.py】 此处的密文需要经过AES加解密工具工具后得出python代码
JXtvLmP9Dt9/JkkmxV1w1+V6TviFL10uR2oSMSsPES7brQRzziFlUrZ2Vdyapj9OTMw8bGgH1pApGTbedfjZKDGfc9jnv4z3sNWq3wPuJm2RQVX0Hj2OLXG+PExHncPsS+XjJnIJXG9C3fdpaGTuCG6RLC0kd7mjrxvknb2Rvc0/OQPugJWhuK2gRiF6i5S+4mlmZzIt/LQsDfl1yaFpIGTX620aXDR3C+zwLetYIWlYAeEKzFTgOBl/f+GX2QykcCtCBICUmsVnKC2joTY8gfnk/z3GUQrYGTluPqvpIpMKVeGtJJTJXYVRRXdP45yTS2lqsv32AtMFU1xGEWfn55Ghunhf6HNVVCjBlxT4+6lDEbEDUmHYdQ0sQZ/NKPFlsUtmi6iVYFIFyEoaXTeIxes2ZGCJeChofQ/tVEnpUsz4UuJapn5of7ZuW7tS3g6G/0sYtJ3DF96dTfIHNWPYESUeLSSIT2IO3NovxuyTgDx1wg0a9wl126jHi0CGmNcADMBGq8cAQZqlAmZ1CrtNwIVnsyM57cgWiJcSGjnfbPbA7paFIqJa7e8hQOxlX57gVrvh9nvkEH+mfGAVId6NiIPrPgdJ+wW0CjIp4HEJCB9o5hoWPGcQ6x07vK8a8CEKVRjBGcW0+e1iWsYURFmd46U2Y8bAftXreo69kK/Pro9oYs1Y0z6u/3OFqSt88bWpf0oXogFakr14Mrh9xgevnEAAyzXsbro0hcEC+1XWv3HOqPDES/3hBIJLRo0MRmYTfi8+XdfDW9ZQYHntv+AQd+BNlfGAlsh6G5jVC9QO9NooaLaw6GeH3SB3fE+Byp4p6VeJec5Nf3Z83Ogu2oTUUgqexXuRMLIP3NkR4pUCmNqdN+iPU0YMFHSa4xARZ8aZgWrtJ2I6Dc51iIQ2ZBVoRA==