python爬虫20 | 小帅b教你如何识别图片验证码
off999 2024-10-23 12:52 40 浏览 0 评论
当你在爬取某些网站的时候
对于你的一些频繁请求
对方会阻碍你
常见的方式就是使用验证码
验证码的主要功能
就是区分你是人还是鬼(机器人)
人
想法设法的搞一些手段来对付技术
而
技术又能对付人们的想法
一来一去
就有了各种各样的变态验证码
也有了各种各样的应对方式
常见的验证码有这么几种
图像验证
语音验证
短信验证
极验验证
点击验证
今天
小帅b想跟你先说说如何识别图像验证码
那么
接下来就是
学习 python 的正确姿势
我们来看看这些图片验证码
(此图来源网络)
可以发现
这些验证码大多是数字和字母组成
然后在此之上再添加一些像毛一样的线
或者搞一些噪点
或者把这些字符扭曲一下
为了增加识别难度也是辛苦人家了
接下来我们思考一下
我们要识别这类验证码要怎么做呢
首先要处理一下验证码图片
什么噪点乱七八糟的
我们尽量把它们去掉
让图片
尽量黑白
尽量只剩下字符本身
然后再用 python 强大的 OCR 工具
Python-tesseract
来识别我们优化好的图片
这样正确率就会大大的提高
哎呀
我真是个聪明 boy 啊
为了让你更清楚的知道怎么识别图像验证码
小帅b用 python 搞了几张识别难度不同的验证码
第一张
难度系数:
第二张
难度系数:
第三张
难度系数:
第四张
难度系数:
第五张
难度系数 :
先对第一张进行识别
这张看起来没什么 "污染"
所以相对简单
先安装一下 pytesseract
pip install pytesseract接着安装一下 tesseract-ocr
如果你是 ubuntu 系统可以直接使用如下命令安装
sudo apt install tesseract-ocr如果你是 win 系统自行 Google 一下安装 tesseract-ocr 以及环境变量配置
完了之后就导入相关模块到我们的代码文件中
try: from PIL import Imageexcept ImportError: import Imageimport pytesseract
接着我们就打开第一张图片
使用 pytesseract 识别
打印一下
captcha = Image.open("captcha1.png")result = pytesseract.image_to_string(captcha)print(result)打印结果
ok,么有问题
接着我们来识别第 2 张
captcha = Image.open("claptcha2.png")result = pytesseract.image_to_string(captcha)print(result)结果打印出来是
1924??
这就说明
pytesseract 是没办法识别太多噪点的图片的
如果这个图片再加上一点彩色背景
那么对 pytesseract 来说更是有点吃力的
所以我们先对这张图片灰度处理一下
captcha = Image.open("captcha2.png")result = captcha.convert('L')result.show()图片就变成灰了
虽然灰了
但是还不够
我们除了处理灰度还需要对其 二值化
def convert_img(img,threshold): img = img.convert("L") # 处理灰度 pixels = img.load() for x in range(img.width): for y in range(img.height): if pixels[x, y] > threshold: pixels[x, y] = 255 else: pixels[x, y] = 0 return img调用一下
convert_img(captcha,150)这时候图片就变成这样了
是不是一下子就清晰很多了呢
这时候我们对这张图片识别一下
# 识别一下result = pytesseract.image_to_string(result)print(result)成功识别
接下来我们再来看看有毛有噪的图片
这时候直接去识别是识别不出来的
所以还是老办法
先处理灰度
再 二值化
这次我们再降一下噪
data = img.getdata() w,h = img.size count = 0 for x in range(1,h-1): for y in range(1, h - 1): # 找出各个像素方向 mid_pixel = data[w * y + x] if mid_pixel == 0: top_pixel = data[w * (y - 1) + x] left_pixel = data[w * y + (x - 1)] down_pixel = data[w * (y + 1) + x] right_pixel = data[w * y + (x + 1)]
if top_pixel == 0: count += 1 if left_pixel == 0: count += 1 if down_pixel == 0: count += 1 if right_pixel == 0: count += 1 if count > 4: img.putpixel((x, y), 0)图片变成这样了
再识别一下
不过
pytesseract 不是万能的
对于稍微复杂一点的就识别不出来了
至于这张
你能看出它是 1l1l0oO0 么?
如果你能
算你牛逼
反正小帅b不能
所以 pytesseract 也不能
对于一些简单的验证码
使用 pytesseract 还是可以的
如果你想提高 pytesseract 识别率
还可以去搞些图片去训练一下 tesseract-ocr
ok
以上
主要让你了解一下图片识别库的使用
以及对一些图片的常用降噪操作
那么下次你爬到一些需要图像的简单验证码
应该不在话下了
完
下回见
peace
点个赞啊~~(破音)
相关推荐
- deepin和统信uos(统信和deepin的区别)
-
差不多。1Deepin原名LinuxDeepin、deepinos、深度操作系统,于2014年4月改名Deepin。deepin团队基于Qt/C++(用于前端)和Go(用于后端)开发了的全新深度桌...
- 三星驱动(三星驱动板)
-
驱动是必须装的,但不需要单独安装驱动。 1、电脑的所有硬件,必然要装驱动,键盘、鼠标什么的,都是有驱动的。驱动是软件和硬件结合的桥梁。但多数普通常见的硬件,驱动是widnows系统自带的,不需要用户...
- u盘启动杀毒软件(u盘杀毒系统)
-
有,但是主要是专杀工具,全面的综合杀毒软件基本上没有,因为没什么用。 1、放在U盘里的杀毒软件,就是不安装,也不监控,只杀毒的软件。 2、目前的杀毒软件的工作机制,主要是监控,监控电脑不感染病...
- 联想维修站点查询官网(联想 维修 服务网点)
-
您可以在联想的官方网站上查询到附近的授权维修服务点,或者拨打联想的客服电话寻求帮助。在维修服务点,您可以享受到专业的维修服务,包括硬件故障、软件问题、系统优化等方面的维护和维修。维修人员将会根据您的电...
- 电脑不识别移动硬盘(移动硬盘灯亮但不读取)
-
电脑不能识别移动硬盘可能是由于以下原因造成的:1.电脑和硬盘之间的连接首先,可以确保移动硬盘正确连接到电脑上,检查USB接口是否松动或损坏,可以尝试更换USB线或者尝试连接到其他USB接口看是否能够...
- 键盘的win键在哪里(电脑键盘的win键在哪里)
-
win键就是电脑键盘上显示WINDOWS标志的按键。位于CTRL键与ALT键两个键之间,win键的具体位置一般电脑键盘上有左右两个。Windows键是一种特殊的键,通常位于键盘的左下角。它的图案是一个...
- ghost全盘备份步骤图(用ghost怎么进行全盘备份)
-
可以用手动备份到指定分区。一、用一键Ghost还原中的“中文向导”备份开始-程序-一键Ghost-选出“中文向导”,Ghost中文向导-1、备份文件默认是“第1硬盘第1分区”,如果不是,将鼠标指针移...
-
- 键盘的windows键是哪一个(键盘上windows键是哪个键)
-
windows键就是电脑键盘上ctrl键和alt键之间的按键,位于左下角。它带着微软的徽标,跟开始菜单一样的图标,它属于辅助按键,主要与其它按键组合使用,实现一些特定的功能,组合成多种快捷操作方式。这里上面所知的Win键其实就是键盘上的Wi...
-
2025-12-31 10:51 off999
- win10打开设置快捷键(win10打开设置快捷键是什么)
-
1、首先打开电脑,在任务栏的语言地方点击一下再点击语言首选项。2、然后在新的界面里点击选择左侧“高级设置”按钮。3、之后在新的界面里点击选择“更改语言栏热键”按钮。4、然后在新的界面里点击选择“更改热...
- flash插件下载手机版下载安装
-
华为手机的最新系统版本已经不再支持FlashPlayer,这是由于Adobe已于2020年底停止更新和支持FlashPlayer。因此,如果您使用最新的华为手机系统,可能无法安装和使用Flash...
- 官方应用商店下载(小米官方应用商店下载)
-
1.审核和验证:应用商店会对应用进行审核和验证,确保其质量和可靠性。开发者需要满足一定的要求才能在应用商店上架应用。而官网下载的应用没有经过此类审核和验证,因此用户需要自行评估其质量和可信度。2....
- 主题软件免费(主题软件免费推荐)
-
下载主题方法:一、打开手机找到APPStore应用软件,二、点击进去在下面找到有个搜索,点击它查找主题壁纸,三、弹出来很多主题壁纸,根据下载量和个人喜欢的应用主题选择下载相应的主题,四、下载成功后即...
- 一芯fc1178bc盘量产教程(一芯量产工具使用教程)
-
fc1178bc量产工具没有显示u盘拔下U盘,关闭量产工具,再插上U盘(先要确认卸载了安国的驱动,如果不能确认,运行LoadDriver.exe卸载),然后插上U盘,右键我的电脑---属性---硬件-...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
