Python3,这个库,真的是图片类型验证码的克星,真香。

1、引言

小屌丝: 鱼哥,你说爬虫或者登录网页,最烦的是那个操作?
小鱼:图片验证码了。
小屌丝:确实是的,那有没有什么办法,能破解这种繁琐的验证呢?
小鱼:方法嘛,有啊,例如:cookie啊,或者利用第三方库啊
小屌丝:真的有第三方库,可以解决这个问题?
小鱼:对啊,很方便的,
小屌丝:演示一下如何?
小鱼:怎么突然点饿了 ~
小屌丝:我懂我懂, 你分享完,咱们泡澡去~
在这里插入图片描述

2、 ddddocr

2.1 介绍

验证码,复杂一点的有滑块验证码,点选文章和点选图片验证码。这些都是爬虫和WebUI自动化测试中中的老大难问题,今天介绍一款通用验证码识别 SDK 对他们彻底说拜拜,它的名字是 ddddocr 带带弟弟 OCR 通用验证码识别 SDK 免费开源版。

2.2 安装

老规矩,在使用前,必须要安装。
安装方式逃不了 pip方式:

pip install ddddocr

其他方式安装:

Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!
Python3:我低调的只用一行代码,就导入Python所有库!!

2.3 使用

2.3.1 滑块验证码

滑块验证码这里用的是豆瓣的滑块验证。下滑块是单独的透明背景图 hycdn.png。
在这里插入图片描述

背景图是带小滑块坑位的 background.jpg。
在这里插入图片描述
上代码

# -*- coding:utf-8 -*-
# @Time   : 2022-03-06
# @Author : carl_DJ

import ddddocr

det = ddddocr.DdddOcr(det=False, ocr=False)

with open('hycdn.png', 'rb') as f:
        target_bytes = f.read()
    
with open('background.jpg', 'rb') as f:
    background_bytes = f.read()

res = det.slide_match(target_bytes, background_bytes, simple_target=True)

print(f"{res}")

运行结果

{'target_y': 0, 'target': [486, 126, 622, 262]}

target 属性的前两个值正好和豆瓣验证滑块 url 中提交的 ans 差不多。
在这里插入图片描述

2.3.2 点选类验证码

点选类验证码
在这里插入图片描述

上代码

# -*- coding:utf-8 -*-
# @Time   : 2022-03-06
# @Author : carl_DJ

import ddddocr

det = ddddocr.DdddOcr(det=True)

with open("eb.jpg", 'rb') as f:
    image = f.read()

poses = det.detection(image)

im = cv2.imread("eb.jpg")

for box in poses:
    x1, y1, x2, y2 = box
    im = cv2.rectangle(im, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=2)

cv2.imwrite("result.jpg", im)

运行结果
在这里插入图片描述

2.3.3 字母数字验证码

字母数字验证码的图片来自于 google 搜索
在这里插入图片描述
上代码

# -*- coding:utf-8 -*-
# @Time   : 2022-03-06
# @Author : carl_DJ

import ddddocr

ocr = ddddocr.DdddOcr(old=True)

with open("z1.jpg", 'rb') as f:
    image = f.read()

res = ocr.classification(image)
print(res)

运行结果

2wkc

3、总结

今天的分享,就到这里了。
奇奇怪怪的知识,是不是又增加了。
曾经编写WebUI自动化脚本,为了不在验证码识别大费周折,就让开发大佬把验证码给注释掉。
现在,有了ddddocr, 就再也不用麻烦开发大佬注释验证码了,
所以,
关注小鱼,学习更多关于python第三方库的知识。

  • 14
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
Python图片验证码是一种用于验证用户身份的技术,通常用于网站注册、登录等场景。它通过生成一张包含随机字符的图片,并要求用户输入正确的字符来验证身份。 在Python中,可以使用第三方如Pillow或Captcha来生成图片验证码。以下是一个简单的示例代码: ```python from PIL import Image, ImageDraw, ImageFont import random # 生成随机字符 def generate_code(length): code = '' for _ in range(length): code += random.choice('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789') return code # 生成验证码图片 def generate_captcha(code, width, height): image = Image.new('RGB', (width, height), (255, 255, 255)) draw = ImageDraw.Draw(image) font = ImageFont.truetype('arial.ttf', 40) # 使用字体文件arial.ttf,字体大小为40 # 绘制字符 draw.text((10, 10), code, font=font, fill=(0, 0, 0)) # 添加干扰线 for _ in range(5): x1 = random.randint(0, width) y1 = random.randint(0, height) x2 = random.randint(0, width) y2 = random.randint(0, height) draw.line((x1, y1, x2, y2), fill=(0, 0, 0)) # 添加噪点 for _ in range(50): x = random.randint(0, width) y = random.randint(0, height) draw.point((x, y), fill=(0, 0, 0)) # 保存图片 image.save('captcha.png') # 示例用法 code = generate_code(4) # 生成4位随机字符 generate_captcha(code, 200, 100) # 生成200x100大小的验证码图片 ``` 以上代码使用Pillow生成了一个200x100大小的验证码图片,其中包含了4位随机字符、干扰线和噪点。你可以根据需要调整图片大小、字符数量和样式等参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carl_奕然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值