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


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 11 Python
详解使用 pyenv 管理多个版本 python 环境
Oct 19 Python
Python与R语言的简要对比
Nov 14 Python
Python使用matplotlib填充图形指定区域代码示例
Jan 16 Python
python itchat给指定联系人发消息的方法
Jun 11 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
Aug 02 Python
python绘制随机网络图形示例
Nov 21 Python
Python实现中值滤波去噪方式
Dec 18 Python
python3 配置logging日志类的操作
Apr 08 Python
基于python实现ROC曲线绘制广场解析
Jun 28 Python
python statsmodel的使用
Dec 21 Python
python实现双人五子棋(终端版)
Dec 30 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+javascript的日历控件
2009/11/19 PHP
国外比较好的几个的Php开源建站平台小结
2010/04/22 PHP
php file_get_contents函数轻松采集html数据
2010/04/22 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
Jquery Select操作方法集合脚本之家特别版
2010/05/17 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
javascript通过navigator.userAgent识别各种浏览器
2013/10/25 Javascript
jQuery ajax serialize() 方法使用示例
2014/11/02 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
微信小程序  自定义创建详细介绍
2016/10/27 Javascript
JavaScript获取服务器端时间的方法
2016/11/29 Javascript
微信小程序加载更多 点击查看更多
2016/11/29 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
bootstrap table sum总数量统计实现方法
2017/10/29 Javascript
vue如何根据网站路由判断页面主题色详解
2018/11/02 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
简谈创建React Component的几种方式
2019/06/15 Javascript
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
[35:29]Secret vs VG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
Hadoop中的Python框架的使用指南
2015/04/22 Python
Python实现ssh批量登录并执行命令
2016/10/25 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
澳大利亚波西米亚风情网上商店:Czarina
2019/03/18 全球购物
建筑文秘专业个人求职信范文
2013/12/28 职场文书
新学期红领巾广播稿
2014/01/14 职场文书
领导视察欢迎词
2014/01/15 职场文书
学生周末回家住宿长期请假条
2014/02/15 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
2014全国两会大学生学习心得体会
2014/03/10 职场文书
优秀的个人求职信范文
2014/05/09 职场文书
国际贸易专业求职信
2014/06/04 职场文书
2014年服务员个人工作总结
2014/12/23 职场文书