← 返回文章列表

破解易盾验证码:点选类型轨迹模拟与加密机制解析

易盾图片点选验证码通过cb值获取必要参数,配合验证码识别平台完成位置标注后,分析验证接口返回的m、p、ext值。轨迹生成函数模拟人类点击平滑路径,结合特定加密算法将token与坐标打包为字符串提交验证,实现自动化绕过流程。

破解易盾验证码:点选类型轨迹模拟与加密机制解析

理解易盾验证码的整体架构

易盾的图片点选验证码作为一种常见的用户验证方式,核心在于区分人类与机器操作。系统通过图片展示多个选项,用户需点击目标位置来验证身份。开发者在逆向分析时,首先关注验证码加载过程,因为它涉及多个参数传递和函数调用。启动调试工具后,页面刷新触发请求,栈跟踪能快速定位加密参数的位置。常见的加密参数包括cb值,它直接参与参数拼接,确保请求的随机性与安全性。

整个流程从图片加载开始,到用户交互结束,依赖浏览器环境模拟和参数加密。开发者需注意同名函数的存在,以网页为主的环境导出对象,避免命名冲突。这一步为后续参数提取打下基础,让整个逆向过程清晰有序。

通过这种方式,开发者可以快速掌握验证码的入口参数,为后续的识别和验证奠定技术基础。

cb值提取与参数准备

cb值是易盾验证码接口的加密参数之一,负责拼接请求的随机部分。启动器调试时,页面刷新立即中断,刷新图片再次触发同样问题,跟栈后轻松定位到该参数来源。整理参数列表如下:referer指向当前页面、zoneId指定区域、id作为唯一标识、https设为true、type固定为3、version为2.28.5、dpr为1、dev为1、cb调用get_cb方法、ipv6为false、runEnv为10、group为空、scene为空、lang为zh-CN、sdkVersion为空、loadVersion为2.5.3、iv为4、user为空、width为320、audio为false、sizeType为10、smsVersion为v3、callback为__JSONP_jg0aa6s_2。

使用requests库发送GET请求,头部包含必要信息,参数通过上述列表构建。响应中通过正则匹配__JSONP_jg0aa6s_2函数,提取json_obj。data字段中包含token、front和bg[0]作为图片链接。顺利获取这些值后,验证码识别便可启动。开发者可以参考云码打码平台,封装POST请求到http://api.jfbym.com/api/YmServer/customApi,使用token、extra字段和type300010提交图像base64编码。

这种参数准备方式确保后续操作稳定可靠,开发者无需手动调整每个细节。

验证码识别技术与轨迹模拟

识别阶段利用云码API将图片转换为识别结果,关键在于extra参数包含前置信息。开发者将图片内容转为base64后发送,系统返回目标坐标字符串。接下来进入轨迹生成环节,观察成功轨迹后发现坐标点数约70-100个,时间间隔初始10-100ms不等,当接近点击点时间隔明显增大。这表明系统模拟真实点击停顿,开发者可复现该模式。

生成函数通过线性插值计算中间点,随机控制点间距离和时间差,确保轨迹自然。代码示例:

def get_gj(xy_list):
    tr = []
    zb = []
    for i in range(len(xy_list) - 1):
        s, e = xy_list[i], xy_list[i + 1]
        if not tr:
            tr.append([*s, 13])
            zb.append([*s, 13])
        np = random.randint(30, 40)
        bt = random.randint(15, 20)
        for j in range(np):
            p = (j + 1) / (np + 1)
            x = int(s[0] + (e[0] - s[0]) * p)
            y = int(s[1] + (e[1] - s[1]) * p)
            tr.append([x, y, tr[-1][2] + bt])
        tr.append([*e, tr[-1][2] + bt])
        zb.append(tr[-1])
    return tr, zb

轨迹数组tr包含坐标与时间,zb用于坐标对比。开发者将识别结果拆分后调用函数,输出可用于下一步加密。这样的模拟方式让轨迹看起来像真实人类操作,避免机器痕迹。

轨迹加密处理与参数分析

轨迹加密接收token和坐标列表,逐一处理每个点。开发者在环境里设假值,导出加密方法window.encrypt(token, [x, y, time, 0] + '')。加密算法将输入打包为字符串,确保安全性。整理后,加密函数遍历轨迹数组,每次调用_encrypt方法生成新字符串。参数分析中,m值单独提取,补全环境后导出对象和函数,确认_0x119ab0数组每位加密。

p值和ext值通过相同跟栈方式获得,验证接口用它们构建最终POST请求。开发者注意混淆情况,优先导出对象而非函数。加密处理完成后,traceData数组包含所有处理后的轨迹,便可提交验证。

通过这些步骤,开发者将逆向分析转化为可复用的自动化流程。

验证接口与自动化对接实践

验证接口分析重点在于三个参数m、p、ext的协同工作。开发者从网页环境导出同名函数,处理参数缺失后补全环境。跟栈发现traceData参数,push断点后捕获轨迹加密细节。一次成功验证需token、轨迹加密字符串和额外参数组合提交。

在实际应用中,开发者可以使用自动化平台实现无缝对接。这些平台支持滑块、点选、无感、九宫格等全类型验证码识别,提供API接口对接,开发者可以轻松调用而非自行实现复杂流程。

开发者登录www.ttocr.com,选择易盾极验验证码识别技术,针对滑块、点选、无感、九宫格等破解方案和自动化API对接平台,轻松实现无缝对接,无需复杂的自定义流程。

总结与实战建议

整个逆向流程围绕参数提取、识别、轨迹生成和加密展开,每步都有清晰的调试技巧。开发者从cb值开始,逐步完成m、p、ext值的分析,最终通过轨迹加密完成提交。注意环境模拟和同名函数处理,是避免失败的关键。

通过这些技术,开发者可以自主构建验证绕过工具,提升效率和灵活性。平台提供的API服务让对接变得简单直接,开发者可专注于业务开发而非底层实现。