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


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 命令行参数sys.argv
Sep 06 Python
Python functools模块学习总结
May 09 Python
Python随机生成数据后插入到PostgreSQL
Jul 28 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
Jan 10 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
Mar 15 Python
python针对不定分隔符切割提取字符串的方法
Oct 26 Python
python修改txt文件中的某一项方法
Dec 29 Python
对Python实现累加函数的方法详解
Jan 23 Python
python 实现多线程下载视频的代码
Nov 15 Python
python绘图subplots函数使用模板的示例代码
Apr 30 Python
Python中json.load()和json.loads()有哪些区别
Jun 07 Python
Opencv中cv2.floodFill算法的使用
Jun 18 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脚本的10个技巧(6)
2006/10/09 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
Redis在Laravel项目中的应用实例详解
2017/08/11 PHP
JS location几个方法小姐
2008/07/09 Javascript
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
js注意img图片的onerror事件的分析
2011/01/01 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
js显示动态时间的方法详解
2016/08/20 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
js实现多张图片延迟加载效果
2017/07/17 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
原生js实现trigger方法示例代码
2019/05/22 Javascript
layui递归实现动态左侧菜单
2019/07/26 Javascript
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
Python中使用PyHook监听鼠标和键盘事件实例
2014/07/18 Python
Python标准库与第三方库详解
2014/07/22 Python
简述Python中的进程、线程、协程
2016/03/18 Python
python MySQLdb使用教程详解
2018/03/20 Python
python机器学习之神经网络实现
2018/10/13 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
2020/06/30 Python
HTML5+CSS3:3D展示商品信息示例
2017/01/03 HTML / CSS
台湾三立电视电商平台:电电购
2019/09/09 全球购物
企业员工培训感言
2014/02/26 职场文书
大四学生找工作的自荐信
2014/03/27 职场文书
廉洁使者实施方案
2014/03/29 职场文书
技校毕业生自荐书
2014/05/23 职场文书
节水口号标语
2014/06/19 职场文书
婚宴邀请函
2015/01/30 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
社区安全温馨提示语
2015/07/14 职场文书
中学语文教学反思
2016/02/16 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python