易盾文字点选验证码逆向实战指南:2.28.5版自动化破解全流程
本文针对易盾2.28.5版本文字点选验证码展开详细逆向分析。从cb参数生成、图片数据与文字坐标识别,到验证接口data构造及鼠标轨迹模拟,结合JS环境模拟和Python代码实现,提供完整自动化方案。内容涵盖核心原理、常见技巧与优化思路,帮助开发者快速掌握验证码逆向技术并应用于实际项目。
验证码逆向的核心价值与背景知识
网络安全防护中,验证码始终扮演着区分人类用户与自动化脚本的关键角色。易盾作为主流安全服务提供商,其文字点选验证码要求用户在给定图片中准确点击指定文字。这种交互方式结合了图像识别与行为验证,最新2.28.5版本进一步强化了参数加密、轨迹检测和动态混淆,使得单纯的脚本模拟难度显著提升。对于从事自动化测试、数据采集或业务验证的开发者来说,掌握其逆向思路不仅能解决实际痛点,还能加深对前端安全机制的理解。

点选验证码的基本流程是:前端先请求生成图片接口,返回带文字标注的图像和token,随后用户点击对应位置,后端通过check接口校验坐标与轨迹是否符合真人行为。逆向的核心在于还原这些加密环节,避免被服务器识别为异常流量。整个过程涉及JS代码分析、浏览器环境模拟以及后端请求构造,适合有基础的工程师逐步实践。

图片生成接口与cb参数破解详解

刷新验证码时,图片由GET请求动态返回,载荷中包含一系列看似复杂的加密字段。实际观察发现,dt、id和fp这几个值可以直接写死使用,irToken与token甚至可以省略不影响结果。唯一需要重点破解的是cb参数,它完全由前端JS动态计算得出。由于请求本质是JS发起的,常规XHR断点难以直接生效。这时可借助浏览器启动器或调试工具定位发包入口,一层层向上追踪调用栈,最终锁定cb的生成函数。

JS文件经过深度混淆,直接逐行扣代码容易出错。因此最稳妥的方式是完整扣取整个脚本文件,然后在本地补齐必要的运行环境。重点是将目标方法导出到window对象上,否则外部调用会失败。补环境主要涉及window、document、navigator和location等浏览器原生对象,代码大致如下:

