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


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解析xml文件实例分享
Dec 04 Python
修改Python的pyxmpp2中的主循环使其提高性能
Apr 24 Python
python 删除大文件中的某一行(最有效率的方法)
Aug 19 Python
Python使用requests发送POST请求实例代码
Jan 25 Python
python3.x上post发送json数据
Mar 04 Python
Python使用sort和class实现的多级排序功能示例
Aug 15 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
Dec 10 Python
浅谈python中统计计数的几种方法和Counter详解
Nov 07 Python
django中media媒体路径设置的步骤
Nov 15 Python
Python networkx包的实现
Feb 14 Python
python利用百度云接口实现车牌识别的示例
Feb 21 Python
Python中Matplotlib的点、线形状、颜色以及绘制散点图
Apr 07 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
实用函数9
2007/11/08 PHP
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
PHP实现连接设备、通讯和发送命令的方法
2015/10/13 PHP
Yii中实现处理前后台登录的新方法
2015/12/28 PHP
php判断电子邮件是否正确方法
2018/12/04 PHP
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
JavaScript 模式之工厂模式(Factory)应用介绍
2012/11/15 Javascript
jquery图片不完全按比例自动缩小的简单代码
2013/07/29 Javascript
JavaScript中创建对象和继承示例解读
2014/02/12 Javascript
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
javasript实现密码的隐藏与显示
2015/05/08 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
2017/03/21 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
JS使用for in有序获取对象数据
2020/05/19 Javascript
Vue实现菜单切换功能
2020/11/08 Javascript
详解Python设计模式编程中观察者模式与策略模式的运用
2016/03/02 Python
python实现12306火车票查询器
2017/04/20 Python
深入理解Python中的super()方法
2017/11/20 Python
基于windows下pip安装python模块时报错总结
2018/06/12 Python
详解python 降级到3.6终极解决方案
2020/02/06 Python
python中random.randint和random.randrange的区别详解
2020/09/20 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
HTML5 CSS3新的WEB标准和浏览器支持
2009/07/16 HTML / CSS
机电职业生涯规划书范文
2014/03/08 职场文书
美丽乡村建设实施方案
2014/03/23 职场文书
办理房产证委托书
2014/09/18 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
小学推普周活动总结
2015/05/07 职场文书
色戒观后感
2015/06/12 职场文书
中秋节作文(五年级)之关于月亮
2019/09/11 职场文书
Android在Sqlite3中的应用及多线程使用数据库的建议
2022/04/24 Java/Android