- 有些网站为了避免被过度访问,会设置验证码反爬机制,如果访问次数过多就要求用户输入验证码,甚至一开始访问就要求输入验证码。验证码的类型很多,本章会讲解其中常见的图像验证码、计算题验证码、滑块验证码、滑块拼图验证码、点选验证码。
- 设置了验证码反爬机制的网站通常不希望被爬虫过度爬取,有的网站还会经常更换验证码类型,因此,本章主要使用专门搭建的本地网页(HTML文件)来讲解如何应对验证码反爬。
注意:本章介绍的方法仅针对单纯的验证码反爬。有些网站除了验证码反爬,还会采用其他反爬手段(如针对Selenium和webdriver拦截),此时本章介绍的方法就会失效。
- 图像验证码是最常见的验证码类型,主要分为英文验证码和中文验证码。英文验证码的内容结合了英文字母和数字(见左下图),中文验证码的内容以简体汉字为主(见右下图)。

- 因为超级鹰的识别效果最好,且实战中应用最为有效,所以这里主要讲解使用的超级鹰识别验证码的方法。百度的文字识别接口则在2.1.3节的“补充知识点”中进行简单介绍。至于PyTesseract库,虽然免费,但是安装较为繁琐,而且识别效果很一般,所以本书不予讲解。
2.1.1 超级鹰平台注册
- 超级鹰的官方网站为http://www.chaojiying.com/,可以在页面右上角进行注册。注册并登录后进入用户中心,按照页面右下角的提示扫码二维码绑定微信,可领域超级鹰送给用户的1000题分(题分就是积分),如下图所示。

- 随后便可用赠送的题分在免费测试页面(https://www.chaojiying.com/demo.html)进行测试。如下图所示。读者可自行搜索一些图像验证码或者利用本书提供的HTML文件进行测试。

2.1.2 超级鹰Python接口的使用
- 打开超级鹰的Python开发文档页面(https://www.chaojiying.com/api-14.html),单击链接下载官方提供的实例代码,如下图所示。该代码是基于Python 2 编写的,而我们现在使用的通常是Python 3,因此,需要根据页面中的说明修改代码。例如,Python 2 的print()函数没有括号,所以要在Print后加括号,此外还需要把一些不规范的缩进文件改为规范的【Tab】键缩进。不愿意自己修改代码的读者可以直接从本书的配套文件中下载本书作者修改好的代码。

- 下载得到一个压缩包,解压后如下图所示。

- 修改后的代码如下,读者简单浏览即可,不需要理解其含义,代码的使用方法并不难,后续会讲解。
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):
""
3620


&spm=1001.2101.3001.11974&articleId=124545675&d=1&t=3&u=a9f6bbb98e7047188f8f8ef8d14e10a8)

被折叠的 条评论
为什么被折叠?



