偶然路过的靓仔-胡阳

为中华之崛起而读书!中国加油! 问题不能及时回答,有需要的话加微信:921308494

   ::  ::  ::  ::  :: 管理
  109 随笔 :: 0 文章 :: 0 评论 :: 33756 阅读
在界面上操作 抓住相关的接口,有点类似于loadrunner的录制

 

安装:

pip install mitmproxy

 

mitmproxy分为三个组件:

mitmproxy 

mitmweb   可视化的web界面

mitmdump  命令行格式,可用于对接python脚本  

 

前置步骤:

1.如果是https,需要安装证书

2.开启代理:127.0.0.1:8080

 

脚本:

#!/usr/bin/env/ python3
# -*- coding:utf-8 -*-
from mitmproxy import http
import mitmproxy
import json
import xlwt


class Proxy:
def __init__(self, filter_url: str='http://192.168.**.***/',filename: str = "./data/case_data1.xls"):
"""
 基于mitmproxy抓包生成用例数据
 :param filter_url: 需要过滤的url
"""
 self.url = filter_url
self.excel_row = [
#'编号',
 '请求方法',
 #'请求类型',
 '请求url',
 '域名',
 '请求路径',
 #'url的键值参数',
 'url外的请求参数get_text',
 '请求头',
 'cookies',
 ]
self.cases = [self.excel_row]
self.counter = 1
 self.file = filename

def request(self,flow:mitmproxy.http.HTTPFlow):
# url 过滤,仅抓取我的地址
 if "http://192.168.**.***/" in flow.request.url:
print('=' * 40)
print('=================要开始记录了==================')
print('=' * 40)

print('请求方法:%s' % (flow.request.method))
#print('请求类型:%s' % (flow.request.scheme))
 print('请求url:%s' % (flow.request.url))
print('域名:%s' % (flow.request.host))
print('请求路径:%s' % (flow.request.path))

# 返回MultiDictView类型的数据,URL的键值参数
 #print('url的键值参数:%s' % (flow.request.query))
#query=str(flow.request.query)

 print('url外的请求参数get_text:%s'%(flow.request.get_text()))
get_text=str(flow.request.get_text())

print('请求头:%s' % (flow.request.headers))
heasers=str(flow.request.headers)

print('cookies:%s' % (flow.request.cookies))
cookies=str(flow.request.cookies)

case1 = [flow.request.method, flow.request.url, flow.request.host, flow.request.path,get_text,heasers,cookies]

print('即将写入:')
print(case1)
self.cases.append(case1)
try:
self.counter += 1
 # 文件末尾追加
 self.excel_cases()
print('=' * 40)
print('=================已记录EXCEl==================')
print('=' * 40)
except:
print('=' * 40)
print('=================记录失败==================')
print('=' * 40)
else:
pass

def excel_cases(self):
"""
 对二维列表cases进行循环并将内容写入单元格中
 :return:
"""
 workbook = xlwt.Workbook('encoding=uft-8')
worksheet = workbook.add_sheet('用例数据')
for x in range(len(self.cases)):
for y in range(len(self.cases[x])):
worksheet.write(x, y, self.cases[x][y])
try:
workbook.save(self.file)
except Exception as e:
print(e)


addons = [
Proxy("http://192.168.**.***")
]

'''cmd控制台 运行语句:mitmdump -s proxytest.py'''

控制台输出示例:

 在界面操作。录制完后,excel数据写入示例:

 

 

 

posted on   偶然路过的靓仔-胡阳  阅读(150)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示