python接口自动化12-流量回放神器:mitmproxy(下)

一、mitmproxy做扩展

比如接口用例信息收集,回放对比,安全测试都可以那么便可以通过:mitmdump -s xx.py

扩展可查阅中文文档:https://ptorch.com/docs/10/addons-overview

1、有需求将某些请求域名包含的,写入文档方便回放,或者入库等。

import time
import json


def dumps(txt, beaut=0):
    """ json序列化:dict -> json """
    try:
        if beaut:
            txt = json.dumps(txt, sort_keys=True, indent=4, ensure_ascii=False)
        else:
            txt = json.dumps(txt, ensure_ascii=False)
    except:
        txt = txt
    return txt


def loads(txt):
    """ json反序列化:json -> dict """
    try:
        txt = json.loads(txt, encoding='UTF-8')
    except:
        txt = txt
    return txt


def response(flow):
    # 加上过滤条件
    if flow.request.host in ['192.168.1.1']:
        request_data, headers = {}, {}
        # 请求信息组装
        request_data['method'] = flow.request.method
        request_data['url'] = flow.request.pretty_url
        # headers
        for key, value in flow.request.headers.items():
            headers[key] = value
        request_data['headers'] = headers
        # body
        is_body = loads(flow.request.content.decode('utf-8'))
        if is_body:
            if isinstance(is_body, dict):
                body = {'json': is_body}
            else:
                body = {'data': is_body}
            request_data.update(body)
        request_data['response'] = loads(flow.response.content.decode('utf-8'))
        # 写入文件
        file = f'mitm-{time.strftime("%Y-%m-%d", time.localtime())}.txt'
        with open(file, 'a+', encoding='utf-8')as f:
            f.write(dumps(request_data) + '\n')

2、指定的域名将请求与响应信息抓取下来保存为文件,再做进一步处理或API测试,美哉!

平时功能测试时开好代理,将API请求信息抓取到。

流量回放替代人工写了一部分用例,或者做冒烟测试时可以直接使用只请求GET类型,这样不用担心参数化关联或参数无效情况。

结束

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

姚二龙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值