mitmproxy使用(windows)

配置mitmproxy

mitmproxy 是一个抓包程序,另外还有mitmweb、mitmdump两个关联组件

windows下配置mitmproxy

  1. pip install mitmproxy mitmproxy是一个控制台形式的抓包,不支持在cmd 上运行;不过可以使用mitmdump或者mitmweb,后者是一个网页形式

  2. 配置证书:设置浏览器的代理;chrome浏览器 为例:地址栏输入 chrome://settings回车,搜索代理点击打开代理设置,设置局域网,高级,127.0.0.1:8080; 注意检测8080和8081端口是否被占用

    # cmd
    netstat -ano | findstr 8080
    tasklist | findstr pid
    taskkill /pid pid
    
  1. 终端执行 mitmdump 开始监听8080端口; 浏览器地址栏输入 http:mitm:it 下载 HTTPS 证书;选择对应的平台点击下载,双击证书添加到受信任根证书管理机构中;这一步不做,所有的https请求的都会显示SSL Error; 浏览器显示“您的链接不是私密链接”
安装证书.png
未安装证书访问网站出错.png

模拟器/APP中安装证书

将windows本地的mitmproxy-ca-cert.pem复制到模拟器上(MuMu模拟器找到模拟器上的更多里的文件共享,打开文件共享将证书拖放到这里)
安全选选:从SD卡上安装→共享文件→点击mitmproxy-ca-cert.pem安装

mitmweb使用

进入虚拟环境(有安装mitmproxy包):设置好代理之后(手机或者模拟器设置代理,在同一网段);执行 mitmweb;浏览器自动打开页面地址127.0.0.1:8081抓包

mitmdump使用: (需关闭mitmweb)

# 同样进入切换到安装有mitmproxy包的虚拟环境,cd到项目目录下,执行:
mitmdump -q -s addons.py --set body-size-limit=10k "~m post" 
# -q 屏蔽 mitmdump 默认的控制台日志,只显示自己脚本中的
# -s 入口脚本文件
# --set body-size-limit=10k 只处理小于 10k 的请求
# "~m post" 只处理 post 方法的请求

m_script.py 示例脚本

def response(flow):
    """
    获取列表页
    @param flow:
    @return:
    """
    if 'https://list.tmall.com/search_product.htm?' in flow.request.url:
        print(f'url: {flow.request.url}')
        count = re.findall(r'&s=(\d+).*', flow.request.url)
        try:
            count = int(count[0])
            page = int(count/30)
        except Exception as e:
            page = 0
        print(f'page: {page}')
        if page > 0:
            html = flow.response.text
            print(html)
            # save_html(index=page, data=html)

你可能感兴趣的:(mitmproxy使用(windows))