• 0
  • 0
分享
  • 有此库,做WebUI自动化,再也不怕图片类型验证码了。
  • Carl_奕然 2022-11-24 12:10:59 字数 1746 阅读 1706 收藏 0

1、引言

小屌丝: 鱼哥,你说爬虫或者登录网页,最烦的是那个操作?

小鱼:图片验证码了。

小屌丝:确实是的,那有没有什么办法,能破解这种繁琐的验证呢?

小鱼:方法嘛,有啊,例如:cookie啊,或者利用第三方库啊

小屌丝:真的有第三方库,可以解决这个问题?

小鱼:对啊,很方便的,

小屌丝:演示一下如何?

小鱼:怎么突然点饿了 ~

小屌丝:我懂我懂, 你分享完,咱们泡澡去~

7951f3976f804344a46fc07f0adc5623.gif

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。


badba81b538a4ca48fe4513bddb6ef17.jpg

背景图是带小滑块坑位的 background.jpg。

9ac7923d473848448ce72d81b73f3555.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 差不多。

ae308dc1bde34a44bc41c03833902d48.jpg

2.3.2 点选类验证码

点选类验证码

d8779bfec2394a9483248b5d864fef9c.jpg

上代码

# -*- 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)

运行结果

30dc6a0d148a4707bc520359aadaca63.jpg

2.3.3 字母数字验证码

字母数字验证码的图片来自于 google 搜索

a205acc1911b4d12aaa2a3a8f3ad2364.jpg

上代码

# -*- 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知识。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   测试江湖:不只是代码,还有情商!  嘿,测试朋友们,我是风落,一个在蚂蚁金服“混迹”的江湖人。今天,我想跟大家聊聊一个话题,一个可能你们平时不太注意,但绝对重要的话题——职场情商!  首先,我得自曝家门,说说我的“光辉历程”。我,一个从撸代码到当项目经理的全能工程师,经历过外包、国企、外企的风风雨雨,现在终于在互联网的大潮中找到了自己的位置。但你知道吗?除了技术,我还兼职当过“心理咨询师”,听过无数职场小白的心酸故事。  最近,我整理了一下大家的问题,发现除了技术难题,最多被问到的就是:“风落哥,我该如何在职场中立足,拿到高薪?”还有,“风落哥,我刚进公司,感觉融入不进去,怎么办?”哈哈,...
            0 0 738
            分享
          •   在过去几年中,随着敏捷实践的应用不断增加,质量保证与开发人员之间的关系也在不断发展。这两个角色之间的区分变得越来越模糊,这就这两种角色演变的一个很好的例子。  传统上,质量检查工程师的角色与职位,测试和验证代码质量更加一致。质量保证人员可以采用瀑布式方法进行工作,可以将无法部署的代码打回给开发人员,或者对代码进行了测试和验证通过,版本会发布到生产中。测试和验证不是开发人员关注的流程,交接仅仅是一种规范。  敏捷为开发人员和质量保证专业人员带来了新的思维定势,并承担了许多新的责任,这不仅有利于软件的交付,而且使我们的工作更加出色。  这是成为QA专业人士进入敏捷组织时的期望。  Dev-QA...
            0 0 1763
            分享
          •   据多位小伙伴反馈,支付宝于今日上午出现服务异常,付款时显示“支付失败”“交易创建失败”“服务异常”等。  此外,有网友称支付宝出现余额宝提现未到账、花呗还款扣款成功但账单没清等。  与此同时,“支付宝崩了”话题也出现在微博热搜。截至发文,支付宝官方暂未给出回应。作者:汪淼原文链接:IT之家(ithome.com)
            0 0 170
            分享
          •   据 Cyber SecurityConnect,一个名为“Randomed.vc”的黑客组织声称已经“入侵了索尼的所有系统”,并因为“索尼拒绝谈判”而将在本周内打包抛售所有数据。  现在,索尼向 IGN 回应表示,他们已经对此事开启了正式调查。“我们目前正在调查此事,目前没有进一步评论。”  截至IT之家发稿,索尼面向消费者的服务目前依然都在正常运行,包括 PSN 和索尼客服等,而且近期也没有出现大规模中断。  Cyber Security Connect 表示,这伙上个月才出现的新手组织“已经攻击了大量的受害者”。他们声称“我们已经成功地攻破了索尼的所有系统,我们不会勒索他们,我们会出售...
            0 0 1120
            分享
          • 接口测试用例是目前软件开发中不可或缺的一个重要部分,因此编写接口测试用例同样重要。接口测试用例的作用非常明显,它能够帮助我们了解产品正在考验、调整它如何表现在特定情境之下、产品是否存在可改善的问题以及对其他流程执行有影响的因素。通过编写清晰准确的接口测试用例,能够有效避免很多无法预料的问题出现。在开始编写接口测试用例之前,需要注意几件事:确保你理解并准确衡量期望系统行为充分考虑使用者会怎么使用你的产品要将你所理解的客户端/后端对象明显列出来在运行之前应当充分测试所有代码在此过程中要定期总结编写接口测试用例的步骤包括:明确测试目标: 根据客观要求和最终需求来明确测试目标。确定用例场景: 根据业务...
            0 0 1010
            分享
      • 51testing软件测试圈微信