全国协议5人面授小班,企业级独立开发考核,转业者的IT软件工程师基地 登录/注册 | 如何报名
当前位置: Python   >  第三方打码平台进行复杂验证码的识别
admin · 更新于 2021-08-06

1. 常见的第三方打码平台

平时常用的打码平台有:超级鹰,云打码,打码兔,联众打码,超人打码,斐斐打码,91打码等。读者可以更加自己的需要自行选择。

2. 打码平台进行打码步骤

使用第三方平台进行打码,通常需要四个步骤。我们这里使用超级鹰打码平台进行示范。

  1. 首先选择一个打码平台进行注册

由于不同平台,注册的流程不一样,这里不再截图演示。注册完成后,如果没有提供免费适用的功能,我们需要充值才能正确的使用接口。每个平台,都会有自己的开发文档,我们按照开发文档的示列进行改写就可以直接使用了。

  1. 需要进行充值

如果只是简单的测试,可以充值较小的金额,由于是第三方平台,无法保证网站是持久可用的,充值须谨慎。

  1. 获取网站的程序ID

充值完成后,我们会获得一个程序ID,把这个ID放入到接口中,方便第三方平台进行校验。

  1. 上传验证码,返回调用结果

3. 打码平台对接例子

接下来我们用一个简单的例子来具体演示一下上面的步骤:

这里,我们随便选择了一个打码平台的接口例子来进行讲解。

关于如何在打码平台上进行注册和查找接口文档,由于打码平台的不稳定性,这里不做推荐,读者可以自行百度,选择适合自己的平台进行注册和使用。在确定打码平台的可靠性的前提下,再进行充值。谨防被骗!

我们接下来通过打码平台验证如下验证码,验证码图片如下:

代码如下:

#!/usr/bin/env python# coding:utf-8import requestsfrom hashlib import md5#客户端类class My_Client(object):

    #初始化
    def __init__(self, username, password, soft_id):
        self.username = username
        self.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: 题目类型
        """
        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 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()if __name__ == '__main__':
	chaojiying = My_Client('XXX', 'XXX', 'XXX')	
	im = open('a.jpg', 'rb').read()
	print(chaojiying.PostPic(im, XXX))
代码块
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

上述代码,我们总共有三个方法,分别是初始化,上传图片和错误反馈。初始化主要是初始化一些基本的信息,这些可以在打码平台注册的地方获取。另外,打码平台还会提供一个打码平台提供的识别码SoftId。初始化成功后,我们上传验证码,最后打印出结果。可以看到结果为7261,跟验证码里面的文字一致。

运行结果如下

4. 小结

由于打码平台良莠不齐,读者选择打码平台的时候,需要选一些知名的企业,另外,使用打码的平台的时候,需要按照不同平台的规定接口进行调用,不同打码平台的规范是不一样的。


为什么选择汉码未来