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


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中的列表知识点汇总
Apr 14 Python
django 2.0更新的10条注意事项总结
Jan 05 Python
python的中异常处理机制
Aug 30 Python
pip 安装库比较慢的解决方法(国内镜像)
Oct 06 Python
python新式类和经典类的区别实例分析
Mar 23 Python
在spyder IPython console中,运行代码加入参数的实例
Apr 20 Python
在keras中model.fit_generator()和model.fit()的区别说明
Jun 17 Python
python线程里哪种模块比较适合
Aug 02 Python
Python fileinput模块如何逐行读取多个文件
Oct 05 Python
Django+Celery实现定时任务的示例
Jun 23 Python
基于Python编写简易版的天天跑酷游戏的示例代码
Mar 23 Python
Python Django / Flask如何使用Elasticsearch
Apr 19 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
DC的38部超级英雄动画电影
2020/03/03 欧美动漫
PHP异常处理Exception类
2015/12/11 PHP
关于laravel框架中的常用目录路径函数
2019/10/23 PHP
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
JS支持带x身份证号码验证函数
2008/08/10 Javascript
jquery批量设置属性readonly和disabled的方法
2014/01/24 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
利用JavaScript脚本实现滚屏效果的方法
2015/07/07 Javascript
JS中的eval 为什么加括号
2016/04/13 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
详解React 16 中的异常处理
2017/07/28 Javascript
vue组件父与子通信详解(一)
2017/11/07 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
使用python加密自己的密码
2015/08/04 Python
Python脚本处理空格的方法
2016/08/08 Python
Python爬取网页中的图片(搜狗图片)详解
2017/03/23 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
对python 命令的-u参数详解
2018/12/03 Python
简单了解Python3里的一些新特性
2019/07/13 Python
python点击鼠标获取坐标(Graphics)
2019/08/10 Python
Python collections模块使用方法详解
2019/08/28 Python
Python递归函数特点及原理解析
2020/03/04 Python
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
四种会话跟踪技术
2015/05/20 面试题
个人找工作的自我评价
2013/10/17 职场文书
初中生自我评价
2014/02/01 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
React配置子路由的实现
2021/06/03 Javascript
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis
Django基础CBV装饰器和中间件
2022/03/22 Python
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android