• mitmproxy 学习笔记(一)之安装


     一、背景

           mitmproxy 可以当作抓包工具也可以当作是代理,其具体能力如下:

    (1) 支持SSL/TLS的HTTP/1、HTTP/2、WebSockets 请求拦截 ;

    (2) 对拦截的 HTTP 请求支持修改(使用python脚本接入 mitmproxy API);

    (3) 保存 HTTP 对话以供以后重播和分析;

    (4)  重播  HTTP 客户端和服务器

    二、知识

          官网(https://www.mitmproxy.org)提供的包,包含3个工具:

    1、mitmproxy

        提供一个交互式的界面,可以看到拦截的请求等,在交互式界面中可以输入各种 command 进行操作;

    2、mitmweb

         提供一个 web 的界面,可以看到拦截的请求等,在界面上可以对拦截的请求进行数据分析;

    3、mitmdump

         提供一个命令行的界面进行操作,类似于 tcpdump for HTTP;

    三、安装

    1、下载  (https://mitmproxy.org/)

     这里点击 "More Downloads",可以看到更多版本,本次案例中 下载 mitmproxy-5.3.0-linux.tar.gz。

    2、安装

     mitmproxy-5.3.0-linux.tar.gz 压缩包中的目录结构:

     可以看到其中含有 3 个工具文件。

    mkdir mitmproxy

    tar -zxvf mitmproxy-5.3.0-linux.tar.gz -C mitmproxy

    # mitmproxy 获取

    version_info=`${curr_dir}/../tool/mitmproxy/mitmproxy --version |grep Mitmproxy`
    if [ ! -n "$version_info" ] # install fail maybe lack of some library
    then
    echo -e "`date +%F %T` ERROR: install mitmproxy fail" 
    exit 1
    else
    echo -e "`date +%F %T` INFO: install mitmproxy successfully" 
    fi

    其中 : mitmproxy --version |grep Mitmproxy  是为了校验 mitmproxy 在服务器环境中能否正确执行。

    正确执行结果:

     由于 mitmproxy 使用 python 开发,其不支持跨平台,环境中必须安装支持 python 成功运行的相关软件,所以通过该命令,可以校验环境是否OK。

    若环境不 OK,执行该命令的时候会报错,具体可以看 第四章节的 (1) 小点。

    3、效果

    (1) mitmproxy

    ./mitmproxy  -p 8040

    说明: -p  可以指定 mitmproxy 运行端口,默认是 8001

    开启另一个控制台界面,输入:curl --proxy x.x.x.x:8040 http://x.x.x.x:8068/v1/catalog/services   (其中 x.x.x.x  为 安装 mitmproxy 软件的服务器)

     从上图中可以看到 mitmproxy 已经拦截到了请求

    (2) mitmdump

    启动命令:

    ./mitmdump -p 8040

    开启另一个控制台界面,输入:curl --proxy x.x.x.x:8040 http://x.x.x.x:8068/v1/catalog/services   (其中 x.x.x.x  为 安装 mitmproxy 软件的服务器)

     上图说明 mitmdump 拦截到了请求

    (3) mitmweb

    启动命令

    ./mitmweb -p 8040

     开启另一个控制台界面,输入:curl --proxy x.x.x.x:8040 http://x.x.x.x:8068/v1/catalog/services   (其中 x.x.x.x  为 安装 mitmproxy 软件的服务器)

     从上图可以看出:

    http://127.0.0.1:8001  是 web 访问的地址。目前遇到的问题,由于安装 mitmproxy 的 服务器是 无界面的 linux 虚拟机,因此在windows 服务上直接使用 http://x.x.x.x:8081 访问未成功,但是在 虚拟机上通过图中的IP是可以访问成功的。

     四、遇到的问题

    (1) 环境中没有 GLIBC_2.18

     解决办法:

    安装 GLIBC_2.18

    a) 下载

        http://mirror.hust.edu.cn/gnu/glibc/   

    b) 安装

     

    #解压压缩包

    tar -zxvf glibc-2.18.tar.gz

    #切换到 glibc目录

    cd glibc-2.18

    #创建 build 目录,用于存储编译后的文件,这里判断若存在 build 目录,则 先删后新建
    build_dir=$(pwd)/build
    if [ -d "$build_dir" ]
    then
    rm -rf $build_dir
    fi
    echo "start to buid glibc-2.18,please wait..."
    mkdir build && cd build/

    #编译
    ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin >> ${gclib_log_file} 2>&1
    echo "start to make glibc-2.18,please wait..."
    make >> ${gclib_log_file} 2>&1
    echo "start to install glibc-2.18,please wait..."

    # 安装
    make install >> ${gclib_log_file} 2>&1

    # 检查 glibc 是否安装成功
    installed_glibc=`strings /lib64/libc.so.6|grep GLIBC_2.18`
    if [ ! -n "$installed_glibc" ]
    then
    echo -e "`date +%F %T` ERROR: install glibc_2.18 fail" > ${gclib_log_file} 2>&1
    exit 1
    else
    echo -e "`date +%F %T` INFO: install glibc_2.18 successfully" > ${gclib_log_file} 2>&1
    fi

     c) 查看系统中 gclib 的安装情况

    第一种方式:

    ll /lib64/ |grep libc

    结果如下:

    第二种方式:

    strings /lib64/libc.so.6 |grep GLIBC_

     上图展示了已安装的 GCLIB 各种版本

  • 相关阅读:
    python socket实现文件传输(防粘包)
    python爬虫之路——模拟登陆简单使用post方法和cookie和selenium
    python爬虫之路——使用逆行工程抓取异步加载网页数据
    python爬虫之路——多进程爬虫和单进程爬虫的简单对比
    python爬虫之路——初识数据库存储
    python爬虫之路——初识lxml库和xpath语法
    爬取一本小说全文
    python爬虫之路——Python的re模块及其方法
    python爬虫之路——正则表达式初识
    案例-爬去南京地区短租房信息
  • 原文地址:https://www.cnblogs.com/sandyflower/p/14038463.html
Copyright © 2020-2023  润新知