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


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支持断点续传的多线程下载示例
Jan 16 Python
跟老齐学Python之用while来循环
Oct 02 Python
Python虚拟环境virtualenv的安装与使用详解
May 28 Python
Anaconda多环境多版本python配置操作方法
Sep 12 Python
Python使用pickle模块存储数据报错解决示例代码
Jan 26 Python
Python切片索引用法示例
May 15 Python
python opencv3实现人脸识别(windows)
May 25 Python
python3学生名片管理v2.0版
Nov 29 Python
python读取Excel表格文件的方法
Sep 02 Python
Flask框架请求钩子与request请求对象用法实例分析
Nov 07 Python
Python如何转换字符串大小写
Jun 04 Python
浅谈Python协程asyncio
Jun 20 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中$this->含义分析
2009/11/29 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
js操作CheckBoxList实现全选/反选(在客服端完成)
2013/02/02 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
超实用的JavaScript代码段 附使用方法
2016/05/22 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
详解jquery和vue对比
2019/04/16 jQuery
JS数组Object.keys()方法的使用示例
2019/06/05 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
python抓取文件夹的所有文件
2018/02/27 Python
TensorFlow saver指定变量的存取
2018/03/10 Python
python使用thrift教程的方法示例
2019/03/21 Python
详解python读取image
2019/04/03 Python
浅谈django2.0 ForeignKey参数的变化
2019/08/06 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
查看keras各种网络结构各层的名字方式
2020/06/11 Python
解决python 执行shell命令无法获取返回值的问题
2020/12/05 Python
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
德国baby-markt婴儿用品瑞士网站:baby-markt.ch
2017/06/09 全球购物
英国羊皮鞋类领先品牌:Just Sheepskin
2019/12/12 全球购物
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
党员培训思想汇报
2014/01/07 职场文书
开工仪式策划方案
2014/05/23 职场文书
2014年小学英语教师工作总
2014/12/03 职场文书
天下第一关导游词
2015/02/06 职场文书
社区活动总结范文
2015/05/07 职场文书
2015年校务公开工作总结
2015/05/26 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书