接口自动化测试中如何解决验证码的问题

一、在测试的过程中解决验证码的问题有以下几种方式:

1.在测试环境将验证码屏蔽掉

2.设置万能验证码

3.通过cookies绕过

4.通过图片识别的方式,进行识别

二、本篇文章主要讨论使用识别的方式进行验证码的识别

2.1 具体的实现思路如下:

  • 获取验证码图片,并将图片保存到本地
  • from lxml import etree
    import requests
    import tujian
    headers = {
        'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'
    }
    #将验证码图片请求后保存到本地
    login_url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
    page_text = requests.get(url=login_url,headers=headers).text
    tree = etree.HTML(page_text)
    img_src = 'https://so.gushiwen.cn'+tree.xpath('//*[@id="imgCode"]/@src')[0]
    code_data = requests.get(url=img_src,headers=headers).content
    with open('./code.jpg','wb') as fp:
        fp.write(code_data)

  • 识别验证码图片
    • 使用ddddocr来进行识别(免费)
    • import ddddocr
      
      with open("v1.png", 'rb') as f:
          img_bytes = f.read()
      
      ocr = ddddocr.DdddOcr(show_ad=False)
      code = ocr.classification(img_bytes)
      
      print(code)

    • 使用muggle_ocr(麻瓜) 来进行识别(免费)
import muggle_ocr
from muggle_ocr import ModelType
# 二进制 模式打开文件
with open(r"v2.png", "rb") as f:
    # 方法用于从文件读取指定的字节数
    b = f.read()
# model_type 包含了 ModelType.OCR/ModelType.Captcha 两种
# ModelType.OCR 用于识别普通印刷文本 是ModelType.Captcha 可识别光学印刷文本
sdk = muggle_ocr.SDK(model_type=ModelType.Captcha)
text = sdk.predict(image_bytes=b)
print(text)

  • 使用 第三方打码平台(收费)
result = tujian.getImgCodeText('./code.jpg',3)
print(result)
# 一、图片文字类型(默认 3 数英混合):
# 1 : 纯数字
# 1001:纯数字2
# 2 : 纯英文
# 1002:纯英文2
# 3 : 数英混合
# 1003:数英混合2
#  4 : 闪动GIF
# 7 : 无感学习(独家)
# 11 : 计算题
# 1005:  快速计算题
# 16 : 汉字
# 32 : 通用文字识别(证件、单据)
# 66:  问答题
# 49 :recaptcha图片识别
# 二、图片旋转角度类型:
# 29 :  旋转类型
#
# 三、图片坐标点选类型:
# 19 :  1个坐标
# 20 :  3个坐标
# 21 :  3 ~ 5个坐标
# 22 :  5 ~ 8个坐标
# 27 :  1 ~ 4个坐标
# 48 : 轨迹类型
#
# 四、缺口识别
# 18 : 缺口识别(需要2张图 一张目标图一张缺口图)
# 33 : 单缺口识别(返回X轴坐标 只需要1张图)
# 五、拼图识别
# 53:拼图识别
  • 模拟登录
  • url = 'https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx'
    data = {
        "__VIEWSTATE": "opfVI7oolwkr7MLRVzsNSMASqLRUuO1dg5ZP5EIRa4FyM+mOYKEs6KWEKQKaba2ulLoZQIaLFiKK4mr5K3ci1v8ua28wtcRtabKWjOtJtU/i2etH+zSduegTMcg=",
        "__VIEWSTATEGENERATOR": "C93BE1AE",
        "from": "http://so.gushiwen.cn/user/collect.aspx",
        "email": "15027900535",
        "pwd": "bobo@15027900535",
        "code":result ,
        "denglu": "登录"
    }
    #获取了登录成功后的页面源码数据
    login_page_text = requests.post(url=url,headers=headers,data=data).text
          
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在进行web端手机号短信验证码接口测试时,我们可以考虑以下几个步骤和方法: 1. 确定测试环境和配置:首先,我们需要确保测试环境具备发送短信验证码的功能,并且能够接收和验证短信验证码。这可以通过模拟短信验证码发送的接口来实现,或者使用第三方短信服务提供商的测试环境。 2. 确定测试用例:根据引用[2]提到的需求明确和细化的步骤,我们可以明确测试用例,包括验证短信验证码接口的功能、测试点等。我们可以测试以下方面: - 测试短信验证码的有效性:验证接收到的短信验证码是否与预期一致。 - 测试短信验证码的过期性:验证短信验证码是否在一定时间内过期。 - 测试短信验证码的正确性:验证短信验证码是否只能被正确的手机号接收并验证。 - 测试短信验证码的安全性:验证是否存在短信轰炸漏洞,即重放短信验证码接口导致发送大量恶意短信。这可以参考引用提到的短信轰炸漏洞。 3. 编写测试脚本:根据确定的测试用例,我们可以编写测试脚本来模拟用户输入手机号并触发短信验证码发送的操作。然后,我们可以接收并验证返回的短信验证码是否符合预期。在测试短信验证码安全性时,我们可以编写脚本来模拟恶意发送大量请求,检查系统是否能够及时识别并阻止这些请求。 4. 进行测试:在测试过程,我们可以使用自动化测试工具来执行测试脚本,并检查测试结果是否符合预期。我们可以使用一些开源工具如Selenium或Appium来模拟用户行为并自动化测试。 总结起来,对于web端手机号短信验证码接口测试,我们需要确定测试环境和配置,明确测试用例,并编写相应的测试脚本来模拟用户行为和验证短信验证码的功能、有效性、过期性和安全性。通过自动化测试工具执行测试脚本,并检查测试结果是否符合预期,以保证接口的稳定性和安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值