python版 —— 验证码校验 打码兔平台的使用介绍
1. 背景
验证码(CAPTCHA)的全称是全自动区分计算机和人类的图灵测试(Completely Automated Public Turing Test to tell Computers and Humans Apart),是一种用于区分人与计算机自动程序的挑战应答系统测试。CAPTCHA可通过设置一些人类很容易执行而自动程序很难完成的任务来区分人类和自动程序。
CAPTCHA经常被用来阻止自动程序使用博客来影响搜索引擎排名、签署电子邮箱帐户发送垃圾邮件或参与网上投票等。
通常,CAPTCHA是一个轻微扭曲的字母数字字符图像文件,人通常可以很容易读取图像中的字符。而自动程序能够识别该内容包含一个图像,但不知道是什么图像。考虑到弱视群体,一些CAPTCHA使用音频文件。在这样一个系统中,人可以听到一个字母或短句并打出他所听到的,从而证明他不是自动程序。
- 一般来说,自动化处理验证码有两种方式:
- 光学字符识别(Optical Character Recognition, OCR),从图像中抽取文本。主要的库有pytesser,tesseract。一般来说,对于复杂的验证码图像,需要先修改验证码图像,去除其中的背景噪音,只保留文本部分,再送入库中进行解析。而且识别率不是很高,想提高识别率,需要通过长时间机器学习的训练,代价较大。而且对于极其复杂的验证码,OCR甚至无法使用。
- 使用验证码处理服务(借助于专业的打码平台)。付费调用他们提供的API。当把验证码图片传给他们的API时,会有人进行人工查看,并在HTTP响应中给出解析后的文本内容。一般来说,整个解析过程在10s(打码兔平台),最长60s,而且价位不高,1元 = 50~100个验证码(根据验证码类型进行收费)。如果验证码不多,为了提高识别效率和简化操作,就可以选择这种方式。
2. 环境
- python 3.6.1
- 系统:win7
- IDE:pycharm
- 安装过chrome浏览器
- 配置好chromedriver
- selenium 3.7.0
3. 打码兔平台的使用流程
3.1. 原理
- 将验证码图片,打码平台账号,密码等按照指定格式调用API(访问URL),得到返回的结果。
- 打码兔平台地址:http://www.dama2.com/
- 打码兔平台开发者文档:http://wiki.dama2.com/index.php
3.2. 流程
第一步:注册一个开发者帐号。
第二步:生成使用验证码的软件的ID和key
登录开发者账号,进入 我的软件,点击创建软件,填好资料提交就会生成一个软件key的。
备注:- 把你的软件key填进相应的代码参数里面,然后把软件key发给打码兔的在线客服,他会帮你解除限制,你就可以用账号test,密码test测试了。
- 如图所示,这就是软件ID,软件名称,软件KEY,都是程序会用到的参数。
- 当别人使用你的软件ID和软件Key进行验证码消费时,作为软件的开发者是能拿到分成的。这也是抢票软件的赚钱的方式之一。也就是说,开发者帐号用于软件开发,赚钱。
- 软件不需要公开。而且开发者帐号不能进行付费打码。
第三步:注册一个普通用户的帐号,并进行充值,用这个帐号进行付费打码。
也就是说,开发者帐号用于赚钱,普通用户帐号用于付费打码
4. 自定义方法
# 对打码兔平台提供的代码进行了一些改动,更加适应本软件的需求
import hashlib
import urllib.request
import urllib
import json
import base64
import requests
# md5加密字符串
def md5str(str):
m = hashlib.md5(str.encode(encoding="utf-8"))