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


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使用函数默认值实现函数静态变量的方法
Aug 18 Python
python实现ipsec开权限实例
Nov 11 Python
Python中SOAP项目的介绍及其在web开发中的应用
Apr 14 Python
Python输出汉字字库及将文字转换为图片的方法
Jun 04 Python
Python正则抓取网易新闻的方法示例
Apr 21 Python
Python基于csv模块实现读取与写入csv数据的方法
Jan 18 Python
PyQt4实现下拉菜单可供选择并打印出来
Apr 20 Python
Python简单定义与使用二叉树示例
May 11 Python
python3跳出一个循环的实例操作
Aug 18 Python
Docker如何部署Python项目的实现详解
Oct 26 Python
Python离线安装各种库及pip的方法
Nov 28 Python
python中scipy.stats产生随机数实例讲解
Feb 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
东芝TOSHIBA RP-F11电路分析
2021/03/02 无线电
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
Js+XML 操作
2006/09/20 Javascript
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
将HTML格式的String转化为HTMLElement的实现方法
2014/08/07 Javascript
Javascript中数组sort和reverse用法分析
2014/12/30 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
js实现可得到不同颜色值的颜色选择器实例
2015/02/28 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
2017/03/14 Javascript
Angular.js中angular-ui-router的简单实践
2017/07/18 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
js实现图片上传到服务器和回显
2020/01/19 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
Python os模块介绍
2014/11/30 Python
python基于multiprocessing的多进程创建方法
2015/06/04 Python
Django中URL视图函数的一些高级概念介绍
2015/07/20 Python
Python中的多行注释文档编写风格汇总
2016/06/16 Python
python简单实例训练(21~30)
2017/11/15 Python
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
Python3之读取连接过的网络并定位的方法
2018/04/22 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
2020/02/28 Python
Python urllib.request对象案例解析
2020/05/11 Python
django Model层常用验证器及自定义验证器详解
2020/07/15 Python
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
个人培训总结
2015/03/05 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
蜗居观后感
2015/06/11 职场文书
教师节主题班会方案
2015/08/17 职场文书
如何拟写通知正文?
2019/04/02 职场文书