当前位置:首页 » 编程语言 » python识别验证码图片

python识别验证码图片

发布时间: 2025-07-12 02:18:03

1. python+selenium+pytesseract识别图片验证码

selenium结合python进行验证码识别,主要步骤分为三部分:使用selenium截取验证码,安装并验证识别环境pytesseract与Tesseract-OCR,以及处理验证码图片以提高识别率。在直接截图的验证码图片中,噪点或干扰线可能导致pytesseract无法识别。若环境配置正确但识别失败,需检查图片处理是否到位。

在图片处理阶段,目的是通过调整图片以满足识别要求。调整过程中,利用`im.show()`函数展示每一步处理后的图片,确保处理方向符合预期。处理时需灵活调整参数,以适应不同验证码的样式。

有经验者分享,通过调整图片大小来提升识别率,方法为使用Python的cv2库中的`resize()`函数放大图片。此方法对于某些情况下提高识别准确性有显着效果,但需注意调整大小时保持图片清晰度。

总结而言,验证码识别流程涉及截取、环境配置与图片处理。通过细致的图片处理,结合正确的识别环境设置,能有效提升验证码识别的成功率。在实际应用中,需根据验证码的具体特点调整处理策略,以达到最佳识别效果。

2. python如何识别验证码

我们首先识别最简单的一种验证码,即图形验证码。这种验证码最早出现,现在也很常见,一般由4位字母或者数字组成。例如,中国知网的注册页面有类似的验证码,页面如下所示:

表单中最后一项就是图形验证码,我们必须完全正确输入图中的字符才可以完成注册。

更多有关验证码的知识,可以参考这些文章:

Python3爬虫进阶:识别图形验证码

Python3爬虫进阶:识别极验滑动验证码

Python3爬虫进阶:识别点触点选验证码

Python3爬虫进阶:识别微博宫格验证码

·本节目标以知网的验证码为例,讲解利用OCR技术识别图形验证码的方法。

·准备工作识别图形验证码需要库tesserocr,以mac安装为例:在mac下,我们首先使用Homebrew安装ImageMagick和tesseract库: brew install imagemagickbrew install tesseract 接下来再安装tesserocr即可:pip3 install tesserocr pillow这样我们就完成了 tesserocr的安装。

·获取验证码为了便于实验,我们先将验证码的图片保存到本地。打开开发者工具,找到验证码元素。验证码元素是一张图片,它的ser属 性是CheckCode.aspk。所以我们直接打开如下链接就可以看到一个验证码,右键保存即可,将其命名为code.jpg:

这样我们就得到一张验证码图片,以供测试识别使用。

相关推荐:《Python教程》

识别测试

接下来新建一个项目,将验证码图片放到项目根目录下,用tesserocr库识别该验证码,代码如下所示:

这里我们新建了一个Image对戏那个,调用了tesserocr的image_to_text( )方法。传入该Image对象即可完成识别,实现过程非常简单,结果如下:

我们可以看到,识别的结果和实际结果有偏差,这是因为验证码内的多余线条干扰了图片的识别。

另外,tesserocr还有一个更加简单的方法,这个方法可以直接将图片文件转为字符串,代码如下:

不过这种方法的识别效果不如上一种的好。

验证码处理

对于上面的图片,我们可以看到其实并没有完全识别正确,所以我们需要对图像作进一步的处理,如灰度转换、二值化等操作。

我们可以利用Image对象的convert( )方法参数传入L,即可将图片转化为灰度图像,代码如下:

传入1即可将图片进行二值化处理,如下所示:

我们还可以指定二值化的阈值。上面的方法采用的是默认阈值127。不过我们不能直接转化原图,要将原图先转化为灰度图像,然后再指定二值化阈值,代码如下:

在这里,变量threshold代表二值化阈值,阈值设置为160,之后我们来看看我们的结果:

我们可以看到现在的二维码就比较方便我们进行识别了;那么对于一些有干扰的图片,我们做一些灰度和二值化处理,这会提高图片识别的正确率。

3. python+appium 自动化测试 - 获取短信 + 图片验证码

自动获取短信验证码和图片验证码是 Python+Appium 自动化测试中的常见任务,本文将重点介绍如何实现这一功能,并以微博找回密码为例进行演示。

获取短信验证码的方法有三种,但本文将主要介绍第一种方法:通过在通知栏中获取短信内容。首先,确保手机应用与测试框架的兼容性。导入并声明 WebDriver 库下的 webdriver 类,将 driver 声明为 webdriver,这样代码可以顺利执行。在通知栏中定位到短信内容,然后将获取到的内容填入验证码输入框。

接下来,介绍获取图片验证码的方法。通过网络的 OCR 文字识别技术,可以识别图片中的字母、文字或数字验证码。在调用网络 OCR 图片识别前,需要先申请网络通用文字识别接口,并下载对应语言的 SDK 文件。详细步骤包括登录网络 AI 平台、申请接口、查看 SDK 下载链接,以及安装和使用 SDK。在工程中自动创建存放图片的文件夹,定位图片验证码控件,截取图片并保存在指定文件夹内。使用 OCR 技术识别图片中的验证码,并将其输入到验证码输入框中。

