zoukankan      html  css  js  c++  java
  • 实战|手把手教你如何使用抓包神器MitmProxy

    大家好,我是阿辰,今天教大家如何使用MitmProxy抓包工具。

    玩爬虫的小伙伴都知道,抓包工具除了MitmProxy外,还有Fiddler、Charles以及浏览器netwrok等

    既然都有这么多抓包工具了,为什么还要会用MitmProxy呢??今天教大家使用MitmProxy抓包工具的原因,主要有以下几点:

    1. 不需要安装软件,直接在线(浏览器)进行抓包(包括手机端和PC端)

    2. 配合Python脚本抓包改包(下面会有案例)

    3. 抓包过程的所有数据包都可以自动保留到txt里面,方便过滤分析

    4. 使用相对简单,易上手。

    1

    配置MitmProxy

    MitmProxy可以说是客户端,也可以说是一共python库

    方式一:客户端

    https://mitmproxy.org/downloads/
    

    在这个地址下可以下载对应的客户端安装即可

    方式二:Python库

    pip install mitmproxy
    

    通过这个pip命令可以下载好MitmProxy,下面将会以Python库的使用方式给大家讲解如何使用(推荐方式二)

    2

    启动MitmProxy

    MitmProxy启动有三个命令(三种模式)

    1. mitmproxy,提供命令行界面

    2. mitmdump,提供一个简单的终端输出(还可以配合Python抓包改包)

    3. mitmweb,提供在线浏览器抓包界面

    mitmdump启动

    mitmdump -w d://lyc.txt
    

    这样就启动mitmdump,接着在本地设置代理Ip是本机IP,端口8080

    安装证书

    访问下面这个链接

    http://mitm.it/
    

    可以选择自己的设备(window,或者Android、Apple设备去)安装证书。

    然后随便打开一个网页,比如百度

    这里是因为证书问题,提示访问百度提示https证书不安全,那么下面开始解决这个问题,因此就引出了下面的这种启动方式

    浏览器代理式启动

    哪一个浏览器都可以,下面以Chrome浏览器为例(其他浏览器操作一样)

    先找到chrome浏览器位置,我的chrome浏览器位置如下图

    通过下面命令启动

    "C:UsersAdministratorAppDataLocalGoogleChromeApplicationchrome.exe" --proxy-server=127.0.0.1:8080 --ignore-certificate-errors
    

    --proxy-server是设置代理和端口

    --ignore-certificate-errors是忽略证书

    然后会弹出来Chrome浏览器,接着我们搜索知乎

    在cmd中就可以看到数据包

    这些文本数据可以在编程中进行相应的操作,比如可以放到python中进行过来监听处理。

    3

    启动Mitmweb

    新开一个cmd(终端)窗口,输入下来命令启动mitmweb

    mitmweb
    

    之后会在浏览器自动打开一个网页(其实手动打开也可以,地址就是:http://127.0.0.1:8081)

    现在页面中什么也没有,那下面我们在刷新一个知乎页面

    重点:关闭mitmproxy终端!关闭mitmproxy终端!关闭mitmproxy终端!

    如果不改变在mitmweb中获取不到数据,数据只在mitmproxy中,因此需要关闭mitmproxy这个命令终端

    刷新知乎页面之后如下:

    在刚刚的网页版抓包页面就可以看到数据包了

    并且还包括https类型,比如查看其中一个数据包,找到数据是对应的,说明抓包成功。

    4

    配合Python脚本

    mitmproxy代理(抓包)工具最强大之处在于对python脚步的支持(可以在python代码中直接处理数据包)

    下面开始演示,先新建一个py文件(lyc.py)

    from mitmproxy import ctx
    
    
    # 所有发出的请求数据包都会被这个方法所处理
    # 所谓的处理,我们这里只是打印一下一些项;当然可以修改这些项的值直接给这些项赋值即可
    def request(flow):
        # 获取请求对象
        request = flow.request
        # 实例化输出类
        info = ctx.log.info
        # 打印请求的url
        info(request.url)
        # 打印请求方法
        info(request.method)
        # 打印host头
        info(request.host)
        # 打印请求端口
        info(str(request.port))
        # 打印所有请求头部
        info(str(request.headers))
        # 打印cookie头
        info(str(request.cookies))
    # 所有服务器响应的数据包都会被这个方法处理
    # 所谓的处理,我们这里只是打印一下一些项
    def response(flow):
        # 获取响应对象
        response = flow.response
        # 实例化输出类
        info = ctx.log.info
        # 打印响应码
        info(str(response.status_code))
        # 打印所有头部
        info(str(response.headers))
        # 打印cookie头部
        info(str(response.cookies))
        # 打印响应报文内容
        info(str(response.text))
        
    

    在终端中输入一下命令启动

    mitmdump.exe -s lyc.py
    

    ‍‍‍‍‍‍‍(PS:这里需要通过另一个端启动浏览器)

    "C:UsersAdministratorAppDataLocalGoogleChromeApplicationchrome.exe" --proxy-server=127.0.0.1:8080 --ignore-certificate-errors
    

    然后访问网页(http://www.chenlove.cn),这里就以我自己的个人网站为例

    在终端中就可以看到信息

    这些信息就是我们在lyc.py中指定的显示信息。

    PS:

    在手机上配置好代理之后,mitmproxy同样可以抓取手机端数据,这里的具体操作和我之前这篇文章一样【以某乎为实战案例,教你用Python爬取手机App数据】,只不过是抓包工具不一样而已。

    5

    小结

    1. 不需要安装软件,直接在线(浏览器)进行抓包(包括手机端和PC端)

    2. 配合Python脚本抓包改包。

    3. 抓包过程的所有数据包都可以自动保留到txt里面,方便过滤分析

    4. 使用相对简单,易上手。

    最后说一声:原创不易,求给个赞、在看、评论

    推荐阅读

    实操案例!手把手教你画城市轮播地图(文末送书)

    实战|教你爬取全国火锅店数量,并利用地图可视化展示

    手把手教你爬取PC端『某酷视频』个人历史播放数据,并可视化展示

    耐得住寂寞,才能登得顶
    Gitee码云:https://gitee.com/lyc96/projects
  • 相关阅读:
    2018-div-matrix
    cf663div2
    生成树
    Call to your teacher
    并查集总结
    分组背包
    被3整除的子序列
    多重背包
    12.05
    django生命周期图
  • 原文地址:https://www.cnblogs.com/chenlove/p/14801807.html
Copyright © 2011-2022 走看看