如何解析二维码,获取二维码里的参数供下一个接口使用

业务场景:
通常我们需要通过手机扫描二维码进行签到确认到访,为了提高测试效率,我们可以通过接口实现快速签到
首先可以通过抓包获取接口之间业务参数关系,方可进行动态关联处理签到。
例如:我这里的二维码实际上是上一个客户报备接口返回的一个二维码图片地址,而我下一个签到接口所需要的一个参数值 不知道从哪里来?分析了半天才发现这个参数值是在上一个接口返回的结果里,我们所需要的这参数就在这个二维码图片地址里 如下图:

‘https://xfb-materia-test.obs.cn-south-1.myhuaweicloud.com/dc-openonline-file/ea2a1fbb-384d-400b-866e-e5b6308ab990.jpg’
在这里插入图片描述下面着重解决如何解析上一个接口的二维码,通过解析这个二维码获取二维码里我们需要的参数

‘visitQrCodeUrl’: ‘https://xfb-materia-test.obs.cn-south-1.myhuaweicloud.com/dc-openonline-file/ce1fa49f-0ef3-40d6-99bb-7d31e7f702f8.jpg’}

我们通过调用上一个接口提取出这个二维码图片地址,可以看的出此图片地址是云服务器返回来的,我们需要将此图片地址下载到本地方可查看到二维码图片,代理处理如下:

#通过get请求从云服务器下载图片到本地保存
   # 下载二维码到本地
        imgresponse = requests.get("{}".format(add_reserve_info()["data"]["visitQrCodeUrl"]), stream=True)  # 以流的方式打开
        with open(r"C:\Users\28071\Desktop\Desktop\分销二维码图片\1.jpg", "wb") as jpg:
            jpg.write(imgresponse.content)

下载完后可在本地目录查看到此二维码图片的显示,如下图:
在这里插入图片描述
现在我们需要将此二维码图片通过第三方包进行解析获取二维码里的参数:
需要用到以下3个包

from pyzbar.pyzbar import decode
from PIL import Image
from urllib import parse

 # 解析二维码-从本地打开此图片
        img = Image.open(r"C:\Users\28071\Desktop\Desktop\分销二维码图片\1.jpg")
        barcodes = decode(img) #解析第三方包解析二维码
        print(barcodes)#打印解析结果如下:
        #[Decoded(data=b'orgId=181&appId=1001&clueId=6e028157-3dd6-4d92-8a6e-dd15918fbc59&teamId=&productId=&productName=&projectId=3274&firstChannelIdentity=10011&secondChannelIdentity=181&referrerAccountId=100020241&referrerName=\xe9\xab\xaf\xe5\xbe\xa1\xef\xbd\xb8\xe9\xa1\x94\xe8\x84\x82\xe9\x84\x82\xef\xbd\xae\xe8\x8d\xb3\xe5\xa4\x90\xef\xbd\xa1\xef\xbd\xbe\xe9\xab\xa3\xef\xbd\xae&referrerMobile=18811111117&clueAccountId=100037774&name=\xe9\x82\x89\xef\xbd\xbb-\xe8\xb0\xba\xef\xbd\xa7\xe9\xab\xa6\xef\xbd\xb3\xe9\xab\xae\xef\xbd\xaa&gender=1&mobile=13494829720', type='QRCODE', rect=Rect(left=12, top=12, width=276, height=276), polygon=[Point(x=12, y=12), Point(x=12, y=288), Point(x=287, y=287), Point(x=288, y=12)], quality=1, orientation='UP')]

        a = [code.data.decode("utf-8") for code in barcodes][0]
        print(a)#打印如下:
        #orgId=181&appId=1001&clueId=adccf318-ca4f-4cf7-8497-bdf6ee4ff0d5&teamId=&productId=&productName=&projectId=3274&firstChannelIdentity=10011&secondChannelIdentity=181&referrerAccountId=100020241&referrerName=陌上玉置业顾问&referrerMobile=18811111117&clueAccountId=100037787&name=系-刘秀兰&gender=1&mobile=18159815903

        clueId = parse.parse_qs(a).get("clueId")[0] #通过第三方包提取我们想要的值clueid
        print(clueId)#打印结果如下:
        #adccf318-ca4f-4cf7-8497-bdf6ee4ff0d5

拿到我们的clueid 后 我们可以放在下一个接口引用进行签到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值