mitmproxy抓取https请求实践

原创
2018/01/22 19:24
阅读数 1.3K

1. 背景

最近在准备iOS应用强制支持https的特性测试,需要梳理相应的请求,初步策略是选择通过抓包工具进行验证,查看相应的请求链接是否为https, 核对请求返回的状态码及返回数据是否正常。我们常用的抓包工具主要是fiddler和charles, 但是我这边使用charles抓取https遇到个坑,代理证书什么都安装了,SSL Proxy配置也正常,但是抓取的https请求就是返回失败,且数据乱码,如下图:

另外也有试用过anyproxy抓包工具,发现也是同样的情况,但是在同事电脑上是可以正常的,百度了许久,目前还没找到具体原因,有知道原因的,求告知。

2. mitmproxy介绍

官网:https://mitmproxy.org/

Github地址:https://github.com/mitmproxy/mitmproxy

3. mitmproxy安装

网络上提供了三种方式,进行安装

3.1 使用pip的方式安装

 

[html] view plain copy

  1. pip install mitmproxy --ignore-installed six  

 

3.2 使用homebrew的方式安装

 

[html] view plain copy

  1. brew install mitmproxy  

 

3.3 下载release文件,解压安装, 链接地址:https://github.com/mitmproxy/mitmproxy/releases/tag/v1.0.2

4. 抓取https实践

4.1 启动mitmproxy, 可以直接双击mitmproxy文件启动,也可以添加mitmproxy路径到PATH变量中,终端输入mitmproxy命令进行启动。

4.2 配置代理, 端口默认为8080, 也可以按如下进行修改

[html] view plain copy

  1. mitmproxy -b 电脑ip -p 指定端口  

 

4.3 Safari访问mitmproxy.it,  安装mitmproxy证书到手机上,并信任:

4.4 操作手机应用,查看相应的请求,这里以美团为例, 可以看到相应的https请求能够正常的抓取,如图:

5. 常用快捷键

  • 在列表界面,按用j,k或者上下方向键在列表上浏览
  • 在列表界面,按回车进入详情界面
  • 在详情界面,按q,返回列表界面
  • 在详情界面,按tab键或者h,l,在Request,Response,Detail三个tab之间切换。按j,k或者上下方向键可以滚动查看详情
  • 在列表界面,按G跳到最新一个请求
  • 在列表界面,按g跳到第一个请求
  • 在列表界面,按d删除当前选中的请求,按D恢复刚才删除的请求
  • 在列表界面,按z清空请求列表

6.  拦截与修改请求

6.1 请求列表界面,按i进入Intercept Filter模式, 输入相应的关键字,即可拦截相应的请求;按esc可以退出intercept filter模式:

 

6.2 点击相应的请求,进入详情界面,切换到Request tab, 按e进入编辑request请求,e.g. 修改请求参数:

6.3 修改完请求参数后,按a, 执行请求,查看response,发现请求修改成功:

 

 

参考资料:

1. https://mitmproxy.org/doc/mitmproxy.html

2. http://www.tuicool.com/articles/EVV3Qza

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部