利用Python轻松搞定数字英文验证码,搞定Python反爬
Chapter15 | 验证码识别
- 一、模拟登录知乎
- 二、光学字符识别
- 1、pytesseract2、验证码的识别3、图像处理3.1、二值图像3.2、灰度图像3.3、索引图像3.4、处理实例4、处理复杂验证
验证码(CAPTCHA)的全程为全自动区分计算机和人类的公开图灵测试从全程可以看出:验证码用于测试用户是否为真实人类以识别知乎验证码为例 , 介绍简单的验证码处理
一、模拟登录知乎
- 如果访问过于频繁 , 服务器要求输入验证码
- 如果短时间内在知乎上频繁地登录退出 , 知乎就会要求输入验证码
- 随着计算能力和机器学习的发展 , 涌现出很多新型验证码 , 使得验证码处理越来越难 。 如下图:
- 验证码的识别是一个专门的研究领域 , 对于普通用户来说 , 要采用合适的抓取策略 , 尽量避免验证码的出现 。
1、pytesseract官网:函数:image_to_string()用法:print(pytesseract.image_to_string(Image.open(“test.png”)))
- pytesseract是一个基于Google‘s Tesseract-OCR的独立封装包
- pytesseract功能是识别图片文件中文字 , 并作为返回参数返回识别结果
- pytesseract默认支持tiff、bmp格式图片 , 只有在安装PIL之后 , 才能支持jpeg、gif、png等其他图片格式
我们要先安装PIL:pip install Pillow-7.1.1-cp36-cp36m-win_amd64.whlPIL的open()函数用于创建PIL图像对象下面开始进行测试:
from PIL import Imagefrom PIL.ImageShow import show# 读取图片img = Image.open(".\\3.png")# 显示图片show(img)下图为测试运行的图片
文章插图输出图片格式 img.format输出图片尺寸 img.size输出图片类型 img.mode
# 输出图片的格式 , 尺寸以及图像类型print(img.format,img.size,img.mode)
文章插图- 生成缩略图img.thumbnail()
# 生成缩略图img.thumbnail((128,128))# 显示图片show(img)要旋转一张图片 , 可以使用逆时针方式表示旋转角度 , 然后调用rotate()函数当旋转角度为90° , 180° , 270°的时候可以用img.transpose(Image.ROTATE_90)其他角度用rotate()# 逆时针旋转45°rorate1 = img.rotate(45)show(rorate1)# 逆时针旋转90°rorate1 = img.transpose(Image.ROTATE_90)show(rorate2)左右对换 img.transpose(Image.FLIP_LEFT_RIGHT)上下翻转 img.transpose(Image.FLIP_TOP_BOTTOM)# 左右对换rorate3 =img.transpose(Image.FLIP_LEFT_RIGHT)show(rorate3)# 上下翻转rorate4 = img.transpose(Image.FLIP_TOP_BOTTOM)show(rorate4)图像的颜色转换可以使用convert()方法来实现 。 要读取一幅图像 , 并将其转换成灰色图像 , 只需要加上convert('L')# 图像转换为灰度grey = img.convert('L')
文章插图
文章插图Python规定左上角为(0,0)的坐标点 , box由一个4元组(左 , 上 , 右 , 下)定义 , 表示为坐标为:(left,upper,right,lower),最后的两个数字必须比前面两个要大
# 裁剪如片 box为裁剪图片的区域范围box = (30,30,100,100)region = img.crop(box)show(region)
文章插图2、验证码的识别
from PIL import Imagefrom PIL.ImageShow import showimport pytesseract# 读取图片img = Image.open(".\\2.png")# 显示图片show(img)print(pytesseract.image_to_string(img))
文章插图3、图像处理在用pytesseract进行验证码识别之前 , 我们首先需要对验证码图片进行预处理 , 尽量去除噪声 , 而只保留有验证码信息的像素pytesseract基本上无法识别那些没有经过预处理的验证码图片下面为一些基本的验证码预处理方法:
- 作家|逾万名作家联名反对亚马逊有声书轻松退换政策
- 路由器|家里无线网经常断网、网速慢怎么办?教你几个小窍门,轻松解决
- 轻松|使用 GIMP 轻松地设置图片透明度
- 试试|手机内存不够用,咋办?试试关闭微信这两步操作,轻松腾出几个G
- 回收利用协|固废“零”时代产业如何共生?
- 不良|打开“无痕模式”就以为无人知?殊不知,“不良网站”正在利用你
- 销量|Redmi Note 9系列三剑客齐发力 首发销量轻松突破30万台!
- 机身|轻松使用一整天,OPPO K7x给你不断电体验
- 格式化|利用好这3个隐藏技巧,Power BI 开发体验更丝滑
- 告诉|阿里大佬告诉你如何一分钟利用Python在家告别会员看电影
