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

时间:2023-03-13 21:44:40 

自封装的打码类, 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,打码
0
投稿

猜你喜欢

  • Perl使用nginx FastCGI环境做WEB开发实例

    2022-07-17 16:09:27
  • Python实现改变与矩形橡胶的线条的颜色代码示例

    2022-08-02 08:16:26
  • 通过数据库对Django进行删除字段和删除模型的操作

    2024-01-19 09:28:44
  • Python调用Windows API函数编写录音机和音乐播放器功能

    2021-06-13 19:03:55
  • Go语言文件开关及读写操作示例

    2023-08-05 19:47:27
  • python去除文件中空格、Tab及回车的方法

    2021-12-04 22:25:44
  • PyTorch中的参数类torch.nn.Parameter()详解

    2021-09-07 19:06:30
  • Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统

    2024-01-26 14:46:02
  • 提高ASP性能的最佳选择第一部分

    2007-08-15 12:31:00
  • 简单实例解释Oracle分页查询

    2023-07-16 00:54:03
  • Flume监听oracle表增量的步骤详解

    2023-07-20 00:39:32
  • python 中的列表解析和生成表达式

    2022-01-30 16:14:15
  • Python 机器学习库 NumPy入门教程

    2022-09-28 23:10:41
  • js multiple全选与取消全选实现代码

    2024-04-28 10:19:36
  • MySQL5创建存储过程的示例

    2024-01-12 17:45:35
  • XML入门的常见问题(一)

    2008-09-05 17:20:00
  • 使用python在本地电脑上快速处理数据

    2022-07-30 14:43:11
  • Javascript验证方法大全

    2024-04-17 10:19:44
  • python OpenCV计算图片相似度的5种算法

    2023-12-31 15:59:14
  • 4个场景教会你Go中Goroutine和通道是怎么用的

    2024-04-23 09:45:05
  • asp之家 网络编程 m.aspxhome.com