首页 > 其他分享 >mitmdump写法示例

mitmdump写法示例

时间:2024-03-01 16:14:31浏览次数:22  
标签:示例 url request self flow mitmdump print cases 写法

在界面上操作 抓住相关的接口,有点类似于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数据写入示例:

 

 

 

标签:示例,url,request,self,flow,mitmdump,print,cases,写法
From: https://www.cnblogs.com/wx921308494/p/18047297

相关文章

  • 策略模式代码示例(二)
    一、定义策略模式,针对每一个不同的类型,调用具有共同接口的不同实现类,从而使得它们可以相互替换。策略模式,针对实现同一接口的不同的类,采用不同的策略。比如,面对高级会员、初级会员会采用不同的折扣。策略模式,可以避免大量的if和else。二、角色策略模式涉及到三个角色:●......
  • SQL server事务写法 sql server的事务
    sqlserver事务全攻略一事务的属性事务具有ACID属性1、原子性   atomic2、一致性   consistent3、隔离性   isolated4、永久性   durable原子性就是事务应作为一个工作单元,事务处理完成,所有的工作要么都在数据库中保存下来,要么完全回滚,全部不保留一致性事......
  • Qt 多线程中使用信号槽的示例
    之前对线程理解得不深入,所以对Qt的线程机制没有搞清楚,今天写一篇文章总结一下,如有错误,欢迎指出。    首先需要理解线程是什么,线程在代码中的表现其实就是一个函数,只不过这个函数和主线程的函数同时运行,写C语言的都知道,一般代码是从main()函数开始运行的,每个线程都有一......
  • xss利用之盗取cookie示例
    实验环境目标网站:宿主机:192.168.10.1访问虚拟机win11:192.168.10.134伪造网站:192.168.10.12:100pikachu步骤一:受害者cookie:步骤二:输入xsspayload'"><script>document.location='http://192.168.10.12:100/pikachu/pkxss/xccokie/cookie.php?cookie='+doc......
  • FastAPI系列 :安装启动及简单示例
    安装pip3installfastapipip3installuvicorn[standard]#是一个ASGI异步服务器网关接口服务器框架pip3installpython-multipart#处理表单参数的#完整安装pipinstallfastapi[all]启动程序#命令行启动uvicornmain:app--reload--host0.0.0.0--port8888......
  • Python scipy.ndimage.find_objects用法及代码示例
    用法scipy.ndimage.find_objects(input,max_label=0)在标记数组中查找对象。参数:input:整数数组包含由不同标签定义的对象的数组。值为0的标签将被忽略。max_label:整数,可选要在输入中搜索的最大标签。如果没有给出max_label,则返回所有对象的位置。object_slices:元组......
  • uni-app的renderjs示例 | app端使用window
    原文:https://juejin.cn/post/6974552469917401125<template><viewstyle="padding-top:200rpx;"><!--这里的:change:msg旨在于监听逻辑层的msg变化,有变化就调用renderjs内容--><!--这里要注意,render。receiveMsg中的render是下面renderjs定义的module名称-->......
  • AIO 简单代码示例
    客户端代码packagetest;importjava.net.InetSocketAddress;importjava.nio.ByteBuffer;importjava.nio.channels.AsynchronousSocketChannel;importjava.nio.channels.CompletionHandler;publicclassAIOClient{privatefinalAsynchronousSocketChannelclie......
  • NIO 交互简单示例
    客户端代码:packagetest;importjava.net.InetSocketAddress;importjava.nio.ByteBuffer;importjava.nio.channels.SocketChannel;publicclassClient{publicstaticvoidmain(String[]args){try(SocketChannelsocketChannel=SocketChannel.open()......
  • day42 动态规划part4 代码随想录算法训练营 46. 携带研究材料- 一维数组写法
    题目:46.携带研究材料我的感悟:一维是二维的压缩理解难点:倒序遍历j因为每轮的数字是由左上决定的。遍历的时候,从右侧遍历,是不会影响左侧的。听课笔记:代码示例:defbag_problem(weight,value,bagWeight):#初始化dp=[0]*(bagWeight+1)fori......