之前在扫百度的熊掌号域名时,出现了百度旋转验证码的问题。当时一脑子的想着处理验证码,国内搜了一大圈发现基本上都是自己写了个OCR接口让别人调用。迫于无奈,最终选择了在「Github」上找一份开源进行二次训练开发。
什么是百度旋转验证码模型?
百度旋转验证码模型是一个用于识别旋转验证码的深度学习模型。验证码是用于区分人类和机器人的一种安全措施,在网上注册、登录、发表评论等页面经常使用。
目前比较常见的应该就是长这样的:
前些日子我看百度还增加了点选式的验证码,不过后面全部回调成了旋转验证码。当前的验证形式需要手动旋转验证码,基本是两次以上才能通过。当然,这个是为了应对直接请求非百度官方给出的API地址,如果你是用了「Python selenium」,模拟用户的正常行为还是可以直接操作的。
为什么需要训练自己的验证码模型?
目前市面上有很多通用的验证码识别API,但这些API无法适应各种具体的场景,比如可能出现字体变形、干扰线、噪音等问题。如果需要更高的识别准确率,就需要训练自己的验证码模型。
当然,目前市面上也是有提供百度这种旋转验证的接口,不过毕竟是需要花费money的,无底洞,所以还是我们自己训练一个比较好。
如何训练百度旋转验证码模型?
首先,我们需要收集大量的验证码样本,并将其标记为正确或错误。然后,我们通过数据增强技术来扩充训练集,包括旋转、缩放、加噪声等操作。最后,在深度学习框架中建立模型并进行训练,我们可以选择使用预训练模型作为基础,并针对自己的需求进行微调。
我目前的训练方式是,下载百度安全验证的图片,进行手动还原,然后通过「image_hash」生成我自己的特征库。当然训练数据并不是很大,所以正确率的话是在70%~80%
吧(估算)
图片测试预览
为了便于三方接口的调用,将图片base64编码请求我的API地址,即可返回旋转角度,配合相关代码即可完成图片旋转自动化:
{
"statusCode": 200,
"success": true,
"angle": 268,
"total_consumption": 0.6802420616149902
}
总结
训练和使用验证码模型可以帮助我们更好地应对各种验证码场景,并提高识别准确率。但是要注意,模型的训练需要大量的样本和计算资源,并且模型的效果也需要不断优化和调试。