我认为mitmproxy最强大的地方,就是mitmdump可以结合python代码,灵活拦截和处理数据包。
首先,mitmdump的路径如下:(使用pip3 install mitmproxy安装的情况,参考我的文章python使用mitmproxy和mitmdump抓包在电脑上抓包-CSDN博客)
C:\Users\LC\AppData\Local\Programs\Python\Python310\Scripts
所以mitmdump -s xxx.py时,需要将xxx.py放入这个目录中,或者给出xxx.py的全路径。
首先cmd进入路径C:\Users\LC\AppData\Local\Programs\Python\Python310\Scripts,xxx.py也在这个目录中。运行mitmdump -s xxx.py即可,默认监控端口是8080。
补充记录:关于运行路径的问题,上面这段写的时候有点迷糊,其实不合理。因为mitmdump已经加入环境变量,cmd下在哪个目录下都可以运行,只需要关注xxx.py的路径即可,于是,cmd里cd到xxx.py的路径后,运行mitmdump -s xxx.py就行。
本篇使用访问百度来测试,打开一个使用127.0.0.1:8080代理的浏览器,打开百度,输入搜索内容。
一、拦截并修改请求
import mitmproxy
class Demo:
def request(self,flow:mitmproxy.http.HTTPFlow):
request=flow.request
#https://www.baidu.com/s?ie=utf-8
if 'https://www.baidu.com/s?ie=utf-8' in request.url:
print('我输入的搜索关键词:',request.query.get('wd'))
request.query.set_all('wd',['华为Mate60'])
print('修改后的搜索关键词:',request.query.get('wd'))
addons=[
Demo()
]
二、拦截并修改响应
import mitmproxy
class Demo:
def response(self,flow:mitmproxy.http.HTTPFlow):
response=flow.response
if flow.request.host== 'www.baidu.com':
text='数据已经被mitmdump拦截了'
response.set_text(text=text)
addons=[
Demo()
]