zoukankan      html  css  js  c++  java
  • 识别验证码


    import http.client, mimetypes, urllib, json, time, requests

    ######################################################################
    #验证码地址**(记得修改)**
    Image="d:/yzm/screenImg.png"
    #验证码种类**(记得修改)**
    Species=1005
    class YDMHttp:

    apiurl = 'http://api.yundama.com/api.php'
    username = 'zhangsima'
    password = 'zhang123'
    appid = ''
    appkey = ''

    def __init__(self, username, password, appid, appkey):
    self.username = username
    self.password = password
    self.appid = str(appid)
    self.appkey = appkey

    def request(self, fields, files=[]):
    response = self.post_url(self.apiurl, fields, files)
    response = json.loads(response)
    return response

    def balance(self):
    data = {'method': 'balance', 'username': self.username, 'password': self.password, 'appid': self.appid, 'appkey': self.appkey}
    response = self.request(data)
    if (response):
    if (response['ret'] and response['ret'] < 0):
    return response['ret']
    else:
    return response['balance']
    else:
    return -9001

    def login(self):
    data = {'method': 'login', 'username': self.username, 'password': self.password, 'appid': self.appid, 'appkey': self.appkey}
    response = self.request(data)
    if (response):
    if (response['ret'] and response['ret'] < 0):
    return response['ret']
    else:
    return response['uid']
    else:
    return -9001

    def upload(self, filename, codetype, timeout):
    data = {'method': 'upload', 'username': self.username, 'password': self.password, 'appid': self.appid, 'appkey': self.appkey, 'codetype': str(codetype), 'timeout': str(timeout)}
    file = {'file': filename}
    response = self.request(data, file)
    if (response):
    if (response['ret'] and response['ret'] < 0):
    return response['ret']
    else:
    return response['cid']
    else:
    return -9001

    def result(self, cid):
    data = {'method': 'result', 'username': self.username, 'password': self.password, 'appid': self.appid, 'appkey': self.appkey, 'cid': str(cid)}
    response = self.request(data)
    return response and response['text'] or ''

    def decode(self, filename, codetype, timeout):
    cid = self.upload(filename, codetype, timeout)
    if (cid > 0):
    for i in range(0, timeout):
    result = self.result(cid)
    if (result != ''):
    return cid, result
    else:
    time.sleep(1)
    return -3003, ''
    else:
    return cid, ''

    def post_url(self, url, fields, files=[]):
    for key in files:
    files[key] = open(files[key], 'rb');
    res = requests.post(url, files=files, data=fields)
    return res.text


    ######################################################################

    # 用户名(填自己的)**(记得修改)**
    username = 'zhangsima'

    # 密码(填自己的)**(记得修改)**
    password = 'zhang123'

    # 软件ID,开发者分成必要参数。登录开发者后台【我的软件】获得!(非开发者不用管)
    appid = 1

    # 软件密钥,开发者分成必要参数。登录开发者后台【我的软件】获得!(非开发者不用管)
    appkey = '22cc5376925e9387a23cf797cb9ba745'

    # 图片文件
    filename = Image

    # 验证码类型,# 例:1004表示4位字母数字,不同类型收费不同。请准确填写,否则影响识别率。在此查询所有类型 http://www.yundama.com/price.html
    codetype = Species

    # 超时时间,秒
    timeout = 60

    # 检查
    if (username == 'username'):
    print('请设置好相关参数再测试')
    else:
    # 初始化
    yundama = YDMHttp(username, password, appid, appkey)

    # 登陆云打码
    uid = yundama.login();
    print('uid: %s' % uid)

    # 查询余额
    balance = yundama.balance();
    print('balance: %s' % balance)

    # 开始识别,图片路径,验证码类型ID,超时时间(秒),识别结果
    cid, result = yundama.decode(filename, codetype, timeout);
    print('cid: %s, result: %s' % (cid, result))

  • 相关阅读:
    排列 [计数dp]
    排列 [计数dp]
    函数 [计数]
    多态
    继承2
    2018年蓝桥杯b组国赛真题
    c++的继承
    运算符2
    运算符重载
    拷贝构造
  • 原文地址:https://www.cnblogs.com/simadongyang/p/9541034.html
Copyright © 2011-2022 走看看