云打码平台使用及Python封装

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/gklcsdn/article/details/102748086

云打码平台使用及Python封装

1. 账号注册(注册开发者账号和用户账号)

打码平台地址

"""
开发者帐号和用户帐号功能上是分开的互相独立的,注册的帐号名可以一样。
	① 开发者账号添加软件获取软件ID和软件密钥
	② 用户帐号充值和使用题分识别验证码。
"""
2. 获取id和key; 单击开发者账号里我的软件, 添加软件

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CK4THGWm-1571999833512)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1571999494875.png)]

3. 题分充值; 单击用户账号里在线充值(1块钱2000分)

题分使用规则
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MTqKZueD-1571999833513)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1571999608013.png)]

4. Python封装
# @Time : 2019/10/25 15:36
# @Author : GKL
# FileName : dama.py
# Software : PyCharm

import json
import time
import requests

from conf import *


class YDMHttp(object):

    def __init__(self):
        self.api_url = 'http://api.yundama.com/api.php'
        self.username = username
        self.password = password
        self.app_id = str(appid)
        self.app_key = appkey

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

    def balance(self):
        data = {'method': 'balance', 'username': self.username, 'password': self.password, 'appid': self.app_id,
                'appkey': self.app_key}
        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.app_id,
                'appkey': self.app_key}
        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.app_id,
                'appkey': self.app_key, '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.app_id,
                'appkey': self.app_key, '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 report(self, cid):
        data = {'method': 'report', 'username': self.username, 'password': self.password, 'appid': self.app_id,
                'appkey': self.app_key, 'cid': str(cid), 'flag': '0'}
        response = self.request(data)
        if (response):
            return response['ret']
        else:
            return -9001

    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


if __name__ == '__main__':

    # 初始化
    yundama = YDMHttp()

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

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

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

5. 配置文件
# @Time : 2019/10/25 15:37
# @Author : GKL
# FileName : conf.py
# Software : PyCharm


# 用户名
username    = username

# 密码
password    = password

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

# 软件密钥,开发者分成必要参数。登录开发者后台【我的软件】获得!
appkey      = appkey

# 验证码图片
filename    = 'CheckCode.jpg'
# filename    = 'getimage.jpg'
# filename    = 'captcha.jpg'

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

# 超时时间,秒
timeout     = 60

猜你喜欢

转载自blog.csdn.net/gklcsdn/article/details/102748086