栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Python

反爬之验证码识别登录 (OCR字符识别)

Python 更新时间:发布时间: 百科书网 趣学号

   在当今大数据时代,数据在互联网上的传播和呈现方式多种多样,如何获取这些杂乱的数据呢?爬虫就是其中的一种方式,是当今互联网使用非常广泛的技术之一,现已应用于金融、房产、贸易与科技等诸多领域。无论是大数据计算、数据分析还是机器学习,都离不开爬虫。爬虫工作在很多时候是企业业务开展的基础与主线,将爬取内容进行清洗和处理,得到的就是极具价值的数据。

   众多企业为了保证服务器的正常运转,反爬虫工程师们不得不使出各种各样的技术手段来阻止爬虫工程师们毫无节制地向服务器索取资源,例如Javascript 混淆、WebSocket、字体、WebDriver、App、验证码反爬等等。

   验证码是一张带有字符(中文,英文,数字等的图片,用户只需要将图片中的字符输入到文本框中即可,但这种简单的验证码很快就被绕过了。于是人们向图片中加入了一些混淆的元素,如斜线、彩色斑点,字符扭曲、角度旋转和文字重叠等等。

   验证码是一张带有字符(中文,英文,数字等的图片,用户只需要将图片中的字符输入到文本框中即可,但有些网站却加入了一些混淆的元素,如斜线、直线,彩色斑点等带有干扰反爬目的,最近做的一个项目里,却遇到了网站上带有这样的反爬机制。经过用 Tesseract-OCR 去识别其中一些的验证码,发现有不同的结果,如下图,有些虽然可以识别,但却带了各种空格和换行符号,有些却完全识别不了,有些却错误识别为其他字符等等。其实 Tesseract-OCR 对于带干扰或者不规则排位的字符识别率不太高,即使用降噪方法,经过反复测试,结果还是一样。

   据了解,除了简单的 OCR 识别,还可以通过机器学习和CNN 结合,但这种方法相对非常复杂,如果没有系统学习机器学习和CNN
这一方面的,好难完成。

  验证码除了字符识别外,还有其他反爬识别机制,例如模块划动,拼图,按指定顺序点击字符、物体等等。

   经过多次测试和观察其规律,发现这随机的验证码有一定的漏洞,每换验证码大概2-3次后,就会出现一个正常无干扰的码,因此我们可以通过添加一些条件,例如当遇到干扰无法识别时,自动换下一个验证码;当可以识别正常验证码时,经过测试,由于带有空格,换行符等,所以可以通过正则表达式或者其他方法( split, replace 等) 把所有空字符删除后,去比较字符串长度是否为4,有些半干扰验证码识别出来后,会多了一些符号,例如下图里最后一个,多了个中横线。所以经过这思路,我们可以添加一个循环结合这些条件去判断执行代码,当完全符合条件时候,就 break 终止这循环,然后执行下一步。

   通过把 “VRZD” 这个验证码用正则处理后,得到长度为4位的str, 这样就可以成功通过验证。虽然这个方法不是最直接的,但如果在有限的方法里,只要多观察规律变化,总可以有方法去实现你要的结果。



转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/272900.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号