Python实现抓包

mitmproxy,可实现代理电脑、手机浏览器的http、https协议,截取请求和响应报文,可篡改。实现中间人攻击

1 安装mitmproxy

win10,python3.6以上,安装5.0.1版本

pip install mitmproxy==5.0.1

2 简单使用

以下三个命令是可执行程序(不是python程序!),需要在命令行下使用

  • mitmproxy:命令行界面,可交互式检查和修改http数据流,不支持windows

  • mitmweb:基于web界面的mitmproxy接口,可以看到电脑尚实时的请求数据,可过滤请求和查看请求数据

    mitmweb
      -p    8888 # web网站端口,不写默认8080
      --listen-host http://*:8080 # 监听的地址,默认http://*:8080
  • mitmdump:命令行界面,不能交互,但可以指定使用脚本完成定制化功能开发

    mitmdump
      -p    8888 # 代理的端口,默认8080,需要先在windows下配置proxy信息
      -s    xx.py # 使用哪个脚本

3 脚本指南

主要就是request、response函数

from mitmproxy import ctx

def request(flow):
    # 记录log
    ctx.log.info('request url: {}'.format(flow.request.url))
    # 修改请求地址
    flow.request.url = 'http://cn.bing.com'

def response(flow):
    # 获取响应并替换响应内容
    text = flow.response.get_text()
    ctx.log.info("response: {}".format(text))
    text = text.replace("搜索", "请使用谷歌")
    flow.response.set_text(text)

4 代理方式

  • 【win10】pc代理:

    • 打开设置,搜索代理,手动设置代理,开启使用代理服务器,地址写127.0.0.1、端口填写8080,保存

    • 命令行启动mitmdump

      mitmdump
    • 打开网页http://mitm.it/,如果出现了if you can see this, traffic is not....之类的字样说明失败了,需要重新检查一下哪里错了,否则就是对了

    • 还是在刚才的网站,安装你操作系统对应的证书,不然无法监控https,安装过程一直点下一步就行,其他的不要点

  • 移动端

    • 设置——>WLAN——>长按已连接的网线网络——>修改网络——>高级选项——>代理(手动),代理服务器主机名是本机ipV4的地址
    • 下载安装证书:手机浏览器访问网页会提示下面内容,所以同样需要下载安装证书,和pc端一样的下载方式。下载完成后,点击证书安装即可(证书名称随意取)。