极验滑块详细流程(记录一下)
首先分析请求
页面获取来的信息
gt/register:参数里有个时间戳校验,返回了challenge,gt
gettype.php?;返回了一些后面的fullpage.9.1.1.js"文件,参数用到了前面的challenge,gt,还有个加密的w(加密,环境校验)
点击验证获取的信息
ajax.php?;用到了challenge,gt,w是改变的有可能是轨迹,
get.php?;用到了challenge,gt返回了原图(乱码)遮罩图(乱码) 滑动图
验证成功返回的信息
ajax.php?用到了challenge,gt,w,返回了validate:表示成功了
这时候请求分析完了,challenge,gt请求就能获取了,重要的就还原图片了
这个W也该是(加密了,环境校验,轨迹),应该是重点
开始js调试
目的;还原图片
这里点击获取的图片,这里用个全局事件断点
看见这些值,应该就是这里了,这里有个平坦流,下段调试(新手可以在case下面都下个断点)
从上面的for循环代码中不难看出,逻辑是将乱图分为上下26份小图,由乱图的26份的10×80小图片拼接成是260×160的图片,并且经过多次调试得到Ut
值为固定的,这个数组应该就是还原图片了,值得注意的是乱图中的宽度为312,312/26=12,按道理说每个小图片的长高应该为12x80才对,而实际上却是每个小图片去除了两个像素的,所以计算的时候用的10x80
基本OK把算法扣下来,在py里实现一下
这里就完成了图片还原,接下来识别缺口,生成轨迹(轨迹网上有现成的,识别缺口推荐使用ddddocl简单好用属实给力)
目的;获取w值
搜了下w乱的很,直接跟栈,这里直接标出了,大家自己分析了
进去后面发现w值=h+u
先分析下u下段跟进去
‘’ var e = new U()‘encrypt’’
看见这个[encrypt]就顺便看下前面参数
看见setPublic是RSA里面设置公钥的,这里是个RSA加密,分析下后面的参数
后面那个参数是个随机数,比较简单魔改一下自己
再看看前面加密的参数
开了几个看了这个是固定值跟进去看看,加密前的参数就获取了,然后分析加密,发现都在U里
这下简单了,把U扣下来
OK完成了,第一个参数搞定
看了下是个大数组,第一个参数应该重点在o,第二个还是之前的随机值,分析o
多在无痕开几个页面对比一下,分析如下
“aa”:对轨迹和响应的c和s参数进行了加密
ep:基本固定的,tm:window[“performance”][“timing”] 的属性
h9s9;随机生成的
“imgload”:图片加载时间
passtima:轨迹滑动总时长
“rp”: 对gt、challenge、passtime进行了md5加密
“userresponse”: / 对滑块距离和challenge进行了加密
基本还是老方法,扣就完事了这里难一点的aa,扣下aa
跟栈找到,分析下,第一个参数应该是轨迹,第二个就是之前请求返回来的参数ch,第三个也是返回的s
这里就比较省事了跟第一个
这里分析应该是传进来了一些轨迹进行了一些处理(传进来的数组前面减后面的生成了一个新的轨迹然后进行加密,这要的好处是省点空间)这里是第一次加密直接扣下来,一招吃遍天
这里注意下,把轨迹参数先设置成变量后面在传参
搞定,然后把前面的二次加密扣下来
先用他的值生成一样的对比一下一不一样
这l需要的参数o,和随机数就都有了,扣下来传入l就ok了
![!](https://img-blog.csdnimg.cn/776beb92fea24e3f9cf034b89ec24995.png)
搞定剩下的一样的套路,基本搞定了,剩下py里实现,缺啥补啥## 标题
最后成果,真累啊,记录一下,试了几次基本成功率在95左右.这基本最详细的了把