• 美团开源抓包神器Lyrebird


    地址: Lyrebird Github

    本人是 ubuntu18.04 桌面版,其它 windows 或 mac 系统部署类似,只要有 python3 环境均可使用。
    以下为利用 python virtualenv 部署 python3 和 Lyrebird

    # 利用virtualenv 创建名为 Lyrebird的python3.6.5 虚拟环境
    cmd@TR:~$ pyenv virtualenv 3.6.5 Lyrebird
    Requirement already satisfied: setuptools in /home/cmd/.pyenv/versions/3.6.5/envs/Lyrebird/lib/python3.6/site-packages
    Requirement already satisfied: pip in /home/cmd/.pyenv/versions/3.6.5/envs/Lyrebird/lib/python3.6/site-packages
    
    # 激活使用Lyrebird虚拟python3环境
    cmd@TR:~$ pyenv activate Lyrebird
    pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior
    
    # 检查初始虚拟环境带的py包
    (Lyrebird) cmd@TR:~$ pip list
    DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
    pip (9.0.3)
    setuptools (39.0.1)
    
    # 升级下过老的py包
    (Lyrebird) cmd@TR:~$ pip install --upgrade pip
    (Lyrebird) cmd@TR:~$ pip install --upgrade setuptools
    
    (Lyrebird) cmd@TR:~$ pip list
    Package    Version
    ---------- -------
    pip        10.0.1
    setuptools 40.0.0
    
    # 安装lyrebird
    (Lyrebird) cmd@TR:~$ pip install lyrebird
    
    # 看下lyrebird 依赖安装了其他哪些py包
    (Lyrebird) cmd@TR:~$ pip list
    Package          Version  
    ---------------- ---------
    aniso8601        3.0.2    
    asn1crypto       0.24.0   
    beautifulsoup4   4.6.0    
    blinker          1.4      
    brotlipy         0.7.0    
    certifi          2018.4.16
    cffi             1.11.5   
    chardet          3.0.4    
    click            6.7      
    colorama         0.3.9    
    cryptography     2.2.2    
    fire             0.1.3    
    Flask            1.0.2    
    Flask-RESTful    0.3.6    
    Flask-SocketIO   3.0.1    
    genson           1.0.1    
    h11              0.7.0    
    h2               3.0.1    
    hpack            3.0.0    
    hyperframe       5.1.0    
    idna             2.7      
    itsdangerous     0.24     
    Jinja2           2.10     
    kaitaistruct     0.8      
    ldap3            2.5      
    lyrebird         0.10.5   
    MarkupSafe       1.0      
    mitmproxy        4.0.3    
    packaging        17.1     
    passlib          1.7.1    
    pip              10.0.1   
    portpicker       1.2.0    
    pyasn1           0.4.3    
    pycparser        2.18     
    pycryptodome     3.4.11   
    pyOpenSSL        18.0.0   
    pyparsing        2.2.0    
    pyperclip        1.6.2    
    python-engineio  2.2.0    
    python-socketio  2.0.0    
    pytz             2018.5   
    requests         2.19.1   
    ruamel.yaml      0.15.44  
    setuptools       40.0.0   
    six              1.11.0   
    sortedcontainers 2.0.4    
    tornado          5.0.2    
    urllib3          1.23     
    urwid            2.0.1    
    Werkzeug         0.14.1   
    wsproto          0.11.0  
    
    
    
    # 查看下命令行参数帮助
    (Lyrebird) cmd@TR:~$ lyrebird --help
    WARNING: The proper way to show help is 'lyrebird -- --help'.
    Showing help anyway.
    
    Fire trace:
    1. Initial component
    2. Instantiated class "CommandLine" (/home/cmd/.pyenv/versions/3.6.5/envs/Lyrebird/lib/python3.6/site-packages/lyrebird/manager.py:127)
    3. ('Could not consume arg:', '--help')
    
    Type:        CommandLine
    String form: <lyrebird.manager.CommandLine object at 0x7f4f83a07b00>
    Docstring:   命令行入口
    
    * lyrebird
    以缺省参数启动lyrebird
    
    * lyrebird start
    以缺省参数启动lyrebird
    
    * lyrebird v start
    以输出详细日志模式启动lyrebird
    
    * lyrebird no-browser start
    启动lyrebird不默认打开浏览器
    
    * lyrebird start --mock 9090 --proxy 4272 --data .
    指定参数启动lyrebird
    参数:
        --mock 默认9090 , mock服务及前端端口
        --proxy 默认4272, 代理服务端口
        --data 默认./data, mock数据根目录
        --name 默认lyrebird,服务别名(用于通过别名停止指定的lyrebird服务)
    
    * lyrebird stop
    停止lyrebird
    
    * lyrebird stop --name foo
    停止别名为foo的lyrebird
    
    Usage:       lyrebird
                 lyrebird no-browser
                 lyrebird resource
                 lyrebird server
                 lyrebird start
                 lyrebird stop
                 lyrebird v
    
    
    # 带v 日志方式 启动lyrebird服务
    (Lyrebird) cmd@TR:~$ lyrebird v start
    lyrebird Load config : {
        "version": "0.10.5",
        "proxy.filters": [],
        "proxy.port": 4272,
        "mock.port": 9090,
        "mock.data": "data",
        "mock.proxy_headers": {
            "scheme": "MKScheme",
            "host": "MKOriginHost",
            "port": "MKOriginPort"
        },
        "ip": "your ip "
    }
    lyrebird start on your ip:9090
     * Serving Flask app "MOCK" (lazy loading)
     * Environment: production
       WARNING: Do not use the development server in a production environment.
       Use a production WSGI server instead.
     * Debug mode: on
    mitmproxy start on your ip:4272  ***请在被测设备上设置代理服务器地址***
    INFO - [mock_server] - 302  GET http://localhost:9090/
    INFO - [mock_server] - 200  GET http://localhost:9090/ui/

    小米手机设置代理参考

    https://jingyan.baidu.com/article/1974b2895cb780f4b1f774b5.html
    我本机是 ubuntu18.04 用的公司无线 wifi dhcp 获得 IP ,手机也是连接的公司同一 wifi
    根据日志输出 “mitmproxy start on your ip:4272 请在被测设备上设置代理服务器地址” 提示,配置好手机该 wifi 代理的 ip 和端口 4272
    被测设备上用浏览器打开 http://mitm.it 选 Android 提示下载 pem.crt 安装,并安装证书。

    小米 mix2 miui9.6 安装 mitmproxy 证书问题解决:

    用手机自带的浏览器 或者 Firefox(从日志来看小米浏览器被一个 url 为 sec.miui.com 的安全服务限制了,无法正常下载该 pem.crt 证书,Firefox 则是没有什么提示,但再此点击 Android 图标又会提示 “此证书已在此前安装为一个证书颁发机构”)

    都无法正常唤起 “证书安装程序” ,最后尝试用了 Chrome ,终于点击 Android 图标下载文件 pem.crt 成功后提示并唤起了手机系统的 “证书安装程序” ,此处还要输入锁屏密码,然后就是一个 “为证书命名” 的提示框。输入一个名字 lyrebird ,确定即正常提示安装证书成功。

     

    通过 Chrome 的下载管理来看该 pem 文件名

     


    该证书凭据最后可以在设置 ->其他设置-> 系统安全-> 加密与凭据-> 信任的凭据-> 用户下找到,名为 mitmproxy

    然后在地址 http://localhost:9090/ui/ 便可以点击 record 图标 ,来开始录制手机上操作 app 的请求。

    界面只有 inspector 和 datamanager 解决 

    其他界面是插件形式提供的,目前默认没有集成插件。还是需要自己装的。
    安装方式如下
    pip install lyrebird-ios
    pip install lyrebird-android
    pip install lyrebird-api-coverage

    Android 界面

    lyrebird-android 
    需要安装该插件。目前 lyrebird 默认界面 inspector  DataMagnager
    插件有 ios   api-coverage   android
    像 overbridge 和大会里提到的其他 还未开放?

    这个 Android 界面,我实验了下 usb 连接真机,不开启开发者模式中的 usb 调试相关 或 adb devices -l 命令 list 不出来真机,界面上刷新 Android 界面 是找不到你的真机的。
    所以还是要开启开发者模式相关。

     

    可以看到真机界面(但非实时双向的)实时日志,和其他快捷启动 app 等

  • 相关阅读:
    (一)python 简单网页爬虫
    环形队列的应用
    AutoResetEvent 和 ManualResetEvent 多线程应用
    委托 和 事件
    Action 和 Func 的用法以及区别
    IIS 配置缓存
    IIS 发布双证书
    函数中返回局部变量的问题
    python函数2-函数参数
    Python基础语法6-冒泡排序
  • 原文地址:https://www.cnblogs.com/zhaoyingjie/p/14690900.html
Copyright © 2020-2023  润新知