验证码几乎100%识别-基于完美验证码识别库3.2.1和Python实现

一 效果展示:

测试的图片验证码接口:

可自动去拿到接口图片,识别成功显示在控制台,我自己做的识别库准确率基本99%,就是基本都能识别成功!(这里图片和控制台不一致是因为网站刷新了,不是识别错误哦)

二 实现流程:

1.制作自己对应的字模库

需要用到完美验证码3.2.1软件,字模库就相当于自己训练的数据模型吧,它会根据你的数据来识别验证码,库做的好,识别率可极高。最后这一步是导出一个字模库dat文件和字模库密码。具体的软件使用规则,可网上找找,基本很快学会。

(1)先对图片处理一下,更清晰减少影响:

(2)我的识别库示例:

2.弄python环境:

有了dat字模库和密码后,需要搭建环境,为python环境,win32。因为这个调用限制32位环境执行。作者是win7 32位,python3.7.1,亲测成功。代码中xxxx部分都是路径,自行修改对应路径。其中涉及的WmCode.dll为完美验证码软件里面的文件,注意!

import ctypes
import requests

# 验证码识别 基于完美验证码库3.2.1和python实现

dat_path = 'xxxxx\\皮卡丘靶场\\皮卡丘靶场.dat'  # 制作好的识别库路径
dat_pwd = 'xxx'  # 制作好的识别库打开密码
url = 'xxxx2/inc/showvcode.php?'  # 要识别的验证码链接接口
save_path = 'xxxxx皮卡丘靶场\\验证码.png'  # 验证码图片存到指定本地路径中

def download_image(url, save_path):
    response = requests.get(url)
    if response.status_code == 200:
        with open(save_path, 'wb')as f:
            f.write(response.content)
        return save_path
    else:
        return None


# 定义DLL加载和使用的函数
dll = ctypes.windll.LoadLibrary("xxxx\\完美验证码识别3.21\\WmCode.dll")
if not dll.UseUnicodeString(1, 1):
    print("DLL文件调用失败!")
    exit()

if not dll.LoadWmFromFile(dat_path, dat_pwd):
    print("加载验证码库失败!")
    exit()

str_buffer = ctypes.create_string_buffer(20)  # 创建缓冲区

local_path = download_image(url, save_path)

if not dll.SetWmOption(6, 80):
    print("设置识别库选项参数失败!")

if (dll.GetImageFromFile(local_path, str_buffer)):
    str = ctypes.cast(str_buffer, ctypes.c_char_p).value.decode("UTF-8")
    print("识别验证码成功:", str)
else:
    print("识别验证码失败!")

三 提醒总结:

python环境这里,提示urllib3和openssl不匹配报错的话,报错提示我升级openssl。我python输出openssl版本1.1.0,cmd输出openssl版本是1.1.1,一直在找切换python的openssl为系统的openssl版本,一直没有成功。。最后方法是降低urllib版本为1.26.6完美解决。

完美验证码3.2.1下载:

完美验证码识别引擎V3.2.1

链接: 百度网盘 请输入提取码 提取码: 3uyq

百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间icon-default.png?t=N7T8https://pan.baidu.com/s/1jO_i7tUG6UgvoQzk6PgcJA

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南浔z

哥们爱你

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值