【Python】验证码识别

46 阅读6分钟

说明:本文为课件导入,非原创

什么是验证码

验证码(CAPTCHA)是一种计算机程序设计技术,用于确定用户是人类而不是机器。它通常表现为一种图像或声音,要求用户在输入框中输入正确的文本或数字来证明自己是人类。因为机器人和计算机程序无法像人类一样理解和解决这些问题,所以只有真正的人类用户才能通过验证码验证。当然随着技术的发展现在的验证码种类越来越多,不仅仅只限于输入正确的文本或数字还有点选、滑动、旋转,计算,选择等多种验证方式。

为什么会用到验证码

验证码(CAPTCHA)主要用于确定用户是人类而不是机器。在互联网上,机器人和计算机程序可以自动进行各种操作,例如恶意攻击、垃圾邮件、网络钓鱼等不良行为。为了保护网站和应用程序的安全,防止这些不良行为的发生,引入了验证码技术。 使用验证码有以下几个主要原因:

  1. 防止机器人攻击:机器人攻击是一种自动化的攻击手段,攻击者使用自动程序来尝试登录、注册、发送垃圾邮件等行为。验证码可以有效地防止机器人攻击,因为机器人无法像人类一样理解和解决验证码问题。
  2. 保护用户隐私:有些网站需要用户提供个人信息或数据,例如注册新账户、在线支付、订购商品等。为了保护用户的隐私和数据安全,网站可以使用验证码来确认用户是真实的人类用户,而不是机器人。
  3. 防止垃圾邮件和网络钓鱼:垃圾邮件和网络钓鱼是常见的网络安全威胁,攻击者通过自动化程序发送大量垃圾邮件或伪造网站来欺骗用户。验证码可以有效地防止这些不良行为,因为只有真正的人类用户才能通过验证码验证。
  4. 防止暴力破解:暴力破解是一种攻击方式,攻击者使用自动化程序尝试猜测用户账户密码。验证码可以防止暴力破解,因为攻击者无法通过自动化程序解决验证码问题。
  5. 防止机器人爬虫:机器人爬虫是一种通过自动化程序获取网站上数据和内容的方式。有些网站希望限制机器人爬虫,以保护他们的知识产权和商业利益。验证码可以防止机器人爬虫,因为只有真正的人类用户才能通过验证码验证。
  6. 提高用户体验:尽管验证码可能会对用户造成一些不便,但它可以提高用户体验和满意度。通过使用验证码,网站可以保护用户免受垃圾邮件、网络钓鱼和其他恶意攻击的侵害,同时提供更安全和可靠的服务。
  7. 支持无障碍访问:有些用户可能无法识别验证码中的图像或声音,例如盲人、聋人等。为了支持无障碍访问,一些网站提供替代形式的验证码,例如数学表达式、滑动验证等。

目前验证码的分类

验证码(CAPTCHA)可以按照不同的分类标准进行分类。以下是一些常见的验证码分类方式:

  1. 文字型验证码:文字型验证码通常是一组随机生成的字母或数字,用户需要在输入框中输入正确的答案。这种验证码的优点是易于实现和识别,但容易受到OCR识别工具的攻击。
  2. 图片型验证码:图片型验证码通常是一张随机生成的图像,用户需要在输入框中输入正确的文字或数字。这种验证码的优点是更难受到 OCR 识别工具的攻击,但用户可能需要花费更多的时间来识别和输入正确的答案。
  3. 数学表达式型验证码:数学表达式型验证码通常是一个数学表达式,用户需要在输入框中输入正确的答案。这种验证码的优点是易于实现和识别,同时可以提高用户的数学能力。
  4. 滑动型验证码:滑动型验证码通常是一张图片,用户需要在滑块上滑动以显示正确的答案。这种验证码的优点是易于实现和识别,同时可以提高用户的操作体验。
  5. 声音型验证码:声音型验证码通常是一段随机生成的语音,用户需要听取并在输入框中输入正确的答案。这种验证码的优点是适合视力较差或无法识别图像的用户,但可能对听力有一定要求。

除了上述分类方式,还有其他一些特殊类型的验证码,例如拼图型验证码、颜色型验证码、行为型验证码等。这些验证码根据具体的应用场景和需求进行设计和实现。

打码平台的使用

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

打码平台进行打码步骤

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

  • 首先选择一个打码平台进行注册
    • 由于不同平台,注册的流程不一样,这里不再截图演示。注册完成后,如果没有提供免费适用的功能,我们需要充值才能正确的使用接口。每个平台,都会有自己的开发文档,我们按照开发文档的示列进行改写就可以直接使用了。
  • 需要进行充值
    • 如果只是简单的测试,可以充值较小的金额,由于是第三方平台,无法保证网站是持久可用的,充值须谨慎。
  • 获取网站的程序ID
    • 充值完成后,我们会获得一个程序ID,把这个ID放入到接口中,方便第三方平台进行校验。
  • 上传验证码,返回调用结果。

超级鹰的具体使用步骤

超级鹰网址: www.chaojiying.com/price.html 1、www.chaojiying.com/user/login进… 2、下载demo包点击开发文档,在各语言sdk例子下载下,下载所需的语言包。 image.png 下载完成后解压会有一个chaojiying.py文件,将文件复制到你的项目下。复制完成如果你的python版本是2无需改动,如果是3,需要在print加上括号。 image.png image.png 3、获取软件id image.png 4、导入chaojiying模块下的Chaojiying_Client类,调用PostPic方法完成识别。

from chaojiying import Chaojiying_Client
chaojiying = Chaojiying_Client('用户名', '密码', '软件id')
im = open('需要识别的图片', 'rb').read()
print(chaojiying.PostPic(im, 9104)['pic_str'])	  # 9104为识别的验证码类型

5、验证码在价格体系下查看,根据自己的所需查看。 image.png

验证码的处理

B站点选验证码的处理

详情看代码文件 

知乎滑块的处理

详情看代码文件