某盾文字点选验证码2.28.5版本的深度逆向剖析
某盾文字点选验证码2.28.5版本涉及图片加载、文字坐标识别、鼠标轨迹模拟和验证接口解析等多重技术环节。本文从获取cb参数开始,逐步分析图片获取方式、点选文字定位方法、check接口的data参数解密逻辑,并演示轨迹生成代码实现流程。整个过程适合小白入门,结合实际逆向思路和简单模拟操作,帮助理解验证码背后的加密原理,同时自然延伸到当前市面上可直接应用的便捷识别方案。
某盾文字点选验证码的基本工作原理
获取图片接口中的cb参数

图片是通过get请求动态生成的,请求载荷中包含多个参数。其中dt、id和fp可以直接写死,因为它们在每次刷新后保持不变。irToken和token可以暂时注释掉测试,真正需要解密的只有cb变量。

由于页面加载了大量js脚本,传统的XHR断点工具在这里失效。解决办法是使用浏览器启动器定位发包位置,然后耐心向上跟栈,找到cb参数生成的函数位置。这个方法返回的就是我们需要的图片信息值。

考虑到js代码可能被混淆,建议直接扣取整个文件并补全环境变量。常见对象如window、document、navigator等只需简单补充即可。导出方法并挂在window对象下,确保其他函数能顺利调用。Python调用后即可拿到图片URL、文字列表和token。













window = global
window.addEventListener = function (args) {
console.log('window的addEventListener获取的参数:', args)
}
document = {
body: {},
createElement: function (args) {
if (args == 'div') {
return {
addEventListener: function (args) { console.log('document的addEventListener获取的参数:', args); },
getAttribute: function (args) { console.log('document的getAttribute获取的参数:', args); }
}
}
},
addEventListener: function (args) { console.log('document的addEventListener获取的参数:', args); },
getElementById: function (args) { console.log('document的getElementById获取的参数:', args); }
}
setTimeout = function(){}
setInterval = 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 = {
"ancestorOrigins": {},
"href": "https://dun.163.com/trial/picture-click",
"origin": "https://dun.163.com",
"protocol": "https:",
"host": "dun.163.com",
"hostname": "dun.163.com",
"port": "",
"pathname": "/trial/picture-click",
"search": "",
"hash": "\