zoukankan      html  css  js  c++  java
  • 抓包工具之MitmProxy

    抓包工具之MitmProxy

    前言

    ​ 作为一名app后端程序员,经常需要对app抓包。说起抓包工具,一般用的是Charles或Fiddler,这两个非常著名的工具。但有些情况下这两个工具并不能满足需求。

    ​ 场景一:产品或者运营反馈问题时一般都是截图给开发,然后开发去复现、抓包、解决问题。很多时候开发希望产品或者运营能够直接给出抓包链接便于分析,但是很显然叫产品或运营去配置这些工具显然很麻烦,实际情况是写了文档照着配依然可能会出错。

    ​ 场景二:如果要对抓包的返回结果做进一步的批量处理,此时用Charles或者Fiddler就显得不太方便了。例如之前很火的冲顶大会,在抓包到请求后能看到答题的题目,此时需要编写程序去百度搜索答案,给出结果。

    ​ MitmProxy是一个能够在服务器上24小时运行的Linux端抓包工具,支持Python对抓包结果进行处理,可以对特定的网址过滤,支持HTTPS抓包,MitmProxy的抓包结果还能转换为Charles能打开的文件,便于进一步分析。

    安装

    MitmProxy安装需要python环境,至少是3.5版本的python.一般CentOS自带的python版本都是2.7,快速安装python3环境只需要如下几行命令即可:

    CentOS6用户:
    sudo yum install -y https://centos6.iuscommunity.org/ius-release.rpm
    sudo yum install -y python35u python35u-pip
    
    CentOS7用户:
    sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm
    sudo yum install -y python35u python35u-pip
    

    之后就是安装MitmProxy,MitmProxy安装时最好指定版本,不同的版本虽然基本功能是一样的,但是一些脚本的使用还是有不同,推荐安装稳定版本。

    pip3.5 install mitmproxy==3.0.3
    

    使用

    • 启动mitmproxy
      mitmproxy 默认代理端口是8080,可以使用 -p 命令指定一个端口并启动

      $ mitmproxy -p 8090
      
    • 配置浏览器和手机

    1. 和手机连接到同一个wifi环境下
    2. 修改浏览器代理服务器地址为运行mitmproxy的那台机器(本机)ip地址,端口设定为你启动 mitmproxy时设定的端口,如果没有指定就使用8080。
    3. 手机做同样操作,修改wifi链接代理为 【手动】,然后指定ip地址和端口

    ​ 以手机配置为例:

    • 安装CA证书(https抓包用)
      在手机或pc机上打开浏览器访问 mitm.it 这个地址,选择你当前平台的图标,点击安装证书。

      操作

    按键 说明
    q 退出(相当于返回键,可一级一级返回)
    d 删除当前(黄色箭头)指向的链接
    D 恢复刚才删除的请求
    G 跳到最新一个请求
    g 跳到第一个请求
    C 清空控制台(C是大写)
    i 可输入需要拦截的文件或者域名(逗号需要用来做转译,栗子:feezu.cn)
    a 放行请求
    A 放行所有请求
    ? 查看界面帮助信息
    ^ v 上下箭头移动光标
    enter 查看光标所在列的内容
    tab 分别查看 Request 和 Response 的详细信息
    / 搜索body里的内容
    esc 退出编辑
    e 进入编辑模式

    抓包截图:

    其他

    Mitmproxy支持编写Python脚本对结果进行处理,具体的脚本可以参考github上的官方脚本。

    https://github.com/mitmproxy/mitmproxy/tree/master/examples

    har_dump.py这个脚本为例,他的作用是将mitmproxy的抓包结果导出到har文件,以便于Charles能分析,运行以下命令即可一边抓包,一边导出文件:

    mitmdump -s examples/complex/har_dump.py -w dump.mitm --set hardump=dump.har
    

    更多的用法请参考官方脚本,值得一提的是官方脚本与MitmProxy版本强相关,如果不成功,不妨换个版本试试。

    参考链接

    https://mitmproxy.org

    https://docs.mitmproxy.org/archive/v3

    https://github.com/mitmproxy/mitmproxy/tree/master/examples

    https://www.jianshu.com/p/0cc558a8d6a2

    https://stackoverflow.com/questions/8087184/installing-python-3-on-rhel

    镜像地址

    http://www.zhangwei.wiki/#/posts/7

    pay

  • 相关阅读:
    Premiere&After Effects的实时预览插件开发
    Mac OS平台下应用程序安装包制作工具Packages的使用介绍(补充)
    kattle 发送post请求
    mybatis 动态sql表达式相关应用
    Echarts 之三 —— 地市联动数据统计二
    Echarts 之二——地市联动数据统计
    java 版本EChart使用
    dragsort html拖拽排序
    html iframe 元素之间的调用
    ORACLE lag()与lead() 函数
  • 原文地址:https://www.cnblogs.com/coderzhw/p/11094322.html
Copyright © 2011-2022 走看看