ad

学习《Python网络爬虫 从入门到精通》_掌握爬虫的精髓_5.4 验证码

网友投稿 131 2023-11-13

【摘要】 本书摘自《Python网络爬虫 从入门到精通》一书中第5章,第4节,吕云翔、张扬和韩延刚等编著。

5.4 验证码

5.4.1 图片验证码

学会模拟表单提交和使用 Cookie 可以说解决了登录上的主要难点,但不幸的是,目前 的网站在验证用户身份这个问题上总是精益求精,不惜下大力气防范非人类的访问,对于大 型商业性网站而言尤其如此。其中最大的障碍在于验证码,不夸张地说,验证码问题始终是 程序模拟登录过程中最为头疼的一环,也可能是所有爬虫程序所要面对的最大问题之一。人 们在日常生活中总会碰到要求输入验证码的情况,某种意义上来说,验证码其实是一种图灵 测试,这从它的英文名CAPTCHA 的全称 “Completely Automated Public Turing Test to Tell Computers and Humans Apart”(完全自动化的将电脑与人类分辨开来的公开图灵测试)就能 看出来。从之前模拟知乎登录的过程中可以看到,开发者可以通过手工登录并加载 Cookie 的方式“避开”验证码,但只是抓取程序避开了验证码,开发者实际并未真正“避开”,毕 竟还需要手动输入验证码)。另外,由于验证码形式多变、网站页面结构各异,试图用程序 全自动破解验证码的投入产出比确实太大,因此处理验证码的确十分棘手。考虑到攻克验证 码始终是爬虫开发中的一个重要问题,本节将简要介绍一下验证码处理的种种思路。

图片验证码(狭义上说,就是一类图片中存在字母或数字,需要用户输入对应文字的验 证方式)是比较简单的一类验证码(见图5-15)。在爬虫程序中对付这样的验证码一般会有 几种不同的思路: 一是通过程序识别图片,转换为文字并输入;二是手动打码,等于直接避 开程序破解验证码的环节;三是使用一些人工打码平台的服务。有关处理图片验证码的讨论 很多,以下将对这几种方式进行一些简要的介绍。

首先是识别图片并转换到文字的思路。传统上这种方式会借助 OCR (文字光学识别) 技术,步骤包括对图像进行降噪、二值化、分割和识别,这要求验证码图片的复杂度不高, 否则很可能识别失败。近年来随着机器学习技术的发展,目前这种图片转文字的方式拥有了 更多的可能性,比如,使用卷积神经网络 (CNN), 只要拥有足够多的训练数据,通过训练 神经网络模型,就能够实现很高的验证码识别准确度。手动打码是指在验证码出现时,通过解析网页元素的方式将验证码图片下载下来,由开 发者自行输入验证码内容,再通过编写好的函数填入对应的表单字段中(或者是网站对应的 HTTP API), 从而完成后续抓取工作。这种方式最为简单,在开发中也最为常用,优点是完 全没有经济成本,但其缺点也很突出,即需要开发者自身劳动,自动化程度低。不过,如果 只是应对登录情形的话,配合 Cookie 数据的使用,就可以做到“毕其功于一役”,初次登录 填写验证码后在一段时间内便可以摆脱验证码的烦恼。

学习《Python网络爬虫 从入门到精通》_掌握爬虫的精髓_5.4  验证码

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:打开《OpenStack 云平台-部署与高可用实战》_9.2.1 主机配置
下一篇:打开《OpenStack 云平台-部署与高可用实战》_离成功更进一步_1.1.1 什么是云计算
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×