mitmproxy的介绍以及配置过程中的问题

提示:以下是本篇文章正文内容,下面案例可供参考

一、mitmproxy是什么?

mitmproxy是一个抓包工具,类似于WireShark、Filddler,并且它支持抓取HTTP和HTTPS协议的数据包,只不过它是一个控制台的形式操作。另外,它还有两个非常有用的组件,一个mitmdump,它是mitmproxy的命令行接口,利用它可以对接python脚本;另一个是mitmweb,它是一个web程序,通过它可以清楚的观察mitmproxy捕获的数据情况,优点类似于Chrome浏览器。

二、准备工作

请确保已经正确安装好了mitmproxy,并且手机和PC处于同一个局域网下,同时配置好了mitmproxy的CA证书。

2.1 安装

1、linux 安装mitmproxy

pip3 install mitmproxy

2、windows下安装mitmproxy

下载地址:https://mitmproxy.org/

添加国内源可以提高下载速度

pip install mitmproxy -i https://pypi.tuna.tsinghua.edu.cn/simple

此时,可以在微软官网直接下载 c++ 库之类的软件,然后再在命令行进行安装 mitmproxy即可。也可以在网上搜索MicrosoftVCTools2017,进行下载。
下载地址:https://visualstudio.microsoft.com/zh-hans/downloads

三、mitmproxy的功能

mitmproxy有如下几项功能。

  1. 拦截HTTP和HTTPS请求和响应。 -
  2. 保存HTTP会话并进行分析。
  3. 模拟客户端发起请求,模拟服务端返回响应。
  4. 支持Mac和Linux上的透明代理。
  5. 利用Python对HTTP请求和响应进行实时处理。

四、抓包原理

和Charles一样,mitmproxy运行于自己的PC上,mitmproxy会在PC的8080端口运行,然后开启一个代理服务,这个服务实际上是一个HTTP/HTTPS的代理。

手机和PC在同一个局域网内,设置代理为mitmproxy的代理地址,这样手机在访问互联网的时候流量数据包就会流经mitmproxy,mitmproxy再去转发这些数据包到真实的服务器,服务器返回数据包时再由mitmproxy转发回手机,这样mitmproxy就相当于起了中间人的作用,抓取到所有Request和Response,另外这个过程还可以对接mitmdump,抓取到的Request和Response的具体内容都可以直接用Python来处理,比如得到Response之后我们可以直接进行解析,然后存入数据库,这样就完成了数据的解析和存储过程。

五、mitmproxy证书配置

mitmproxy和Charles软件一样,需要进行证书配置,为什么要进行证书配置?由于我们要抓取的大部分App页面都采用了HTTPS,也就是经过加密,若没有证书,就无法识别抓取的数据。另外,需要注意的是,mitmproxy与Charles软件一样需要在PC和手机端安装证书。

5.1 电脑端证书配置

  1. 首先cmd运行一下以下命令,以便在windows系统中产生CA证书

    mitmdump
    
  2. 接着在.mitmproxy目录找到CA证书,如下图所示:

3、双击mitmproxy-ca.p12进入导入证书的页面,点击“下一步”

4、不用输入密码,直接“下一步”

5、选择“将所有的证书都放入下列存储”,接着选择“受信任的根证书颁发机构”

6、最后,弹出警告窗口,直接点击“是”

5.2 手机端代理配置

1、接着在手机(IOS)上配置证书,先将mitmproxy-ca-cert.pem文件发送至iphone,推荐用邮箱方式,接着在iphone上可以把直接点击附件并安装。最后在手机(ios)“设置”、“通用”、“描述文件与设备管理”,找到“证书信任设置”,信任即可。

2、设置手机端代理

可以在pc(windows)中用cmd命令行,输入命令ipconfig,查看电脑ip,这里ip地址是192.168.31.43

接着在手机上设置代理,其实就是将pc电脑的ip192.168.31.43:8080,设置成代理即可。

配置代理,改为手动

六、命令行交互

1、mitmdump的启动

mitmdump

2、mitmdump指定端口的启动

mitmdump -p 8889

3、指定python脚本

mitmdump -p 8889 -s test.py

4、保存截获数据

mitmdump -w  test.txt

5、常用接口

#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()#修改返回内容,不需要转码

六、遇到的报错总结
1、mitmproxy–Cannot establish TLS with client (sni: e.crashlytics.com): TlsException(“(-1, ‘Unexpected EOF’)”,) 解决办法

正确安装电脑端和手机端证书

2、win10 使用mitmdump 报错 cannot import name ‘soft_unicode‘ from ‘markupsafe‘

运行mitmdump报错

可能是Jinja2版本的问题

1、在命令行输入pip list,查看Jinja2版本

2、卸载这个包:

pip uninstall Jinja2

3、到 https://www.lfd.uci.edu/~gohlke/pythonlibs/#jinja2

找到Jinja2,选择其他版本安装,使用3.0.3正常了,

4、下载.whl文件之后,执行命令

pip install xxx.whl

成功了

