这期我来玩一点黑科技的东西
最近有同事在搞爬虫时碰到了极验的第二代拖动式验证码,让我帮忙给研究一下。
于是乎我从极验官网下了demo在看。又通过网上其他同学的思路,大概研究出来了。
本人声明:我只是出于技术的爱好去研究了一下,请勿用来做一些非法勾当。
工具
项目是用的python去做的
用到了python的一些库:
PIL(做一些验证码图片的处理、如图片还原、对比缺口)
selenium(模拟浏览器)
phantomjs(浏览器内核,测试时我用的chrome驱动,正式使用时我会替换成phantomjs)
思路
这里参考网上其他同学的思想,(假设你已经了解了极验拖动验证码的一些规则):
1. 找到验证码的图片,将乱序的验证码还原
2. 对比bg和fullbg两张图片,找到缺口位置
3. 用selenium模拟人的行为拖动滑块
4. 验证结果
以上思路中1和2网上都能找到很多例子,难的就是如何写一个拖动轨迹的算法,让浏览器模拟人的行为并且让极验服务器那边大概率地判定为是人操作的。
这里其他同学有不同的做法:
1.用人去拖动滑块,录制轨迹,然后用通过的轨迹去回放
2.有一些逆向工程比较厉害的人反编译geetest.js,毕竟前端加密还是比较弱的,破解js里的算法然后伪造数据
因为我比较笨,实在是不知道怎么反混淆js。就想着纯算法模拟。
以下我就着重介绍一下第三步
分析
打开带有极验验证码页,