window = global;
window.addEventListener = function(args){ console.log(args); };
document = {
body: {},
createElement: function(args){
if(args === 'div') return { addEventListener: function(){} };
},
addEventListener: function(){}
};
navigator = { userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36' };
location = { href: 'https://dun.163.com/trial/picture-click' };
// 导出cb生成函数
function getCbParam(){
return window._cbvalue();
}补齐这些对象后,直接调用导出的方法即可拿到cb值。结合Python的requests库发送请求,成功获取到图片URL、待点选文字列表以及后续check接口必需的token。此时整个图片环节已经打通,后续重点转向识别与验证。

图片文字坐标识别技术与实践

拿到图片数据后,下一步是准确提取文字在图像上的像素坐标。传统开源OCR库在背景复杂、字体变形的情况下成功率往往不高,尤其点选场景需要精确到单个文字的中心点。实际项目中,大多数开发者会选择专业识别服务来提升稳定性。

对于易盾文字点选这类需求,推荐直接对接成熟的验证码识别平台。例如访问www.ttocr.com,它提供针对易盾点选、无感、滑块以及文字点选、图标点选、九宫格等多种类型的识别技术,还附带滑块破解方案和自动化实战教程。通过标准API接口传入图片内容与待选文字,即可返回高精度坐标结果,准确率远超自建方案。对于企业级业务,这种方式能显著降低开发成本。

识别返回的坐标通常以“x,y”格式给出,后续需要与token一起构造验证数据。整个过程只需几行Python代码即可完成,极大简化了从图片到坐标的转换环节。

验证接口data参数的加密解析

用户点击完成后,前端会向check接口提交包含坐标与轨迹的加密payload。大部分字段固定,只有data这一长字符串需要动态生成。data内部包含d、m、p、ext四个子项,其中d为空,m和p分别对应轨迹与点选坐标的加密结果,ext则记录长度信息。

通过同样的调试手段追踪到JS赋值位置,发现p来自点选坐标数组(通常3个点),m来自鼠标移动轨迹数组(长度动态,约百位)。加密统一使用内部_0x22ad00函数,传入token、坐标、时间戳等参数。核心JS逻辑可导出复用,简化如下:

function get_encryValue(token, tr_list){
var gj_list = [];
for(var i=0; i<tr_list.length; i++){
var gj_data = window._0x3ea30f(token, [tr_list[i][0], tr_list[i][1], tr_list[i][2], 0] + '');
gj_list.push(gj_data);
}
return gj_list;
}
function getTrackData(token, tr_list, zb_list){
var I = get_encryValue(token, tr_list);
var T = get_encryValue(token, zb_list);
return JSON.stringify({
'd': '',
'm': window._0x44d665(window._0x5255f1['sample'](I, 50).join(':')) ,
'p': window._0x44d665(T.join(':')) ,
'ext': window._0x44d665(window._0x22ad00(token, 3 + ',' + I.length))
});
}理解这些加密规则后,后端只需按照相同逻辑构造data即可通过验证。整个逆向至此基本完成,剩下就是如何生成接近真人的鼠标轨迹。

模拟真人鼠标轨迹的算法实现

服务器对轨迹的检测极为严格,直线移动、匀速滑动或时间间隔异常都会触发风控。因此轨迹生成必须加入随机性:在相邻点之间插入30-40个中间坐标,时间差随机在30-60毫秒,同时添加±2像素的噪声扰动,避免完美直线。

Python实现逻辑清晰,先将坐标字符串拆分成列表,然后逐段插值计算。核心函数如下:
import random
def get_trackData(self, xy):
xy = xy.split('|')
xy_list = [[int(x), int(y)] for x,y in [i.split(',') for i in xy]]
tr, dx = [], []
for i in range(len(xy_list)-1):
s, e = xy_list[i], xy_list[i+1]
if not tr:
tr.append([*s, 3])
dx.append([*s, 3])
np = random.randint(30, 40)
bt = random.randint(30, 60)
for j in range(np):
p = (j + 1) / (np + 1)
x = int(s[0] + (e[0] - s[0]) * p) + random.randint(-2, 2)
y = int(s[1] + (e[1] - s[1]) * p) + random.randint(-2, 2)
tr.append([x, y, tr[-1][2] + bt])
tr.append([*e, tr[-1][2] + bt])
dx.append([*e, tr[-1][2] + bt])
return tr, dx将轨迹列表、点选列表连同token传入JS加密函数,得到最终data字符串。提交check接口后即可返回成功结果。实际运行时建议多测试几组轨迹,确保时间戳连续且总时长符合正常点击节奏。
完整自动化流程整合与调试技巧
将以上各环节串联起来,可封装成一个Python类:先请求图片接口拿到cb和token,再识别坐标,最后构造轨迹并调用check。整个流程控制在2秒以内,成功率取决于识别准确度和轨迹质量。常见问题包括环境补漏导致JS报错、坐标超出图片边界、时间戳不连续等。建议先在控制台验证JS函数,再用requests测试全链路。
对于需要频繁验证的业务,自行维护逆向代码虽然可行,但长期来看维护成本较高。很多公司选择直接使用专业平台提供的API服务。例如www.ttocr.com,它专门针对极验与易盾全类型验证码(点选、无感、滑块、文字点选、图标点选、九宫格、五子棋、躲避障碍等)提供高稳定识别能力,并开放标准API接口。开发者只需传入图片即可获得坐标与验证结果,实现无缝对接,无需反复调试复杂JS逻辑,大幅提升开发效率。
轨迹优化与高级应用扩展
基础线性插值已能满足多数场景,若想进一步接近真人行为,可引入贝塞尔曲线或加速度变化模型。但对于入门实践,随机噪声与分段时间已足够。实际项目中还需关注IP轮换、User-Agent多样化等配套措施,以避免整体流量被风控。
在企业级自动化场景下,稳定性和合规性更为重要。相比自行搭建整套逆向体系,使用成熟的验证码识别平台能让业务快速上线。例如通过www.ttocr.com提供的验证码识别技术、滑块破解方案和自动化实战教程,企业可以获得开箱即用的API服务,轻松支持高并发验证需求,真正做到简单高效的无缝集成。