mitmproxy 抓包 
TIP
2022.01.04 国服更新 2.36.0 支持 iOS/Android 互登。Android操作麻烦,若可使用iOS设备推荐Stream方法。
主要步骤有就设置代理和安装证书两步,mitmproxy和Charles均可适用(除软件自身设置外)。以下以Windows平台+Android模拟器(雷电5模拟器)为例。
模拟器选择 
除蓝叠等少数系统设置严重阉割的模拟器外应均可适用。部分模拟器可能WiFi的代理设置无法生效(若雷电5的Android7版本),或部分app也会无视代理,故本教程统一使用Drony进行全局代理。
Android版本选择:
- Android 6: 如Mumu6,支持国服,用户证书即可,无需adb,但日服要求Android 7+故无法安装
- Android 7-11: 需借助adb将证书安装至系统证书
- Android 12: 似乎存在更麻烦的情况,未测试
所需软件或工具 
下载链接: https://disk.chaldea.center/s/4zfd (部分浏览器不支持打包下载,请单独下载每个文件)
下载后解压至(举例)D:\fgotools文件夹,建议完整路径不要包含非英文字符和空格。
包含以下文件:
- 抓包脚本
- mitmproxy安装包 (mitmproxy-windows-installer.exe, 10.2.2版本) - 若需更新或下载macOS/Linux版本,请访问官网https://www.mitmproxy.org/
- mitmproxy有安装包版(安装到系统中)和非安装包版(解压zip直接运行),其中非安装版在部分电脑上可能显示不兼容,请下载安装包(installer)安装到系统中使用
 
- Drony 1.3.154 - 该apk经过测试可用。网上下载的版本五花八门,即使版本号相同也极有可能已遭多次修改无法正常使用。
 
关于ADB
由于安卓模拟器版本和adb版本众多,兼容性较差,请使用模拟器自带的adb,一般位于模拟器的安装文件夹内。 用于Android≥7时复制证书到系统证书。若系统已root且已安装Magisk等框架,可搜索JustTrustMe等相应插件用于复制证书即可。
设置mitmptoxy 
一般无需修改,仅确认端口用于后续步骤使用。
start.cmd文件内容:
mitmdump.exe -p 8888 -s fgoaddon.py其中8888即为代理端口。除非出现以下错误说明端口已占用,修改上述数字至其他数字保存后再重试。
[Errno 10048] HTTP(S) proxy failed to listen on *:8888 with
[Errno 10048] error while attempting to bind on address ('::', 8888, 0, 0):
通常每个套接字地址(协议/ 网络地址/端口)只允许使用一次。
only one usage of each socket address (protocol/network address/port) is normally permitted设置代理 

- 获取电脑的IP地址(主机名),有两种方法:- 模拟器中打开系统设置-WiFi-设置/信息-IP地址或系统设置-关于平板电脑-状态信息-IP地址- 模拟器地址为172.16.1.15,则电脑的ip位172.16.1.2。其他模拟器同理仅更改最后一位为2
 
- 打开cmd或PowerShell,输入ipconfig选择合适的IPv4地址(可能存在多个,请依此尝试)
 
- 模拟器中打开
- 安装 Drony,只有英文和繁体,根据系统语言显示,参考上图
- 打开后显示日志页和设置页,左右滑动切换到设置页
- 网络-无线网络-选择连接的 WiFi-网络细节设置 - WiFi 名: 代理类型/Proxy type选手动/Manual
- WiFi 名-手动代理/Manual Proxy: 主机名和端口同上一步,代理类型/Proxy type选普通/Plain
- WiFi 名-过滤器/Filter: 过滤默认值选择本地代理链全部/Local Proxy Chain All
- 返回
 
- WiFi 名: 
- 过滤器-默认值: 选择引导全部/Direct All
- 左滑回到日志页,点击底部开关,开启后在通知栏可以看到 ⅤΡΝ 连接提示,第一次使用会申请创建 ⅤΡΝ 的权限。在 Charles 中会弹出提示,并允许接收来自此设备的请求。
后续使用/关闭仅需点击开关即可,无需其他操作。若WiFi变化(如在手机上使用),需重新设置上述步骤。
安装证书 
- 确保Drony为开启状态
- 浏览器打开http://mitm.it,点击Android - Get-mitmproxy-ca-cert.cer下载并安装- 若显示 traffic is not passing through mitmproxy 等英文,请检查“设置代理”步骤。
- 需设置PIN、密码、手势等至少一项安全措施
- 名字填写mitmproxy(随意)
- 用途为VPN和应用
 
- 可在系统设置-安全-信任的凭据-用户处找到刚安装的证书
- 在模拟器设置中开启: - ROOT权限
- ADB调试: 开启本地连接
- 磁盘可写入: 如雷电9中的 磁盘共享-System.vmdk可写入
 
INFO
mitmproxy证书默认有效期10年,Charles证书默认有效期1年,过期后需删除重新安装。
Android 7及以上版本系统将不信任用户证书,需要将用户证书移动至系统证书。
- Android 6及以下无需操作,直接调到下一节,Mumu6为Android 6,但已停止更新
- Magisk框架等可安装JustTrustMe等插件实现
- 日服安装包要求Android 7+,否则日服安装包直接安装失败
- 打开PowerShell或CMD(打开adb所在目录,窗口菜单里找到 - 在PowerShell中打开,若未找到直接搜索并打开)- 确保命令行窗口显示模拟器自带adb所在目录(以雷电9举例): - D:\LDPlayer9\>- 若不是,请执行: ps- cd D:\LDPlayer9\
- 输入 - adb devices或(- .\adb.exe devices, 下同)- 显示 - List of devices attached 127.0.0.1:5557 device emulator-5556 offline- 其中 - 127.0.0.1:5557或- emulator-5556为模拟器名称,一般取前者,逐个试即可。若此处只显示一行,则略过且下一步无需指定- -s 127.0.0.1:5557
- 输入 - adb -s 127.0.0.1:5557 shell- 若显示 - xxxx:/ #表示成功
- 输入 sh- su mount -o rw,remount,rw /system cp /data/misc/user/0/cacerts-added/* /system/etc/security/cacerts/ mount -o ro,remount,ro /system- 在高版本Android系统中可能提示 - mount: '/system' not in /proc/mounts,则使用sh- su mount -o rw,remount / cp /data/misc/user/0/cacerts-added/* /system/etc/security/cacerts/ mount -o ro,remount /
- 打开 - 系统设置-安全-信任的凭据-系统标签页可找到mitmproxy证书
- 重启模拟器或手机! 
开始抓包 
- 双击start.cmd启动抓包
- 打开FGO登录直到出现地球仪或公告页面
- 检查目录下生成的toplogin**.json的文件,导入Chaldea即可
结束及清理 
- 关闭Drony及其他窗口
- 若以后不再使用,可在系统设置-安全-信任的凭据中删除mitmproxy证书
再次抓包 
- 打开Drony,点击开启
- 打开start.cmd
- 开始抓包
FAQ 
- FAQ
- 若出现 mitm.it 一直加载打不开,或 FGO 连不上等,可尝试在黑色 cmd 窗口中输入任意字符,有可能 cmd 卡住了
