JS逆向是爬虫的难点,是爬虫路上的拦路虎。所谓逆向就是破解网站使用的JS加密算法,拆解相关的参数。然后就可以登堂入室了。
伪加密算法:base64
Base64是一种用64个字符来表示任意二进制数据的方法。
问:为什么base64被成为伪加密算法?
答:使用base64将明文变成密文的操作最多算是混淆。没有密钥注入算法,所以只要拿到密文进行base64解密就能得到对应的明文。
当然还有一种情况就是实现base64的代码被改写,成为定制版的base64算法。这也没关系,把js代码抠出来再用python去执行,也能将密文解密。
信息摘要算法:MD5、SHA
摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。
摘要算法不能被称为加密算法,因为它是单向操作明文的。单向操作的意思就是,将明文变成‘密文’之后是无法再将’密文’变成明文(部分信息摘要算法已经被突破,可实现’密’转明)。
基于这种单向操作的特性,摘要算法一般被用于确保信息传输完整一致。在爬虫模拟登录部分这种算法用得会比较多,举个栗子:
在实际JS逆向中哈希函数的源码经常会被改写,成为定制版哈希函数;还有就是在哈希过程中,明文会被加盐值,遇到些情况就需要认真分析源码。
import hashlib
md5 = hashlib.md5()
md5.update(b'123I_love_salt')
#此处的盐值为 'I_love_salt'
print(md5.hexdigest())
207a9e3b7f1d0c08f5444c8cb92f8d85 #运行结果
对称加密(加密解密密钥相同):DES、3DES、AES
对称加密的核心就是密钥,拿到密钥就等于拿到数据。也不用去管你是AES还是DES,还有多少轮加密的,拿到密钥就用python现成的库去实现解密。
非对称加密(分公钥私钥):RSA
对付像RSA这种非对称加密算法,我们心中应牢记十六字方针——“公钥加密,私钥解密。私钥加密,公钥解密”。
在非对称加密算法中,加密与解密的密钥肯定是不一样的(一样的话,就不叫非对称加密算法了)。牢记“十六字方针”后,我们只要找到‘公钥’和‘私钥’就能解密了。当然python也有现成的库进行RSA解密。
自定义加密函数
顾名思义,这种加密解密形式是非常规的,每个程序员都可以写属于自己风格的加密方式。对于逆向这种加密方式,我们还是抠出加密代码就行了。
补充
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。