1.加密参数算法还原的优劣:
优:1.参数生成的速度极快,调用快,整个过程在几毫秒间就能完成。
2.不用关心环境问题,没错,不用关心环境问题!
3.对抗周期长,即在某个网址的参数加密上的算法更新时,进行算法还原,在这过后很长时间内官方不会动算法,环境可能经常动,就算更新只要他不是从头到尾更新都能快速的找到相应的位置。
劣:1.第一次算法还原时间较长
纯算的结果和时间差:
1.纯算3毫秒,不涉及调库

2.补环境33毫秒,不涉及python调用

2.学会算法还原的基础
1.debug调试(这里集中于pc端的爬虫)
·开发者工具的熟练使用
·加密位置的查找
·混淆文件的平坦流调试
由于这是爬虫开发者的基础这里不详细展开说说了
2.常见的加密
·MD5
·哈希加密
·对称加密
·非对称加密
小提示:因为这里最后的结果是0x(十六)进制,而加密过程中以0b(二)存在所以,只要用对应的加密长度......就能得到它命名后的数字部分几位除了MD5
3.位运算
对常见的加密进行魔改或者自定义加密算法都离不开它,位运算是加密的核心部分没有了它就没有高难度的加密,所以这部分内容是整个算法还原的骨骼与血肉。
基本概念:
二进制正数:最左侧为0
二进制负数:最左侧为1,对应的正数取反加1就是该负数
运算符有<<,>>,>>>(python中不存在),&,|,^,~ 前6个均是二元运算符,第七个是取反,并且都是对数的二进制进行位运算,名字有按位**的表示左右都是二进制的运算,否则是单个二进制或者二进制和整数,具体如下:
- <<或>>:对二进制数左移或者右移,位移后正数左侧不足位补0,负数左侧不足位补1,右侧超出位被丢弃。eg:1010 >> 2 = 1110
,从右往左看分别是0,1,0,1,为了理解令它们分别为a,b,c,d,他们分别往右移动2位,显然a,b没有了超出位了,c,d到了原来的a,b处,左侧2位空了且为正所以补1。a = 1010 >> 2 print(a) - &或|:js中&&,|| 分别表示与,或。这里&,|分别表达按位与,按位或,顾名思义了,这里只说一个,可以类比得到另外一个,&->左右的二进制都为1时为1,否则为0,说明了,只会改变1的值,2个中有一个有0那么运算个结果对应的位为0,那么|->只会改变0的值,2个中有一个有1那么运算个结果对应的位为1
- ~或^:~就是取反0变1,1变0。^为按位异或,左右位的数相同时为0,否则为1,用于快速交换变量,加密解密
a ^= b b ^= a a ^= bcipher = data ^ key#加密 cipher ^ key = data#解密 - >>>:无符号右移,
1.首先要32位截断即 & 0xF*8(F对应1111),对于大于32位截断,小于的不变,注意通过这个操作的结果是无符号的整数,如果通过它计算过后得到a,js中会是有符号,python是我们自己整的没有符号,所以就有了下一步
2.32无符号整数变为32有符号整数:
a = a if a <=0x7FFFFFFF else a - 0x100000000
3.理解参考
小伙伴们别着急,这个不难理解,0xF*8中的F是1111,32位就是4*8 = 32,
32有符号范围是(-2**31~2**31-1)1位用来表示符号。0x7FFFFFFF是有符号最大整数,
0x10000000是2*32次方。小伙伴们懂了吧~
4426

被折叠的 条评论
为什么被折叠?



