自研抓包服务实现(1)—Mitmproxy抓包数据处理

抓包服务实现(1)—Mitmproxy抓包数据处理
mitmproxy是什么?
  • 官网介绍:mitmproxy is a set of tools that provide an interactive, SSL/TLS-capable intercepting proxy for HTTP/1, HTTP/2, and WebSockets.
  • 简而言之:mitmproxy支持拦截http、https请求
mitmproxy怎么使用?

由于mitmproxy是python第三方库,首先需要安装,建议直接用python安装
这里用mac系统(两个命令供选择)

python3 -m pip install mitmproxy 或者 pip3 install mitmproxy

当然,如果想用mac自带系统安装也行

brew install mitmproxy

mitmproxy提供了三个命令,启动模式不同:

  • mitmproxy提供编译器执行命令行
  • mitmdump提供终端输出
  • mitmweb提供浏览器界面

至于如何配置环境和启动,可自行百度搜索。但在本文中将不会用到上述三个命令,而是以一个python第三方包的形式import,利用其包含的方法进行二次开发

mitmproxy提供了很多api供调用,用来改变mitmproxy的行为
最简单的用法是打印flow,了解flow的构造

class Counter:
    def request(self,flow):
        print(flow)

addons=[Counter()]

注意这里不能用python直接启动,因为还没有options配置,不能让python与mitmproxy直接进行交互
执行命令mitmdump -s addons.py

为什么传参flow,这是mitmproxy的实例:flow:http.HTTPFlow,类似于Django的request。此时我们能看到flow流的构造

<HTTPFlow
  request = Request(GET api.inuozhen.com:443/x/gapp/config/info?sdk_type=na&shell_v=30010000&sign=66daffc7dffee394561cd1683f85875e&lon=121.523384&shell_vn=3.0.10.000&source=287001&versionName=1.0.0.000.0420.1715&uuid=b28f57d55549413da8be467e8380c9f9&platform=gapp&network=wifi&OSVersion=9&x-innoSeed=&app_id=a4d35TZN3Bzb&lat=31.119436&oaid=3dfd34b5-dfee-c262-777f-ffddf3f71af5&dtu=004&tuid=8qW5Qh0tSoehfslLLcVjmQ&deviceCode=869615044982234&version=1470&market=qtt&app_name=com.hahyx.wzdzz&v=10000000&tk=ACHypblCHS1Kh6F-yUstxWOZRWpxIwUOz3VnbXd6ZHp6Mg&vn=1.0.0.000.0420.1715&time=1619408533693&dc=869615044982234)
  response = Response(200, application/json; charset=utf-8, 980b)
  client_conn = <ClientConnection: [TLSv1.2] [ALPN: h2] 10.104.94.107:58836>
  server_conn = <ServerConnection: [TLSv1.3: api.inuozhen.com] [ALPN: h2] api.inuozhen.com:443>>

从上述我们不能直接解析到request、response明细,但我们至少知道了flow包含了两个属性:
request、response

知道了flow流,接下来我们就要深入二次开发

怎么二次开发?
  1. 首先,我们希望是以python启动的方式来打开mitmproxy。原因无非是为以后集成接口去调用打基础
    参考某大佬的代码,至今都没有分析出为啥这么做
from mitmproxy import proxy, options
from mitmproxy.tools.dump import DumpMaster

class Counter:
    def request(self,flow):
        print(flow)

def start():
    myaddon = AddHeader()
    opts = options.Options(listen_port=8090)
    pconf = proxy.config.ProxyC
<think>好的,用户需要的是在Mac上使用mitmproxy进行抓包的教程。首先,我需要整理现有的引用内容,看看有哪些相关信息可以利用。根据引用[1],用户提到了安装mitmproxy的三个工具:mitmdump、mitmproxy和mitmweb,并且提到了在macOS上的安装步骤以及启动mitmweb的方法。引用[3]提到安装证书的位置在~/.mitmproxy文件夹下,而引用[4]则解释了mitmweb的用途。 接下来,我需要将这些信息整合成一个结构清晰的教程。可能需要分为安装、启动、配置设备代理、安装证书、抓包步骤和进阶使用几个部分。同时,用户可能需要知道如何查看本机IP地址,这在引用[1]中有提到使用ifconfig命令。 还要注意用户可能遇到的问题,比如证书安装失败或无法捕获HTTPS流量,这时候需要根据引用[3]和引用[4]中的信息提供解决方法。另外,引用[2]提到中文官网和文档,可能对用户有帮助,应该包含进去。 需要确保按照用户的要求使用正确的LaTeX格式,但在这个问题中主要是命令行和步骤说明,可能不太涉及数学公式,但如果有任何需要的地方,比如路径中的波浪线~,可能需要用$...$包裹。例如,路径是$~/.mitmproxy$。 最后,生成相关问题时要围绕教程内容,可能涉及不同工具的区别、HTTPS抓包问题、数据分析工具以及安卓模拟器的配置等。</think>### macOS上mitmproxy抓包使用教程 #### 一、工具安装 通过Homebrew安装mitmproxy套件: ```bash brew install mitmproxy ``` 该命令会安装三个组件: - `mitmproxy`(命令行交互工具) - `mitmweb`(Web图形界面) - `mitmdump`(无界面批处理工具) 验证安装版本: ```bash mitmdump --version ``` 输出示例:`Mitmproxy: 6.0.2 Python: 3.9.2`[^1] #### 二、启动工具 1. **图形界面启动**: ```bash mitmweb ``` 启动后自动打开浏览器访问`http://127.0.0.1:8081`[^4],代理端口默认8080 2. **命令行界面启动**: ```bash mitmproxy -p 8080 ``` #### 三、设备配置 1. **查看本机IP**: ```bash ifconfig | grep "inet " | grep -v 127.0.0.1 ``` 示例输出:`inet 192.168.1.22` 2. **安卓/iOS设备设置**: - WiFi代理设置:服务器IP填写上述地址,端口8080 - 浏览器访问`mitm.it`安装证书(iOS需在设置中手动信任证书) #### 四、证书安装(Mac端) 证书存放路径:`$~/.mitmproxy/$`[^3] ```bash open ~/.mitmproxy # 打开证书目录 ``` 双击`mitmproxy-ca-cert.pem`安装到钥匙串,并设置为始终信任 #### 五、抓包流程 1. 启动mitmweb/mitmproxy 2. 配置设备代理 3. 安装CA证书 4. 在界面中实时查看流量: - 按`F`键快速过滤请求 - 按`Enter`查看请求详情 - 使用`L`键切换请求列表布局 #### 六、进阶用法 ```bash # 保存会话记录 mitmweb -w session.mitm # 重放流量 mitmweb -n -r session.mitm # 流量过滤 mitmweb --ignore-hosts '.*example.com' ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值