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


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的Django框架使用入门指引
Apr 15 Python
python访问mysql数据库的实现方法(2则示例)
Jan 06 Python
Django项目中包含多个应用时对url的配置方法
May 30 Python
Django 连接sql server数据库的方法
Jun 30 Python
django模板加载静态文件的方法步骤
Mar 01 Python
详解Python做一个名片管理系统
Mar 14 Python
详解Python给照片换底色(蓝底换红底)
Mar 22 Python
Python流程控制 if else实现解析
Sep 02 Python
Django通过dwebsocket实现websocket的例子
Nov 15 Python
Django contrib auth authenticate函数源码解析
Nov 12 Python
python基础入门之字典和集合
Jun 13 Python
python中filter,map,reduce的作用
Jun 10 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
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
yii中widget的用法
2014/12/03 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
2016/05/30 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
2016/09/23 PHP
PHP中phar包的使用教程
2017/06/14 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
Angular中的Promise对象($q介绍)
2015/03/03 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
Angular.Js的自动化测试详解
2016/12/09 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
Python实现多线程抓取网页功能实例详解
2017/06/08 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
2018/04/22 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
决策树剪枝算法的python实现方法详解
2019/09/18 Python
python数据抓取3种方法总结
2021/02/07 Python
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
html5中为audio标签增加停止按钮动作实现方法
2013/01/04 HTML / CSS
HTML5 video进入全屏和退出全屏的实现方法
2020/07/28 HTML / CSS
吉尔德利巧克力公司:Ghirardelli Chocolate Company
2019/03/27 全球购物
公司会计岗位职责
2014/02/13 职场文书
婚纱摄影师求职信范文
2014/04/17 职场文书
我的祖国演讲稿
2014/05/04 职场文书
行政工作试用期自我评价
2014/09/14 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
美丽的大脚观后感
2015/06/03 职场文书
文明上网主题班会
2015/08/14 职场文书
Python中rapidjson参数校验实现
2021/07/25 Python
Redis实现短信验证码登录的示例代码
2022/06/14 Redis
TS 类型收窄教程示例详解
2022/09/23 Javascript