惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
WordPress大学
WordPress大学
小众软件
小众软件
云风的 BLOG
云风的 BLOG
IT之家
IT之家
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
博客园 - 【当耐特】
T
Tailwind CSS Blog
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
宝玉的分享
宝玉的分享
博客园 - Franky
F
Fortinet All Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
Hugging Face - Blog
Hugging Face - Blog
Jina AI
Jina AI
D
Docker
博客园 - 聂微东
C
Check Point Blog
H
Help Net Security

mephisto.cc

修复rime-ice无法弹出候选框的问题 开机滚动字体显示优化 个人网站安全防护 树莓派上部署Vaultwarden 使用goaccess实时分析Caddy日志 个人网站监控 Hugo全站AVIF记 Linux下尝试使用Godot开发小游戏 Arch linux dae 透明代理 Airflow接管galler-dl下载任务 如何使用gallery-dl批量下载图像 Arch核显下如何愉快玩Dota2和CS2 Arch/labwc 环境网络相关设置 Rime添加dota2词库 Arch 重装记录 Supertuxkart iOS版终于发布了 打造自己的流媒体音乐服务 剪切板管理工具clipcat推荐 MangoHud性能监控 微信小程序开发记 Rofi试用 解决Arch下VSCode无法输入中文的问题 独立窗口管理器下无法录屏问题处理 上海市二手房成交数据监控 OpenLDAP监控 Arch linux如何顺畅连接蓝牙设备 使用Git和Ansible管理配置文件 Arch Linux SSL VPN 客户端配置 简单获取celery任务实时结果 Arch linux下iNode客户端的安装和使用方法
使用mitmproxy给手机app抓包
2022-11-16 · via mephisto.cc

工作中经常需要抓取手机 app 的网络报文,比方说某个图片无法访问的问题,只在手机 app 端出现,web 端正常。这个时候你需要抓包快速定位问题原因,通常的操作都是在电脑上面安装个抓包软件用作代理,手机设置连接这个代理,这样手机的网络报文会经过抓包软件,自然就可抓取解析报文细节了。掌握了网络报文细节,就好像 chrome 的调试工具一样,一切无所遁形。

常见的抓包软件为 Charles、Fiddler、Wireshark 等,Charles 和 Fiddler 都是收费软件,Wireshark 适合较底层的网络报文分析,本文推荐 mitmproxy 是个开软件(MIT License), 不用花钱也够用,看 github 的贡献记录这软件是 2016 年才活跃发力。

有必要介绍下名字,mitm 表示 Man-in-the-middle attack(中间人攻击),proxy 即代理,组合起来 mitmproxy,这样更加便于记住。

1. 安装

  • 最简单的安装方式,因为是 python 编写的,可直接 pip 安装(推荐 pip 安装,省事):

Linux 用户可以直接去官网下载压缩包,解压即可。

2. 简介

安装完成后,包含三个工具

  • mitmproxy gives you an interactive command-line interface

    命令行界面(CUI?),可以在终端上面完成各种操作。

  • mitmweb gives you a browser-based GUI

    Web 图形界面,类似 chrome 的调试界面,不喜欢命令行的个人建议使用这个

  • mitmdump gives you non-interactive terminal output

    命令行工具,可以简单理解为 tcpdump 类似的工具

3. 搭建抓包环境

环境图示:

how mitmproxy works

电脑上启动 mitmproxy 或者 mitmweb,直接输入命令启动,默认 8080 全网卡监听:

1➜  ~ ss -lnt |grep 8080
2LISTEN 0      100          0.0.0.0:8080       0.0.0.0:*
3LISTEN 0      100             [::]:8080          [::]:*

手机端连接 WiFi,找到代理设置的地方,填上电脑 ip 和 port,意思就是手机访问网络的时候,流量会走代理(即电脑上的 ip:port 服务),这样代理软件才能解析处理。

要点

现在手机 app 大部分都使用 https 了,这涉及到信任证书的问题。 以 iOS 为例,WiFi 设置好代理后,浏览器访问 mitm.it,这个网址 http://mitm.it/,根据页面上面的指引下载对应平台的证书。

CA certificate

安装好证书后(不会安装网上搜下),一定要注意,新版的 iOS 系统还要选择完全信任(这一步很关键,Settings > General > About > Certificate Trust Settings 这样设置)。英文说明如下:

On recent iOS versions you also need to enable full trust for the mitmproxy root certificate:

Go to Settings > General > About > Certificate Trust Settings. Under “Enable full trust for root certificates”, turn on trust for the mitmproxy certificate.

不这样的设置的话,部分 https 流量可能无法分析,握手阶段证书校验不会成功,连接断开。

设置好环境后,即可开始抓包了,手机上开启目标 App,点击后抓包软件就会刷新报文列。

三种方式示例如下:

  • mitmproxy

启动,直接输入命令:

命令行界面如图所示,抓取的 B 站。

mitmproxy cui

上方为报文信息,下方为命令指引,报文列移动貌似支持 vim 快捷键(gg G 等),按 Enter 进入详情页,q 退出,也支持鼠标点击,稍微摸索下就会用了,不多解释。

  • mitmweb

启动,直接输入命令:

会直接开启个浏览器 tab 页,抓取的手机微信。

mitmweb gui

点击报文列,右侧界面会显示请求头、反回头等信息。

mitmweb detail
  • mitmdump

这个感觉有 tcpdump,暂时用不到,需要使用的可以去翻看下官方文档。