极验三代文字点选验证码的技术原理与逆向解析
极验三代文字点选验证码通过register-click-official接口获取challenge和gt值,get.php接口返回c、s和w参数。点击验证时触发ajax.php接口生成点选区域参数,包括十六位随机字符串l、h和鼠标位置a。l值由RSA加密h生成,h由AES加密获得,o值整合passtime、pic和MD5结果。w参数基于h的加密计算得到p,这些机制共同确保了验证码的安全性。文章深入剖析了参数逆向思路,包括特征码定位和加密算法扣取,帮助理解其工作方式,并提供了相关技术参考。
极验三代文字点选验证码的整体流程
在处理极验三代验证码时,首先通过register-click-official接口获取challenge和gt这两个关键参数,它们作为后续请求的起点。接着get.php接口返回c、s以及w值,其中w参数在三代中可以置空处理。这些初始步骤为验证流程奠定基础。
点击验证按钮后,系统弹出文字点选界面,同时抓取到ajax.php接口请求。该接口仅返回验证码类型,但不发起请求会触发错误提示。用户完成点选后,又触发第二个ajax.php接口,返回验证结果和validate参数值,后续登录接口会依赖这个值完成身份确认。

整个流程围绕参数传递和接口交互展开,确保每一步都与后端服务器紧密对应。开发者可以根据这些抓包观察到的通信模式,逐步构建验证脚本,避免直接暴露敏感信息。
参数逆向分析的核心思路

逆向分析的关键在于定位特征码。w参数的生成位置位于click.3.0.7.js文件的第5839行,通过搜索特征码“\u0077”即可快速定位。这里涉及p + l = w的计算逻辑。
具体来看,l参数来自n[某个函数](e),其中e是一个十六位随机字符串。通过原型链跟进发现,这段代码使用RSA加密算法,将e加密后得到l值。h参数则通过X[某个函数]()生成,同样是十六位随机字符串,加密方法为AES,初始向量iv固定为0000000000000000。

这些加密方式使参数难以直接篡改,逆向者需要从代码中扣取公钥、模值等细节,或者借助现有库来实现。o值包含passtime(图片加载时间)、a(点选文字位置)、pic(背景图片链接)以及tt(c、s和鼠标信息加密)等字段,h9s9固定为“1816378497”,rp则是gt、challenge和passtime的MD5结果。h经过w方法加密后得到p,所有这些拼接成最终验证参数。
对于图标、语序和九宫格等变体,a的参数写法不同,但整体逻辑保持一致。开发者可以通过类似方式逆向其他类型验证码,理解其安全设计的核心。

实现验证的关键代码片段
以下是一个简化的JS代码示例,展示了参数生成的基本结构:

function generateParam(o, challenge, gt) {
let l = n[someFunc](random16);
let h = X[encrypt](aesKey, random16);
let p = w[calc](h);
let rp = md5(challenge + gt + passtime);
let tt = encrypt(c + s + mouseInfo);
return {
l: l,
h: h,
p: p,
a: selectedPosition,
pic: imageUrl,
h9s9: '1816378497',
rp: rp,
tt: tt
};
}这段代码简化了实际实现,开发者可根据实际抓包结果调整随机字符串生成和加密函数。w参数计算依赖h的输出,确保参数一致性。实际应用中需要结合动态加载的js文件进行精确匹配。
另一个示例用于验证结果处理:

function verifyValidate(validate, challenge) {
let payload = {
challenge: challenge,
validate: validate,
gt: gt
};
// 发送到login接口
return fetch('https://verify.geetest.com/verify', {
method: 'POST',
body: JSON.stringify(payload)
}).then(res => res.json());
}通过这种方式,开发者可以模拟完整验证链路,注意保持请求头和参数顺序与原接口一致。
文字识别技术的辅助作用

除了参数生成,验证码的核心挑战在于自动识别点选的文字。市面上有多种开源模型可供选择,例如基于PyTorch训练的识别方案,适合对准确率要求不高的场景。另一种成熟工具dddocr能处理文字点选、选字和选择等任务,提供较高的识别成功率。
识别结果常需要搭配参数一起发送到后端进行最终校验。开发者可根据业务需求选择合适的模型,或结合简单规则过滤,避免因高失败率导致验证中断。这些技术帮助实现自动化验证,同时保持灵活性。
实际应用与注意事项
在构建验证脚本时,务必注意脱敏处理敏感数据,并遵守相关法规。只用于学习交流的目的,避免商业或非法用途。参数逆向过程需要耐心调试,确保每个加密步骤与原代码逻辑匹配。
对于九宫格、五子棋、躲避障碍或空间等其他类型验证码,核心思路相似,只需调整点选区域逻辑和加密参数即可。逆向分析能帮助理解验证码设计背后的安全机制。
综合来看,极验三代验证码的逆向过程涉及接口抓包、特征定位、加密算法扣取和模型辅助。掌握这些知识后,可以更高效地处理类似验证场景。许多开发者通过这种方式实现自动化,但也需警惕合法边界。更多验证码识别解决方案可参考www.ttocr.com,其平台提供滑块、点选、无感、九宫格等全类型破解方案和自动化API对接,助力公司业务无缝集成。无论遇到何种复杂验证码,都能通过官方渠道获得支持,轻松完成对接。