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


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调用cmd命令行制作刷博器
Jan 13 Python
windows系统中python使用rar命令压缩多个文件夹示例
May 06 Python
Python中使用copy模块实现列表(list)拷贝
Apr 14 Python
python在非root权限下的安装方法
Jan 23 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
Jun 27 Python
Python封装成可带参数的EXE安装包实例
Aug 24 Python
python可视化实现KNN算法
Oct 16 Python
python第三方库学习笔记
Feb 07 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
May 27 Python
python自定义函数def的应用详解
Jun 03 Python
django haystack实现全文检索的示例代码
Jun 24 Python
python 用opencv实现霍夫线变换
Nov 27 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中set error handler函数用法小结
2015/11/11 PHP
php 数据结构之链表队列
2017/10/17 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
关于js获取radio和select的属性并控制的代码
2011/05/12 Javascript
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
Javascript基础教程之数组 array
2015/01/18 Javascript
在windows上用nodejs搭建静态文件服务器的简单方法
2016/08/11 NodeJs
JS创建对象的写法示例
2016/11/04 Javascript
bootstrap实现图片自动轮播
2016/12/21 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
浅谈vue生命周期共有几个阶段?分别是什么?
2020/08/07 Javascript
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
2015/04/24 Python
基于Python代码编辑器的选用(详解)
2017/09/13 Python
Python PyQt4实现QQ抽屉效果
2018/04/20 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
2019/06/19 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
Python实现快速排序的方法详解
2019/10/25 Python
Python通过递归获取目录下指定文件代码实例
2019/11/07 Python
Html5之svg可缩放矢量图形_动力节点Java学院整理
2017/07/17 HTML / CSS
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
请介绍一下Ant
2016/07/22 面试题
大学军训感言300字
2014/03/09 职场文书
对公司合理化的建议书
2014/03/12 职场文书
社团活动总结格式
2014/08/29 职场文书
小学班级特色活动方案
2014/08/31 职场文书
2014年小学教师工作自我评价
2014/09/22 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
赔偿协议书怎么写
2015/01/28 职场文书
接收函
2019/04/22 职场文书
java固定大小队列的几种实现方式详解
2021/07/15 Java/Android
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python