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


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操作MySQL数据库9个实用实例
Dec 11 Python
Django Admin 实现外键过滤的方法
Sep 29 Python
Python实现获取本地及远程图片大小的方法示例
Jul 21 Python
Python 忽略warning的输出方法
Oct 18 Python
python re.sub()替换正则的匹配内容方法
Jul 22 Python
python图形用户接口实例详解
Dec 16 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
Jan 16 Python
基于Python生成个性二维码过程详解
Mar 05 Python
使用python无账号无限制获取企查查信息的实例代码
Apr 17 Python
Python使用xlrd实现读取合并单元格
Jul 09 Python
python基础之爬虫入门
May 10 Python
Python 用户输入和while循环的操作
May 23 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
用PHP读注册表
2006/10/09 PHP
PHP 开源AJAX框架14种
2009/08/24 PHP
PHP开发中四种查询返回结果分析
2011/01/02 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
ini_set的用法介绍
2014/01/07 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
JS写的数字拼图小游戏代码[学习参考]
2008/10/29 Javascript
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
2010/06/11 Javascript
javascript各浏览器中option元素的表现差异
2011/04/07 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
使用jQueryMobile实现滑动翻页效果的方法
2015/02/04 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
浅谈在js传递参数中含加号(+)的处理方式
2016/10/11 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
3种不同的ContextMenu右键菜单实现代码
2016/11/03 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
浅谈React和Redux的连接react-redux
2017/12/04 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
JS如何实现动态添加的元素绑定事件
2019/11/12 Javascript
JS+css3实现幻灯片轮播图
2020/08/14 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
Python中的并发编程实例
2014/07/07 Python
Python实现的选择排序算法示例
2017/11/29 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
Pyspider中给爬虫伪造随机请求头的实例
2018/05/07 Python
详解安装mitmproxy以及遇到的坑和简单用法
2019/01/21 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
python语言是免费还是收费的?
2020/06/15 Python
FLIR美国官网:热成像, 夜视和红外摄像系统
2018/07/13 全球购物
公司新年寄语
2014/04/04 职场文书
婚前协议书怎么写
2014/04/15 职场文书
演讲开场白台词大全
2015/05/29 职场文书