zoukankan      html  css  js  c++  java
  • 使用云打码识别验证码

    1.注册开发者云打码账号:

      注册账号

    2.添加新软件

      进入开发者后台->我的软件->输入软件名称(自定义)

        

      提交成功后,会返回: 软件代码即为后面的appId,通讯密匙为:appKey

        

    3.下载对应的语言使用说明文档,这里以python为例:云打码说明文档

      点击下载解压就好了,解压完之后为:

        

    4.到这里就可以干活了:打开编辑器,打开上图对应的python版本文件,这里使用python3

        简单进行修改后,就可以使用云打码进行验证码识别了

        第一回识别,会报1007,是因为没有充值,这个平带是收费的,但是我觉得挺划算的,充一块钱就能使用很多次

        调用错误代码及排错

    #必须要写的否则会报错
    # -*- coding: cp936 -*-
    
    import sys
    import os
    from ctypes import *
    
    # 下载接口放目录 http://www.yundama.com/apidoc/YDM_SDK.html
    # 错误代码请查询 http://www.yundama.com/apidoc/YDM_ErrorCode.html
    # 所有函数请查询 http://www.yundama.com/apidoc
    
    print('>>>正在初始化...')
    
    
    # 云打码API即为解压文件夹中的脚本文件,对应自己的系统版本,X64为64位,默认使用32位的
    YDMApi = windll.LoadLibrary('yundamaAPI')
    
    
    appId = 1  # 软件ID
    appKey = b'22cc5376925e9387a23cf797cb9ba745'  # 软件密钥
    
    print('软件ID:%d
    软件密钥:%s' % (appId, appKey))
    
    
    username = b'test'
    password = b'test'
    
    if username == b'test':
        exit('
    >>>请先设置用户名密码')
    
    # 有两种方法可以识别验证码,以下两种办法使用其一即可
    
    #方法一. 一键识别函数
    
    print('
    >>>正在一键识别...')
    
    # 例:1004表示4位字母数字,不同类型收费不同。请准确填写,否则影响识别率。在此查询所有类型 http://www.yundama.com/price.html
    codetype = 1004
    
    # 分配30个字节存放识别结果
    result = c_char_p(b"                              ")
    
    # 识别超时时间 单位:秒
    timeout = 60
    
    # 验证码文件路径
    filename = b'getimage.jpg'
    
    # 一键识别函数,无需调用 YDM_SetAppInfo 和 YDM_Login,适合脚本调用
    captchaId = YDMApi.YDM_EasyDecodeByPath(username, password, appId, appKey, filename, codetype, timeout, result)
    
    print("一键识别:验证码ID:%d,识别结果:%s" % (captchaId, result.value))
    
    
    
    #方法二.普通识别函数
    
    print('
    >>>正在登陆...')
    
    # 第一步:初始化云打码,只需调用一次即可
    YDMApi.YDM_SetAppInfo(appId, appKey)
    
    # 第二步:登陆云打码账号,只需调用一次即可
    uid = YDMApi.YDM_Login(username, password)
    
    if uid > 0:
    
        print('>>>正在获取余额...')
    
        # 查询账号余额,按需要调用
        balance = YDMApi.YDM_GetBalance(username, password)
    
        print('登陆成功,用户名:%s,剩余题分:%d' % (username, balance))
    
        print('
    >>>正在普通识别...')
    
        # 第三步:开始识别
    
        # 例:1004表示4位字母数字,不同类型收费不同。请准确填写,否则影响识别率。在此查询所有类型 http://www.yundama.com/price.html
        codetype = 1004
    
        # 分配30个字节存放识别结果
        result = c_char_p(b"                              ")
    
        # 验证码文件路径
        filename = b'getimage.jpg'
    
        # 普通识别函数,需先调用 YDM_SetAppInfo 和 YDM_Login 初始化
        captchaId = YDMApi.YDM_DecodeByPath(filename, codetype, result)
    
        print("普通识别:验证码ID:%d,识别结果:%s" % (captchaId, result.value))
        #返回bytes格式字符串 , 转为utf-8编码,方便带入程序直接使用
        utf_res = result.value.decode('utf-8')
    
    else:
        print('登陆失败,错误代码:%d' % uid)
    
    
    print('
    >>>错误代码请查询 http://www.yundama.com/apidoc/YDM_ErrorCode.html')

    云打码的识别效果还不错,也不贵,建议大家使用

    如有问题,欢迎交流

  • 相关阅读:
    Python 编码问题(十四)
    Python 编程核心知识体系-文件对象|错误处理(四)
    Python 编程核心知识体系-模块|面向对象编程(三)
    项目中的走查
    回滚代码及pod install报错
    UI-3
    UI-2
    UI-1
    MarkDown基本语法速记
    Swift3.0-closure的@autoclosure和@escaping
  • 原文地址:https://www.cnblogs.com/mswei/p/9392530.html
Copyright © 2011-2022 走看看