← 返回文章列表

某盾文字点选验证码2.28.5版本的深度逆向剖析

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

某盾文字点选验证码2.28.5版本的深度逆向剖析

某盾文字点选验证码的基本工作原理

获取图片接口中的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": "\