利用打码兔和超人打码自封装的打码类分享


Posted in Python onMarch 16, 2014

自封装的打码类, windows下建议用打码兔(调用的官方dll),linux下建议超人打码(http api)

# coding:utf-8
from ctypes import *
import requests
import json
import random
import binascii
from config import config
class Dama2():
 """打码兔打码."""
 _username = ''
 _password = ''
 __attrs__ = ['DM', 'username', 'password', 'softuuid', 'timeout']
 def __init__(self):
  self.DM = WinDLL('lib/CrackCaptchaAPI.dll')
  if not self._username:
   Dama2._username = config['dama']['dama2']['username']
   Dama2._password = config['dama']['dama2']['password']
  self.username = c_char_p(self._username)
  self.password = c_char_p(self._password)
  self.softuuid = c_char_p('6fbc06efdc777eee854842572102daec')
  self.timeout = c_ushort(30)
 def recv_byte(self, imgdata, imgtype=42):
  # imgdata = c_void_p(imgdata)
  imgleng = c_uint(len(imgdata))
  imgtype = c_ulong(imgtype)
  res = c_char_p('')
  code = self.DM.D2Buf(self.softuuid, self.username, self.password, imgdata, imgleng, self.timeout, imgtype, res)
  if code > 0:
   return res.value
  return False
 def report_err(self, imgid):
  return False

class Chaoren():
 _username = ''
 _password = ''
 __attrs__ = ['DM', 'username', 'password', 'softuuid', 'timeout']
 def __init__(self):
  if not self._username:
   Chaoren._username = config['dama']['chaoren']['username']
   Chaoren._password = config['dama']['chaoren']['password']
  self.s = requests.Session()
  self.s.encoding = 'utf-8'
  self.s.timeout = 16
  self.data = {
   'username': self.username,
   'password': self.password,
   'softid': '1234',#1234换成自己的
   'imgid': '',
   'imgdata': ''
  }
 def get_left_point(self):
  try:
   r = self.s.post('http://apib.sz789.net:88/GetUserInfo.ashx', self.data)
   return r.json()
  except requests.ConnectionError:
   return self.get_left_point()
  except:
   return False
 def recv_byte(self, imgdata):
  self.data['imgdata'] = binascii.b2a_hex(imgdata).upper()
  try:
   r = self.s.post('http://apib.sz789.net:88/RecvByte.ashx', self.data)
   res = r.json()
   if res[u'info'] == -1:
    self.report_err(res[u'imgid'])  # 识别错误
    return False
   return r.json()[u'result']
  except requests.ConnectionError:
   return self.recv_byte(imgdata)
  except:
   return False
 def report_err(self, imgid):
  self.data['imgid'] = imgid
  if self.data['imgdata']:
   del self.data['imgdata']
  try:
   r = self.s.post('http://apib.sz789.net:88/ReportError.ashx', self.data)
   return r.json()
  except requests.ConnectionError:
   return self.report_err(imgid)
  except:
   return False

class Dama():
 flag = 'dama2'
 def __init__(self):
  if self.flag == 'dama2':
   self.w = Dama2()
  elif self.flag == 'chaoren':
   self.w = Chaoren()
  else:
   self.w = Dama2()  # 默认
 def recv_byte(self, imgdata):
  return self.w.recv_byte(imgdata)
 def report_err(self, imgid):
  return self.w.report_err(imgid)

# test
if __name__ == '__main__':
 pass
"""
username and password 更换为自己的
"""
Python 相关文章推荐
python静态方法实例
Jan 14 Python
利用Python演示数型数据结构的教程
Apr 03 Python
python通过ftplib登录到ftp服务器的方法
May 08 Python
Python中用post、get方式提交数据的方法示例
Sep 22 Python
Python如何优雅获取本机IP方法
Nov 10 Python
PyTorch学习:动态图和静态图的例子
Jan 06 Python
TensorFlow 显存使用机制详解
Feb 03 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
May 16 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
Python常用类型转换实现代码实例
Jul 28 Python
Python tkinter制作单机五子棋游戏
Sep 14 Python
Python中生成ndarray实例讲解
Feb 22 Python
Python使用代理抓取网站图片(多线程)
Mar 14 #Python
python3.3使用tkinter开发猜数字游戏示例
Mar 14 #Python
Python subprocess模块学习总结
Mar 13 #Python
用Python和MD5实现网站挂马检测程序
Mar 13 #Python
python操作数据库之sqlite3打开数据库、删除、修改示例
Mar 13 #Python
使用Python判断IP地址合法性的方法实例
Mar 13 #Python
Python 分析Nginx访问日志并保存到MySQL数据库实例
Mar 13 #Python
You might like
文件上传的实现
2006/10/09 PHP
PHP调用Twitter的RSS的实现代码
2010/03/10 PHP
CentOS安装php v8js教程
2015/02/26 PHP
js实现的网页颜色代码表全集
2007/07/17 Javascript
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
javascript instanceof,typeof的区别
2010/03/24 Javascript
jquery 学习之二 属性相关
2010/11/23 Javascript
JS快速实现移动端拼图游戏
2016/09/05 Javascript
javascript 中的事件委托详解
2016/10/25 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
2017/05/08 jQuery
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
基于Vue框架vux组件库实现上拉刷新功能
2017/11/28 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
python调用windows api锁定计算机示例
2014/04/17 Python
Python栈类实例分析
2015/06/15 Python
Python编程中实现迭代器的一些技巧小结
2016/06/21 Python
解决python "No module named pip" 的问题
2018/10/13 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
详解Pycharm第三方库的安装及使用方法
2020/12/29 Python
2021年值得向Python开发者推荐的VS Code扩展插件
2021/01/25 Python
EQVVS官网:设计师男装和女装
2018/10/24 全球购物
Interhome丹麦:在线预订度假屋和公寓
2019/07/18 全球购物
Pharmacy Online中文直邮网站:澳洲大型药房
2020/06/27 全球购物
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
正规的求职信范文分享
2013/12/11 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
企业转让协议书(范文2篇)
2019/08/15 职场文书
golang中字符串MD5生成方式总结
2021/07/04 Golang
《原神》新角色演示“神里绫人:林隐泓洄” 宠妹狂魔
2022/04/03 其他游戏