mitmproxy的介绍以及配置过程中的问题相关推荐

  1. 标题:关于high-speed Charting Control配置过程中一些问题(ChartCtrl新手向)vs2019+win10-2020.12.11

    标题:关于high-speed Charting Control配置过程中一些问题(ChartCtrl新手向)vs2019+win10 最近要搞一个MFC画折线图的程序,网上看到一个人人推荐的插件,还 ...

  2. ESXi与物理交换机静态链路聚合配置过程中的小陷阱

    作者:陆斌 文章来自微信公众号:平台人生 内容简介:ESXi与物理交换机之间配置静态链路聚合时,因为静态链路聚合的特点,在进行down网卡和从虚拟交换机移除网卡的操作时,可能会无法完成故障流量切换,影 ...

  3. linux 内核配置过程中遇到的问题

    大家都知道在修改内核需要两步 配置和编译 在配置过程中 用到的命令 make config.make menuconfig.make xconfig 前两个是文本界面 最后一个是图形界面 不建议用最后 ...

  4. opc客户端读取数据品质是bad_OPC DCOM配置过程中常见问题及其处理_济南达索机电科技有限公司...

    OPC技术提供了一种互联.可靠.安全的通信平台.然而,OPC技术依赖于DCOM架构,包括Windows安全和防火墙设置.访问控制列表.Server认证等.本文给出了OPC  DCOM配置过程中最常发生 ...

  5. Maven配置过程中出现:“‘dependencies.dependency.systemPath‘ for junit:junit:jar must be omitted...”的错误

    项目场景: 在maven的配置过程中,发现在尝试下载依赖的时候,出现了些许bug. 问题描述 采用的是直接手动导入的方法.配置好阿里云镜像仓库后(该步没有出现问题),先把junit依赖下载放到&quo ...

  6. DG配置过程中的参数解释

    文章目录 DG配置过程中的参数解释: 1.DB_NAME 2.DB_UNIQUE_NAME 3.LOG_ARCHIVE_CONFIG 4.CONTROL_FILES 5.LOG_ARCHIVE_DES ...

  7. tracker_benchmark_v1.0配置过程中出现的问题及解决方案

    毕业设计是CV方向的,一直在调试tracker_benchmark_v1.0的代码,遇到了很多的问题,本篇博客记录我遇到的问题和解决的办法,也许还有错误的地方,欢迎大家一起讨论研究~ 一.介绍和注意事 ...

  8. Cordova安装与配置过程中出现的问题及解决办法

    最近在学习jQuery Mobile,在配置环境的过程中,遇到了一些问题,看百度这方面的资料挺少的,就自己总结一下了 1,在安装Cordova CLI过程中,提示出错,基本上是网速的问题,多安装几遍就 ...

  9. 拯救者Y9000P 安装Ubuntu18.04 、Ros Melodic等相关配置过程中出现的错误及解决办法

    电脑配置:拯救者Y9000P 2022 i9 3060 目录 一.安装Ubuntu18.04 1.安装UltralSO时无法写入镜像文件,显示磁盘/映像空间太小 2.由于2022拯救者Y9000PBI ...

  10. N2N的配置过程中遇到的一些坑

    N2N作为一个开源的VPN工具,使用极其简单,但用的时候还是会出现不少问题,以下将我在配置的过程中遇到的问题,总结一下.. 首先我的系统是Win10专业版系统.. 首先edge和super的版本必须一 ...

最新文章

  1. rejection from MPhil in Technology policy at cambridge
  2. OSPF地址汇总配置
  3. java高并发的经验
  4. 漫谈ASP.NET设计中的性能优化问题
  5. 计算机视觉基础概念、运行原理和应用案例详解
  6. 万字长文!用文本挖掘深度剖析54万首诗歌
  7. 安徽自招计算机基础考试试题,点划自招|东南大学、中国药大2017年自主招生考情揭秘,附真题。...
  8. 汽车电子行业入门指南「主要国内新能源车销量」
  9. 【推荐】泰坦尼克号乘客生存分析——用机器学习告诉你,如果你在当时的船上,有多大机率生还?
  10. php 服务端埋点,客户端埋点方案总结
  11. NB-IoT物联网技术
  12. vscode中打开浏览器的快捷键_VSCode设置默认打开的浏览器的方法
  13. HDu--我要拿走你的蜡烛
  14. Android属性ems
  15. java毕业生设计车辆调度管理系统计算机源码+系统+mysql+调试部署+lw
  16. ios逆向,tweak简洁使用教程
  17. 使用Packer 在 VMware vSphere 上构建 Redhat/CentOS 虚拟机
  18. 国企程序员是真舒服啊,每天上班5小时,2万一月摸鱼不要太快乐
  19. 硬盘服务器100t多少钱,100t硬盘数据库服务器
  20. vnc viewer中文版,3步下载vnc viewer中文版

热门文章

  1. 房东要涨800房租,我用Python抓取帝都几万套房源信息,主动涨了1000。
  2. makefile if 使用
  3. EBS 12.1.3 应用打补丁操作及问题处理
  4. 网络安全等级保护的过程
  5. java 读取gzip_Java读取GZIP
  6. vc2005和IE冲突 主要是在通过向导添加方法或变量的时候会报脚本错误。
  7. android面试题之二(红黑联盟)
  8. 极速还原 V4.0 简体中文绿色免费版
  9. Java银行账户管理子系统
  10. python实现单机斗地主_用Python破解斗地主残局