from mitmproxy import http from mitmproxy.tools.main import mitmdump import temp import json class AddHeader: def __init__(self): self.num = 0 self.file = open("./request_headers.txt", "w") # 打开文件对象 def request(self, flow: http.HTTPFlow) -> None: with open('temp.json', 'r') as fff: config = json.load(fff) self.num += 1 # 保存请求头部内容和请求URL到文件 if f"{config['get_url']}" in flow.request.pretty_url: for name, value in flow.request.headers.items(): if f"{config['keyword']}" in name: self.file.write(f"{value}") self.file.flush() # 立即写入文件 # exit(0) def done(self): self.file.close() # 关闭文件对象 addons = [ AddHeader() ] if __name__ == "__main__": # print(config['get_url']) # print(config['keyword']) mitmdump(['-p', '8081', '-s', __file__]) 将写入request_headers.txt修改为写入到一个名为cookie.json的json文件中,把写入的值作为cookie.json中cookie的值,cookie.json如下: { "cookie": "" }
时间: 2024-02-14 22:15:33 浏览: 125
import与export在node.js中的使用详解
这段代码是使用 mitmproxy 中的 AddHeader 插件来获取 HTTP 请求的特定头部信息,并将其写入文件中。你的问题是将这个插件修改,不再将信息写入文件,而是将它们写入一个名为 cookie.json 的 JSON 文件中,并将其作为 cookie 的值。你需要将 AddHeader 插件修改为以下内容:
```python
import json
from mitmproxy import http
class AddCookie:
def __init__(self):
with open('cookie.json', 'r+') as f:
try:
self.cookies = json.load(f)
except json.JSONDecodeError:
self.cookies = {}
f.seek(0)
f.write(json.dumps(self.cookies))
f.truncate()
def request(self, flow: http.HTTPFlow):
if 'cookie' in self.cookies:
flow.request.headers['Cookie'] = self.cookies['cookie']
def response(self, flow: http.HTTPFlow):
if 'set-cookie' in flow.response.headers:
self.cookies['cookie'] = flow.response.headers['set-cookie']
with open('cookie.json', 'w') as f:
json.dump(self.cookies, f)
```
这个插件的作用是将请求中的 cookie 设置为 cookie.json 文件中的值,并将响应中的 set-cookie 头部中的 cookie 值更新为 cookie.json 文件中的值。请注意,这个插件需要在 mitmproxy 中以 AddCookie 插件名运行。你可以使用以下命令来运行它:
```
mitmdump -s your_script.py -s AddCookie
```
阅读全文