Mitmproxy 拦截、mock移动设备网络请求

Mitmproxy 拦截、mock移动设备网络请求

本文主要介绍使用mitmproxy拦截、mock移动设备网络请求,讲解的硬件环境是mac + Android手机,其中的部分方法Linux、Windows平台和IOS同样适用。

  • 背景
  • Mac上安装、启动mitmproxy
  • 手机端配置,开始拦截
  • mitmweb操作页面如何使用
  • mitmproxy拦截Debug版APP的Https请求
  • 结语

背景

拦截http proxy的软件很多,如 Fiddler,Charles等,能够实现对http通信的拦截,可以查验Request和Response参数,特别是移动设备快速普及,此类软件逐渐被用于移动设备APP的网络请求拦截。
为什么要拦截APP的网络请求呢?查看Request和Response又有何用呢?抛开干坏事不说,主要有两点:1、测试开发人员通常需要查看Request和Response内的信息是否正确,更重要的是随意改变Response内部数据,mock极端数据,达到测试软件的目的;2、查看相似APP的网络请求方式和数据组织方式(心照不宣)…………
为什么介绍mitmproxy,当然是因为它更好!刚才说的是http请求,https请求怎么办?最少Charles不灵了,咱们需要mitmproxy,新版的mitmproxy界面友好,操作简便,能够拦截https请求,并且可以mock数据!

一、Mac上安装、启动mitmproxy

1、Python环境配置 具体安装步骤可参照Mac上安装python环境

(1)安装Python 2.7.*,可以下载安装,也可以使用

       brew install python

(2)安装pip

       easy_install pip

(3)安装virtualenv

        pip install virtualenv

(4)更新brew

        brew update

2、clone 最新的mitmproxy

git clone ssh://[email protected]/qa/architect-mitmproxy.git

3、启动mitmproxy

(1)进入操作目录

    cd architect-mitmproxy
    cd mitmproxy

(2)启动mitmproxy

   $ xcode-select --install
   $ ./dev
   $ source ../ven.mitmproxy/bin/activate
   $ python setup.py install
   $ ./mitmweb (启动mitmweb)

(3)最后在chrome打开 http://localhost:8081/

(4)第二次启动时,如果直接使用 ./mitmweb 命令失败,可以先执行一下source ../ven.mitmproxy/bin/activate,再执行./mitmweb。

(5)若端口8080被占用,可通过运行mitmweb –port “任一可用端口”更改,更改为你想用的端口

二、手机端配置,开始拦截

  点击手机中得设置
  设置代理
  IP为mac电脑本机IP
  (注意:可以使用ifconfig查看本机IP,如果是浮动IP,IP可能过一段时间会改变,需要重新设置!)
  端口为8080

三、mitmweb操作页面如何使用

1、清空请求

 点击“mitmproxy”,点击“new”,可将所有的请求清空

Mitmproxy 拦截、mock移动设备网络请求_第1张图片

2、mock Request和Response

(1)筛选mock链接

首先在intercept输入框内输入需要mock的链接,部分链接也可以,只要能过滤到。

Mitmproxy 拦截、mock移动设备网络请求_第2张图片

(2)拦截请求

在下一次网络请求时会显示已经拦截到了链接,拦截过程有两个暂停,第一次暂停,可以修改Request,如下图所示

Mitmproxy 拦截、mock移动设备网络请求_第3张图片

     第二次暂停可以修改Response数据。

Mitmproxy 拦截、mock移动设备网络请求_第4张图片

(3)当你清空Intercept内字符串后,就不会再拦截了

四、mitmproxy拦截Https请求

如今很多APP都开始使用Https请求,以确保数据安全,按照以上设计可以拦截Release版APP的https请求,但是Debug版APP的Https请求需要在手机设备上安装mitmproxy的https认证证书。(这个是针对自己开发APP总结的经验,对其他APP不一定适用)
在你的移动设备上打开 http://mitm.it/链接,下载相应证书,然后安装。
Android 手机可以在“设置/安全/从SD卡安装证书”中安装刚才下载的证书。重新链接代理无线网络即可。

结语

mitmproxy是一个非常好的开发辅助工具,帮助开发测试人员很方便的查看网络链接、mock数据,当然,如果你能够自己开发一套自己的mock工具也很好!工具好坏取决于使用者的目的,如果目的不正,即使再好的工具也是负能量,希望大家不要将这么好的工具用在破坏上面。
最后APP开发者一定要注意自己的数据保密性,https也不是万能的,最根本的还是对自己的传输数据进行加密,对于关键数据,特别是支付数据,要做到加密,否则会轻易被他人拦截破解。

你可能感兴趣的:(Mitmproxy 拦截、mock移动设备网络请求)