问答 请问在 ui 自动化中,如何解决图形验证码类的问题,求个解决问题的思路或者方向

siyi1 · 2022年12月29日 · 最后由 Just_Scenery 回复于 2023年08月10日 · 12918 次阅读

请问在 ui 自动化中,遇到了如图中的场景,图形验证码(已知图形验证码为 base64 格式 )
不知道有没有大神给指点一个方向,或者思路

最佳回复

我最近正在做这个, 分享一下我的解决方案:

  1. 先抓包拿到获取图形验证码的接口, 此接口一般会返回一个 base64 的图片和一个图片 id
  2. 通过 ddddocr 识别验证码
  3. 调用登录接口, 传入账号密码验证码及验证码 id

楼主如果是采用 ui 自动化建议使用以下方案:

  1. 通过 selenium 对验证码控件进行截图, 将验证码图片保存下来 ( 如果出现图片不够清晰的情况, 可以使用 SeleniumWire 对页面接口进行抓包, 抓到获取验证码接口后解析接口参数就可以直接获取到 base64 的图片了 )
  2. 通过 ddddocr 识别验证码
  3. 输入账号密码及验证码 进行登录
共收到 31 条回复 时间 点赞

通过 cookie 绕过

我最近正在做这个, 分享一下我的解决方案:

  1. 先抓包拿到获取图形验证码的接口, 此接口一般会返回一个 base64 的图片和一个图片 id
  2. 通过 ddddocr 识别验证码
  3. 调用登录接口, 传入账号密码验证码及验证码 id

楼主如果是采用 ui 自动化建议使用以下方案:

  1. 通过 selenium 对验证码控件进行截图, 将验证码图片保存下来 ( 如果出现图片不够清晰的情况, 可以使用 SeleniumWire 对页面接口进行抓包, 抓到获取验证码接口后解析接口参数就可以直接获取到 base64 的图片了 )
  2. 通过 ddddocr 识别验证码
  3. 输入账号密码及验证码 进行登录

首先明确一点的是,你是在测验证码还是业务,如果你用手段绕过了验证码,那验证码要不要提 bug。

可以通过第三方接口识别,,以前买过,印象中是十块钱可以调五百次,识别率还可以的。

我最近也在做 ui 自动化, 这种验证码,直接找开发,绕过去 [狗头]

接入打码平台,或者提供万能验证码

一般直接找开发,协调,要么取消验证码,要么给万能验证码

用 paddle ocr

没必要自动化这个

实际测试,是通过万能验证码和屏蔽验证码来绕过

app 上那种极验证的也很烦,还没见有比较好的解决方案。

能绕过就绕过,花费太多时间在这里,不值得,没啥收益

有一个类似的问题,楼主遇到过吗?短信验证码怎么使用 UI 自动化去解决😁

找研发要个万能验证码 , 或者登陆拿 token 绕过就行了。

测试环境让开发给你换个万能的验证码

调接口拿验证码图片的数据流,数据流转换成图片保存本地,然后 ddddocr 识别。方便的话还是找开发给个万能验证码

找开发处理下,绕过验证码登录

村雨 回复

这个可以有哈哈哈,花钱办事,省事。。

cnocr 识别率挺好的。

ddddOCR 可以实现,但是识别精确率低,百度 AIP 中的 OCR 识别率挺高,只不过每个月只有 1000 次

siyi1 #12 · 2022年12月30日 Author
芜湖 回复

感谢

通常是直接找开发,直接取消。这么做就省时省力。
要么就找一个开源或者付费的 OCR 图片识别工具或者接口。

你这个验证码还是比较清晰,没有多余的干扰字符,ddddocr 这个库应该可以 hold 住,当然最简单的方式还是走挡板验证,即后台写死一个万能验证码。

tensorflow 有个 ocr 识别 对中文识别率有点低 还需要对图片进行一些处理。数字的话应该还好,可以尝试一下。

siyi1 #13 · 2022年12月30日 Author

感谢大佬的思路,

首选 redis,其次 ddddocr 识别

你这验证码 还可以识别率应该挺高的 可以用一下百度的 ocr 识别 api 每天可以免费用几百次我记得

如果是为了测图形验证码登录之后的业务功能,直接找开发先屏蔽掉最省事

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册