第7章 验证码处理

验证码(CAPTCHA)的全称为全自动区分计算机和人类的公开图灵测试(Completely Automated Public Turing test to tell Computersand Humans Apart)。从其全称可以看出,验证码用于测试用户是否为真实人类。一个典型的验证码由扭曲的文本组成,此时计算机程序难以解析,但人类仍然可以(希望如此)阅读。

许多网站使用验证码来防御与其网站交互的机器人程序。比如许多银行网站强制每次登录时都需要输入验证码,这就令人十分痛苦。本章将介绍如何自动化处理验证码问题,首先使用光学字符识别(Optical Character Recognition,OCR),然后使用一个验证码处理API。

在本章中,我们将会介绍如下主题。

  • 验证码处理;
  • 使用验证码处理服务;
  • 机器学习和验证码;
  • 报告错误。

在第6章处理表单时,我们使用手工创建的账号登录网站,而忽略了创建账号这一部分,这是因为注册表单需要输入验证码,如图7.1所示。

\\fuwuqi6\YDStu\18-0069\0701.tif

图7.1

请注意,每次加载表单时都会显示不同的验证码图像。为了了解表单需要哪些参数,我们可以复用上一章编写的parse_form()函数。

>>> import requests
>>> REGISTER_URL = 'http://example.python-scraping.com/user/register'
>>> session = requests.Session()

Get 用Python写网络爬虫(第2版) now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.