-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript_json.py
More file actions
59 lines (46 loc) · 1.87 KB
/
Copy pathscript_json.py
File metadata and controls
59 lines (46 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import mitmproxy
import urllib.parse
import json
data_table1 = []
def response(flow: mitmproxy.http.HTTPFlow):
# 获取请求的域名、路径和查询参数
method = flow.request.method
domain = flow.request.host
path = flow.request.path
query_params = flow.request.query
# 获取请求的 cookies
cookies = flow.request.cookies
content_type = flow.request.headers.get("Content-Type")
# 去除路径中'?'符号以后的内容
if '?' in path:
path = path.split('?')[0]
# 将 cookies 添加到 params 列表中
params = []
for key, value in query_params.items():
params.append({'key': key, 'value': value})
for key, value in cookies.items():
params.append({'key': f'{key}', 'value': f'{value}'})
if method == "POST":
if content_type == "application/json":
data = flow.request.content.decode('utf-8')
data = json.loads(data)
for key, value in data.items():
params.append({'key': f'{key}', 'value': f'{value}'})
elif content_type == "application/x-www-form-urlencoded":
data = flow.request.content.decode('utf-8', errors='ignore')
data = urllib.parse.parse_qs(data)
for key, values in data.items():
for value in values:
params.append({'key': f'{key}', 'value': f'{value}'})
# 更新数据,按路径,参数去重
for entry in data_table1:
if entry['Path'] == path and entry['Params'] == params:
# break掉
break
else:
# 如果路径不存在,创建新的记录
data_table1.append({'Domain': domain, 'Path': path, 'Params': params})
# 最后,保存数据为JSON文件
def done():
with open('result.json', 'w', encoding='utf-8') as file1:
json.dump(data_table1, file1, ensure_ascii=False, indent=4)