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


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 Web框架Flask中使用新浪SAE云存储实例
Feb 08 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
Dec 19 Python
Python缩进和冒号详解
Jun 01 Python
Django接受前端数据的几种方法总结
Nov 04 Python
详解python发送各类邮件的主要方法
Dec 22 Python
Scrapy-redis爬虫分布式爬取的分析和实现
Feb 07 Python
python中 chr unichr ord函数的实例详解
Aug 06 Python
Python读写zip压缩文件的方法
Aug 29 Python
Python集合操作方法详解
Feb 09 Python
利用Python脚本批量生成SQL语句
Mar 04 Python
python实现TCP文件传输
Mar 20 Python
python爬虫可以爬什么
Jun 16 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
带密匙的php加密解密示例分享
2014/01/29 PHP
php简单解析mysqli查询结果的方法(2种方法)
2016/06/29 PHP
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
JavaScript对象的property属性详解
2014/04/01 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
2014/04/29 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
2014/10/11 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
JS基于构造函数实现的菜单滑动显隐效果【测试可用】
2016/06/21 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
js实现右键自定义菜单
2016/12/03 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
详解JS中的attribute属性
2017/04/25 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
node 文件上传接口的转发的实现
2019/09/23 Javascript
Node.js文本文件BOM头的去除方法
2020/11/22 Javascript
[31:00]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS iG
2014/05/25 DOTA
20行python代码的入门级小游戏的详解
2019/05/05 Python
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
Pandas之缺失数据的实现
2021/01/06 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
HTML5 b和i标记将被赋予真正的语义
2009/07/16 HTML / CSS
AC Lens:购买隐形眼镜
2017/02/26 全球购物
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
工作自荐信
2013/12/11 职场文书
大学系主任推荐信范文
2013/12/24 职场文书
2014年国庆节广播稿
2014/09/19 职场文书
初中数学教学随笔
2015/08/15 职场文书
python爬虫selenium模块详解
2021/03/30 Python
深入理解Vue的数据响应式
2021/05/15 Vue.js
在CSS中使用when/else的方法
2022/01/18 HTML / CSS