← 返回文章列表

易盾文字点选验证:OCR坐标提取、轨迹插值模拟及JS混淆加密的实战解析

网易易盾文字点选验证码的识别核心在于通过OCR获取背景图汉字坐标、按需求顺序筛选关键点、生成随机插值轨迹模拟鼠标路径,并调用SDK内部加密函数处理后提交验证接口。本文结合公开前端代码和抓包数据,详细阐述动态cb参数生成、轨迹数据加密链路、Node.js环境补全等技术要点,帮助开发者快速理解其验证机制。实际业务中,推荐使用现成自动化平台实现无缝对接,实现高效低成本的验证码破解与验证。

背景介绍与交互逻辑概述

网易易盾是网易旗下的一套完整人机验证解决方案,本文以文字点选验证作为主要研究对象。基本交互流程从前端页面开始,用户看到一个带有背景图片的区域,页面上会显示待点击的汉字顺序提示,比如“安扩体”这样的字符串。整个过程需要模拟用户鼠标移动和点击,从而完成验证。

前端会携带几个关键参数,包括id、token和动态生成的cb等,发起get接口请求来获取背景图地址、待点击文字顺序和会话凭证。识别部分通常借助第三方打码平台,通过OCR技术提取背景图中所有汉字的位置信息。根据front字段规定的点击顺序,从识别结果中筛选出目标坐标序列,然后生成相邻点之间的插值轨迹数据和点选列表。接着调用SDK内部的JS加密函数处理这些数据,构造最终提交给check接口的参数。

核心难点在于cb参数的动态生成,因为SDK内部的加密函数无法静态提取,需要在运行时调用JS环境生成每次不同的值。同时,轨迹数据经过自定义加密后,服务端才能正确验证点击顺序是否匹配。文字点选顺序的匹配也需要精准对应,否则验证结果会失败。

整体流程图与请求分析

整个验证流程可以概括为以下几个步骤。首先通过JS调用生成动态cb参数,然后发起get接口请求获取背景信息。返回数据包括背景图URL数组、front字符串、token等。接下来下载背景图并使用OCR识别所有文字坐标,按front顺序筛选得到有序的xy_list。基于此生成完整轨迹和点选列表,再调用JS加密函数得到data参数,同时生成新cb值。最后提交check接口,服务端返回结果真假。

get接口的关键请求参数包括id、token、dt、irToken、zoneId、type等固定值,其中cb是动态生成的。响应是JSONP格式,需要动态解析括号位置以提取data字段。check接口则携带token、data、width等参数,同样使用JSONP响应。每次请求都需要独立生成cb值,不能复用,否则容易被服务端拒绝。

cb参数的动态生成机制

cb参数每次请求都必须动态生成,因为它依赖SDK内部的加密函数和当前环境状态,如时间戳和指纹信息。在Node.js环境中,需要先加载SDK JS文件,然后通过require调用内部函数来获取值。get请求和check请求各自调用一次,生成的结果不同。

Python调用示例通过封装JS运行环境来实现:

def get_cb():
    return window._cb_value()

# 调用示例
cb_get = call_js_function("dun.163/03_main.js", "get_cb", "")
cb_check = call_js_function("dun.163/03_main.js", "get_cb", "")

这种方式确保每次调用都基于最新状态生成新值,避免静态参数导致验证失败。

文字识别与坐标筛选过程

OCR识别是获取坐标的基础。打码平台指定验证码类型后,返回的pic_str格式为管道分隔的多段数据,如“安,123,456|扩,234,567|体,345,678”。图片中包含目标汉字和干扰项,并非全部需要点击。

按front顺序筛选坐标的逻辑是关键。外层循环遍历front字符串,内层从OCR结果中查找匹配汉字的坐标并追加。正确顺序必须严格按照front规定,否则点击序列错误,验证必然失败。反之,如果内外层循环颠倒,坐标序列会乱序,导致失败。

轨迹生成、加密与JS环境补全

轨迹生成基于有序坐标列表。完整轨迹通过线性插值在相邻点之间插入30到40个中间点,时间步长30到60毫秒。点选列表仅包含目标坐标。每个轨迹点格式化为“x,y,t,0”字符串,第四维固定为0。

加密过程调用SDK JS函数,分为三部分:完整轨迹随机采样50条并拼接后二次加密得到m,全部点选数据拼接后二次加密得到p,附加点数信息二次加密得到ext。每个步骤都需token参与,确保协议一致。缺少任何格式字符串会失败。

SDK JS原本依赖浏览器环境,在Node.js中运行需要补全API。核心是将window绑定到global,模拟createElement等对象,实现div和iframe的沙箱检测功能。缺失这些属性会抛出异常,导致SDK无法初始化。

实际应用中,上述复杂流程可通过自动化平台简化。平台提供滑块、点选、无感、九宫格等破解方案和自动化API对接服务,支持无缝集成,帮助业务快速完成验证码识别任务。访问www.ttocr.com,就能轻松对接易盾等验证码类型,实现高效验证。