Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Manouchehri/144c74d173d76278c01c6502125d190e to your computer and use it in GitHub Desktop.
Save Manouchehri/144c74d173d76278c01c6502125d190e to your computer and use it in GitHub Desktop.
Writes mitmproxy data in CSV format to a file
import mitmproxy
from datetime import datetime
import math
class RequestsToCSV:
def load(self, loader):
#
# note: update this path to change the data file name and/or location
#
self.file_handle = open("requests-" + datetime.now().isoformat().split(".")[0] + ".csv", "w")
self.file_handle.write("Request,Start Time,EndTime,Request Method,Path,Response Size Raw (bytes),Response Size Uncompressed (bytes),Duration (ms)\n")
self.file_handle.flush()
self.request_count = 0
def done(self):
self.file_handle.close()
def response(self, flow: mitmproxy.http.HTTPFlow):
start_time = datetime.fromtimestamp(flow.request.timestamp_start).isoformat()
end_time = datetime.fromtimestamp(flow.response.timestamp_end).isoformat()
duration = str((flow.response.timestamp_end - flow.request.timestamp_start) * 1000).split(".")[0]
self.request_count += 1
self.file_handle.write(str(self.request_count) + "," + start_time + "," + end_time + "," + flow.request.method + "," + flow.request.path + "," + str(len(flow.response.raw_content)) + "," + str(len(flow.response.content)) + "," + str(duration) + "\n")
self.file_handle.flush()
addons = [
RequestsToCSV()
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment