验证码识别

发布时间 2023-05-31 10:08:26作者: 小青年て

验证码识别是基于线上的打码平台识别验证码

-打码平台:

  1.超级鹰(http://www.chaojiying.com/)

    -注册(用户中心身份)

    -登录(用户中心身份)

      -1.查询余额,请充值

      -2.创建一个软件ID(899370)

      -3.下载示例代码

  2.云打码

  3.打码兔

示例代码

#!/usr/bin/env python
# coding:utf-8

import requests
from hashlib import md5

class Chaojiying_Client(object):

    def __init__(self, username, password, soft_id):
        self.username = username
        password =  password.encode('utf8')
        self.password = md5(password).hexdigest()
        self.soft_id = soft_id
        self.base_params = {
            'user': self.username,
            'pass2': self.password,
            'softid': self.soft_id,
        }
        self.headers = {
            'Connection': 'Keep-Alive',
            'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',
        }

    def PostPic(self, im, codetype):
        """
        im: 图片字节
        codetype: 题目类型 参考 http://www.chaojiying.com/price.html
        """
        params = {
            'codetype': codetype,
        }
        params.update(self.base_params)
        files = {'userfile': ('ccc.jpg', im)}
        r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files, headers=self.headers)
        return r.json()

    def PostPic_base64(self, base64_str, codetype):
        """
        im: 图片字节
        codetype: 题目类型 参考 http://www.chaojiying.com/price.html
        """
        params = {
            'codetype': codetype,
            'file_base64':base64_str
        }
        params.update(self.base_params)
        r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, headers=self.headers)
        return r.json()

    def ReportError(self, im_id):
        """
        im_id:报错题目的图片ID
        """
        params = {
            'id': im_id,
        }
        params.update(self.base_params)
        r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)
        return r.json()



#封装一个执行方法
def tranformImageCode(imagePath,imageType):
        chaojiying = Chaojiying_Client('用户账号', '用户密码, '949287')    #用户中心>>软件ID 生成一个替换 96001
        im = open(imagePath, 'rb').read()
        return (chaojiying.PostPic(im, imageType))["pic_str"]


print(tranformImageCode('D:\爬虫项目\Chaojiying_Python\chaojiying_Python/a.jpg',1902))