在执行过程中需要注意,图片的命名应遵循一定的规则,以便后续查找和核对。图片保存在本地工程目录下方而非磁盘,以避免用户在运行代码时需要手动调整路径。此外,还提供了截图和 OCR 识别的 Python 示例代码,以及一个解析图片验证码的脚本,用于处理 OCR 返回的字典并提取所需信息。

最后,为帮助读者在求职季节找到满意的工作,本文附上了软件测试面试题合集和学习资料包,以助大家顺利冲刺金三银四。

4. 用python如何直接获取jsp生成的验证码图片

你只需要正常请求图片就行了,分析一下image的src,把它拼接成一个完整的URL去请求就好了,得到的有可能是BASE64编码串,或者是文件,把它保存下来就可以了。

5. python抓取网页时是如何处理验证码的

python抓取网页时是如何处理验证码的?下面给大家介绍几种方法:

1、输入式验证码

这种验证码主要是通过用户输入图片中的字母、数字、汉字等进行验证。如下图:

解决思路:这种是最简单的一种,只要识别出里面的内容,然后填入到输入框中即可。这种识别技术叫OCR,这里我们推荐使用Python的第三方库,tesserocr。对于没有什么背影影响的验证码如图2,直接通过这个库来识别就可以。但是对于有嘈杂的背景的验证码这种,直接识别识别率会很低,遇到这种我们就得需要先处理一下图片,先对图片进行灰度化,然后再进行二值化,再去识别,这样识别率会大大提高。

相关推荐:《Python入门教程》

2、滑动式验证码

这种是将备选碎片直线滑动到正确的位置,如下图:

解决思路:对于这种验证码就比较复杂一点,但也是有相应的办法。我们直接想到的就是模拟人去拖动验证码的行为,点击按钮,然后看到了缺口的位置,最后把拼图拖到缺口位置处完成验证。

第一步:点击按钮。然后我们发现,在你没有点击按钮的时候那个缺口和拼图是没有出现的,点击后才出现,这为我们找到缺口的位置提供了灵感。

第二步:拖到缺口位置。

我们知道拼图应该拖到缺口处,但是这个距离如果用数值来表示?

通过我们第一步观察到的现象,我们可以找到缺口的位置。这里我们可以比较两张图的像素,设置一个基准值,如果某个位置的差值超过了基准值,那我们就找到了这两张图片不一样的位置,当然我们是从那块拼图的右侧开始并且从左到右,找到第一个不一样的位置时就结束,这是的位置应该是缺口的left,所以我们使用selenium拖到这个位置即可。

这里还有个疑问就是如何能自动的保存这两张图?

这里我们可以先找到这个标签,然后获取它的location和size,然后 top,bottom,left,right = location['y'] ,location['y']+size['height']+ location['x'] + size['width'] ,然后截图,最后抠图填入这四个位置就行。

具体的使用可以查看selenium文档,点击按钮前抠张图,点击后再抠张图。最后拖动的时候要需要模拟人的行为,先加速然后减速。因为这种验证码有行为特征检测,人是不可能做到一直匀速的,否则它就判定为是机器在拖动,这样就无法通过验证了。

3、点击式的图文验证和图标选择

图文验证:通过文字提醒用户点击图中相同字的位置进行验证。

图标选择: 给出一组图片,按要求点击其中一张或者多张。借用万物识别的难度阻挡机器。

这两种原理相似,只不过是一个是给出文字,点击图片中的文字,一个是给出图片,点出内容相同的图片。

这两种没有特别好的方法,只能借助第三方识别接口来识别出相同的内容,推荐一个超级鹰,把验证码发过去,会返回相应的点击坐标。

然后再使用selenium模拟点击即可。具体怎么获取图片和上面方法一样。

4、宫格验证码

这种就很棘手,每一次出现的都不一样,但是也会出现一样的。而且拖动顺序都不一样。

但是我们发现不一样的验证码个数是有限的,这里采用模版匹配的方法。我觉得就好像暴力枚举,把所有出现的验证码保存下来,然后挑出不一样的验证码,按照拖动顺序命名,我们从左到右上下到下,设为1,2,3,4。上图的滑动顺序为4,3,2,1,所以我们命名4_3_2_1.png,这里得手动搞。当验证码出现的时候,用我们保存的图片一一枚举,与出现这种比较像素,方法见上面。如果匹配上了,拖动顺序就为4,3,2,1。然后使用selenium模拟即可。

热点内容
centos安装php52 发布:2025-07-12 15:14:19 浏览:296
usb接口编程 发布:2025-07-12 15:14:19 浏览:214
算法学习心得 发布:2025-07-12 15:14:08 浏览:792
华为手机内核编译 发布:2025-07-12 15:13:13 浏览:837
汇编语言编译器masm 发布:2025-07-12 14:57:37 浏览:56
校园网服务器ip地址 发布:2025-07-12 14:55:02 浏览:238
如何用密码锁定 发布:2025-07-12 14:39:10 浏览:925
软件发布源码 发布:2025-07-12 14:29:34 浏览:179
sql函数和存储过程的区别 发布:2025-07-12 14:26:37 浏览:30
查看存储功空间 发布:2025-07-12 14:17:22 浏览:942