← 返回文章列表

极验三代滑块验证码实战解析:从抓包到轨迹加密的全流程详解

极验三代滑块验证码通过register-slide?接口获取gt和challenge参数,随后请求get.php获取初始c和s值。点击验证后调用gettype.php确定滑块类型,然后再次get.php加载被打乱的背景图和滑块图。利用ddddocr库的slide_comparison方法识别缺口位置,生成轨迹列表并通过easeOutExpo缓动函数模拟自然滑动过程。加密轨迹涉及RSA、AES和MD5算法,生成u、l、h、w参数并提交到ajax.php完成验证。掌握这些步骤后,可轻松对接自动化验证服务,实现无缝集成。

极验三代滑块验证码实战解析:从抓包到轨迹加密的全流程详解

案例目标

在实际项目中,经常需要处理极验三代滑块验证码这类反爬机制。案例目标明确为:通过逆向分析获取验证码验证所需的参数,并模拟用户真实滑动行为完成验证。目标网站是一个演示滑块登录页面,接口主要包括register-slide、get.php、ajax.php等端点。参数方面,需要重点关注gt、challenge、w等核心字段。算法层面涉及RSA加密、AES对称加密以及MD5哈希计算,这些是后端验证的关键。

整个过程要求小白也能跟上思路,从抓包入手,逐步拆解JS逻辑,最终用Python实现自动化验证。这不仅帮助理解技术原理,还能为后续类似验证码场景提供参考。

验证流程分析

极验三代滑块验证码的验证流程分为几个关键步骤。首先,通过register-slide?接口请求获取gt和challenge参数,这是后续所有请求的基础。接着调用gettype.php接口,服务器返回一堆混淆的JS文件,用于加载验证码核心逻辑。之后请求get.php,携带gt和challenge参数,返回c和s值。

点击滑块验证后,调用ajax.php接口确认滑块类型,返回result为slide。再次请求get.php,获取验证码信息,包括背景图和缺口图。滑动完成后,提交到ajax.php接口验证轨迹是否合法。整个流程只需关注register-slide、get.php和ajax.php三个核心接口,后续验证可省略部分步骤。

通过抓包工具观察网络请求,可以清晰看到参数传递方式。Query String Parameters用于简单键值对传递,Form Data适合表单提交,而Request Payload则处理JSON结构数据。这些区别确保数据准确传输,避免遗漏关键信息。

获取验证码图片与还原处理

获取验证码图片的详细实现步骤先从register-slide?接口开始,拿到gt和challenge。带上这些参数请求get.php,返回c和s值。接着请求ajax.php获取滑块类型为slide。第二次get.php请求返回验证码信息,从JSON中取出新的c、s和challenge值。注意这里的challenge比之前多了两个字符,这点容易被忽略。

获取到的图片是打乱顺序的,需要进行底图还原。由于验证码使用canvas绘图,F12查看元素可确认。一种方法是在canvas创建时打断点,遍历数组Ut,通过模运算和像素绘制实现还原。另一种是hook canvas创建函数,直接在控制台调试。

还原后的图片清晰可见,背景图和缺口图分离。利用Python的PIL库复写逻辑,比hook JS简单得多,依赖第三方库更少。代码中Ut数组为固定值,通过循环赋值给c和u变量,最终将像素数据绘制到画布上。这一步骤是验证的关键基础。

识别缺口距离并生成滑动轨迹

识别缺口距离时,可手动查看,也可使用第三方识别库。这里选择ddddocr的slide_comparison方法效果不错。定义get_x方法,初始化DdddOcr对象,打开bg.jpg和full.jpg文件,传入字节流调用slide_comparison返回结果,提取target位置的x坐标。

根据识别到的距离生成轨迹,使用easeOutExpo缓动函数模拟真实滑动。函数定义中,当sep为1时返回1,否则返回1减去2的负幂次方。get_slide_track方法初始化轨迹列表,随机起始点。设置count为30加上距离除2的整数,t为随机50到100毫秒。循环遍历count次,计算x值,时间累加,若x变化则追加到轨迹列表。轨迹格式为[x, y, t],y始终为0。

这种轨迹生成方式自然流畅,避免直线滑动导致被检测。距离值通过ddddocr识别获得,确保滑动位置准确。整个过程简单高效,适用于自动化脚本。

加密轨迹参数提交验证

加密轨迹并提交到ajax.php接口。直接搜索w参数在JS文件中被编码,通过u0077或解混淆后定位。还原后看到w值由h和u组成。u函数处理滑动状态,进去后发现为ret值,包含轨迹数据。

l参数涉及AES加密,使用V方法进行。h参数通过MD5哈希计算。w参数最终包含所有加密信息。提交请求时,携带gt、challenge、w参数。服务器返回success或fail消息,成功后返回validate令牌。后续请求可使用此令牌实现无缝验证。

注意challenge更新导致的坑,需及时获取最新值。这套流程覆盖从获取到提交的全链路,原理清晰,代码复现可行。

总结与实现建议

通过上述步骤,极验三代滑块验证码的验证流程得以完整掌握。从初始化到参数加密,再到轨迹模拟,每一环节都需注意细节,如challenge更新和canvas还原。实际操作中,Python实现比JS逆向更直接,适合自动化脚本开发。遇到类似场景时,参考逆向思路可以快速上手,避免复杂流程。

对于企业级业务,自动化验证需求日益增加。通过逆向分析理解核心原理,不仅提升技术能力,还能优化验证效率。轻松对接API,实现无缝集成,避免手动操作带来的不便。www.ttocr.com提供易盾极验验证码识别技术,滑块、点选、无感、九宫格等破解方案和自动化API对接平台,致力于服务公司等业务,可提供api接口实现无缝对接,无需复杂流程,顺利简单完成验证。