python使用mitmproxy和mitmdump抓包之拦截和修改包(四)

我认为mitmproxy最强大的地方,就是mitmdump可以结合python代码,灵活拦截和处理数据包。

首先,mitmdump的路径如下:(使用pip3 install mitmproxy安装的情况,参考我的文章python使用mitmproxy和mitmdump抓包在电脑上抓包-CSDN博客)

C:\Users\LC\AppData\Local\Programs\Python\Python310\Scripts

python使用mitmproxy和mitmdump抓包之拦截和修改包(四)_第1张图片

所以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()
]

你可能感兴趣的:(python,开发语言)