(编辑:jimmy 日期: 2024/11/10 浏览:2)
@TOC
上一篇已经跟到明文的拼接函数,接下来看看get函数的返回值,对什么进行拼接。
在这一次运行中,第一次get返回的是一个10,是怎么计算出来的呢?
模块9就是环境检测的函数了,做了一些与环境相关的运算,最终返回10为结果。一般来说不需要太理会中间是怎么计算的,只要知道检测正确的返回值是多少,然后固定这个正确的值就可以了,那么接着下一个get
第二个get的返回值是一个字符串,看看又是怎么运算出来
实际这是一个固定值,没有任何的运算。如此类推,一直把37个get函数都执行,然后把返回值拼接
这里就可以看到待加密的明文字符串,然后这里会调用多次,进行分段加密,结尾是 "]," 的时候,才是最后一次
【4181】函数可以理解为一个填充的函数,然后就调用【10009】函数进行加密
这里看到一些特殊的字符串,实际是密钥的初始化
可以看出是一个把【 5】魔改为【> 5】的tea加密,密钥是4个int,也就是16字节。在几天,或者十几天内,看起来是不变的,那么可以用ast动态还原出密钥,也可以手动获取key用它个一段时间。在发文时的key为【QiPXNgNXhnjVfFhT】。既然加密知道了,tea是对称加密,用相同的密钥可以解密出密文,那么我们那网页生成的参数试试
非常漂亮的解密出明文,后面只要自己构造参数,然后加密就可以得到可用的collect参数。
其中计算滑块距离使用的是ddddocr三方库
距离生成轨迹使用帖子【极验反爬虫防护分析之slide验证方式下图片的处理及滑动轨迹的生成思路】提供的帖子
经过前面的铺垫,部分重复的内容会适当跳过。需要发送请求,还需要一个vData,而这个参数是在另外一个js文件中,
直接查找send方法,绑定的是【20539】函数,里面实际调用的【getCaptchaData】这个函数,地址是【22317】
明文就是这一个对象,里面包含8个固定的键名,除了【key】这个键以外,其他的值都是固定的。key的计算就是把【tlg】中的每一个值看做下标,然后在【sess】上取值。一般来说collect都是上千位,所以tlg是四位数,所以key的值也是四位。
然后是打乱字符串顺序,最后就是那个魔改的tea加密,密钥固定为【34e2c8f07b5169ad】
最后的encode是一个base64编码,只是编码表被修改了,其他都是一样的。逻辑理顺了之后,使用python跑起来试试