版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
云打码平台使用及Python封装
1. 账号注册(注册开发者账号和用户账号)
"""
开发者帐号和用户帐号功能上是分开的互相独立的,注册的帐号名可以一样。
① 开发者账号添加软件获取软件ID和软件密钥
② 用户帐号充值和使用题分识别验证码。
"""
2. 获取id和key; 单击开发者账号里我的软件, 添加软件
3. 题分充值; 单击用户账号里在线充值(1块钱2000分)
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