关于自制数学验证码的可靠性

rt,想问一下,如果采用含有多个未知数的多项式乘法(加干扰线和底部文字)能否有效阻止大部分bot以及人类滥用?

这不就是普通captcha加了一层计算。说不定机器人会比人做得更好

注意这个帖子和上一个是重复的,因为部分原因(可能是NL Bug)我动不了,管理员直接删,该减能量直接减。

@“0x24a”#p189406 未知数用特殊符号,再加点分数线?

(底部文字有干扰信息)


@“defaultuser6”#p189410 普通captcha不也有这种干扰吗,不还是照样解

@“0x24a”#p189411 emm帮我想个好好点的办法(?

@“defaultuser6”#p189416

要好点基本就是验蠢,比如现在的拖动验证码,人拖动的时候轨迹不固定,有抖动+有可能还会往回拉一点+最后还有可能对不齐

@“0x24a”#p189411 现在都是在用户浏览器上跑js,收集环境信息然后加密传服务器,然后js混淆亿下

这样子虽然不能完全杜绝,比如webdriver(已经能伪装driver特征),但也能增加成本(虽然增加的只有一点点)

所以现在到底有啥办法呢……

@“Xnoob”#p189419 ai基本上能模仿人类了

@“[已注销]”#p189427 这玩意我在书上都看到代码了。。。

@“defaultuser6”#p189432 我的想法: 后端构建一个检测环境并加密传输的js -> 通过一些库和方法混淆js(尽可能失去特征) -> 客户端执行

@“[已注销]”#p189436 这不就是cf吗(

还有我可能还需要一定程度上限制部分人的滥用

@“[已注销]”#p189436 花指令、防止格式化、压缩成一行、重命名方法、混淆字符串、RC4加密、使用Unicode控制字符让代码看起来错误,而且删除这些控制字符无法执行、检测运行环境(浏览器)、防Selenium模拟

@“defaultuser6”#p189439 拉满了


```
let options = {
compact: true,
controlFlowFlattening: true, // 启用控制流扁平化
controlFlowFlatteningThreshold: 1, // 设置为 1 以确保所有控制流都被扁平化
deadCodeInjection: true, // 启用死代码注入
deadCodeInjectionThreshold: 1, // 设置为 1 以确保注入的死代码数量最大化
debugProtection: true, // 启用调试保护
debugProtectionInterval: 1000, // 设置调试保护的时间间隔
disableConsoleOutput: true, // 禁用控制台输出
domainLock: , // 如果需要,可以添加域名锁定
domainLockRedirectUrl: ‘about:blank’,
forceTransformStrings: , // 如果需要,可以强制转换特定字符串
identifierNamesCache: null,
identifierNamesGenerator: ‘hexadecimal’, // 使用十六进制生成标识符
identifiersDictionary: ,
identifiersPrefix: ‘’,
ignoreImports: false,
inputFileName: ‘’,
log: false,
numbersToExpressions: true, // 将数字转换为表达式
optionsPreset: ‘high-obfuscation’, // 使用最大混淆选项
renameGlobals: true, // 重命名全局变量
renameProperties: true, // 重命名对象属性
renamePropertiesMode: ‘safe’, // 安全重命名模式
reservedNames: ,
reservedStrings: ,
seed: Math.floor(Math.random() * 1000), // 随机种子
selfDefending: true, // 启用自我防御
simplify: true,
sourceMap: false,
sourceMapBaseUrl: ‘’,
sourceMapFileName: ‘’,
sourceMapMode: ‘separate’,
sourceMapSourcesMode: ‘sources-content’,
splitStrings: true, // 启用字符串拆分
splitStringsChunkLength: 10,
stringArray: true, // 启用字符串数组
stringArrayCallsTransform: true,
stringArrayCallsTransformThreshold: 0.5,
stringArrayEncoding: [‘rc4’], // 使用 RC4 编码
stringArrayIndexesType: [‘hexadecimal-number’],
stringArrayIndexShift: true,
stringArrayRotate: true,
stringArrayShuffle: true,
stringArrayWrappersCount: 3, // 增加包装器数量
stringArrayWrappersChainedCalls: true,
stringArrayWrappersParametersMaxCount: 3, // 增加包装器参数数量
stringArrayWrappersType: ‘variable’,
stringArrayThreshold: 0.75,
target: ‘browser’,
transformObjectKeys: true, // 启用对象键转换
unicodeEscapeSequence: false // 不启用 Unicode 转义序列,要不然太长
}

```

不过还是不够,再塞点控制字符进去就好了

@“[已注销]”#p189462 byd混淆个Hello, World跑不起来,直接卡死了

Image description</s>Image description<e>

好好好,实测是给控制台ban了

@“[已注销]”#p189462 byd什么软件

​@“defaultuser6”#p190355 #19127