异常描述
当浏览器访问http://mitm.it/出现If you can see this, traffic is not passing through mitmproxy. 时证明它没有检测到当前操作经过了mitmproxy。
可能因为以下原因:
1、未启动mitmproxy -> 直接在命令行输入mitmproxy启动代理
2、没有配置系统或浏览器的代理,mitmproxy和fiddler有所区别,不能在不配置代理的情况下完成监听
3、端口冲突。使用mitmproxy -p 端口号启用指定端口的监听
4、可能因为一些杂七杂八的浏览器配置所影响,使用无痕模式试试(本次就出现了这情况,研究半天发现无痕模式和Safari可正常访问)
5、可以装一个SwitchyOmega插件,省事一键使用系统代理或选择自己配置的浏览器代理
安装完代理管理工具后,选择了系统代理127.0.0.1:18888,就正常可以下载证书了。
系统代理设置:

相关链接:
https://ptorch.com/docs/10/mitmproxy-concepts-certificates
https://blog.csdn.net/qq_33581509/article/details/116327225
https://blog.csdn.net/qq_27109535/article/details/125868649
mitmproxy操作实例方法: http.HTTPFlow 实例 flow
flow.request.headers #获取所有头信息,包含Host、User-Agent、Content-type等字段
flow.request.url #完整的请求地址,包含域名及请求参数,但是不包含放在body里面的请求参数
flow.request.pretty_url #同flow.request.url目前没看出什么差别
flow.request.host #域名
flow.request.method #请求方式。POST、GET等
flow.request.scheme #什么请求 ,如https
flow.request.path # 请求的路径,url除域名之外的内容
flow.request.get_text() #请求中body内容,有一些http会把请求参数放在body里面,那么可通过此方法获取,返回字典类型
flow.request.query #返回MultiDictView类型的数据,url直接带的键值参数
flow.request.get_content()#bytes,结果如flow.request.get_text()
flow.request.raw_content #bytes,结果如flow.request.get_content()
flow.request.urlencoded_form #MultiDictView,content-type:application/x-www-form-urlencoded时的请求参数,不包含url直接带的键值参数
flow.request.multipart_form #MultiDictView,content-type:multipart/form-data
时的请求参数,不包含url直接带的键值参数
以上均为获取request信息的一些常用方法,对于response,同理
flow.response.status_code #状态码
flow.response.text#返回内容,已解码
flow.response.content #返回内容,二进制
flow.response.setText()#修改返回内容,不需要转码
浙公网安备 33010602011771号