后台持续采集 — PCAPdroid 抓包时为什么要常驻通知
常驻通知的作用
Android 8.0+ 对后台服务有严格限制——不允许应用在后台无提示地运行。任何长期运行的后台任务都必须以前台服务(Foreground Service)形式存在,并在通知栏显示一条常驻通知。
PCAPdroid 抓包时:
- VpnService 本身是前台服务,Android 会强制显示一个钥匙图标在状态栏
- 同时有一条常驻通知显示抓包速率、累计流量、运行时长
- 点击通知可以快速回到 PCAPdroid 主界面停止抓包
这是 Android 系统的硬性要求,PCAPdroid 无法去掉这个通知。
为什么有时会被系统杀掉
国产 ROM(小米、OPPO、vivo、华为、三星 One UI 早期版本)有自己的后台激进清理策略,即使是前台服务也可能被系统判定"占用资源过多"而杀掉。
表现:PCAPdroid 抓包突然停止、通知消失、重新打开应用发现抓包已结束。
怎么让它不被杀
| 厂商 | 做法 |
|---|---|
| 小米 MIUI | 设置 → 应用管理 → PCAPdroid → 省电策略 → 无限制;自启动白名单 |
| OPPO ColorOS / vivo OriginOS | 设置 → 电池 → 后台冻结 → PCAPdroid 不受限制;自启动列表 |
| 华为 HarmonyOS / EMUI | 设置 → 应用和服务 → 特殊访问权限 → 忽略电池优化 → PCAPdroid;自启动管理 |
| 三星 One UI | 设置 → 应用 → PCAPdroid → 电池 → 不受限制;开发者选项里开启 "允许后台活动" |
| 原生 Android AOSP | 一般不会主动杀前台服务,除非你手动限制了 |
PCAPdroid-mitm 插件也需要同样的设置——TLS 解密时 mitm 插件会以独立进程运行,被系统杀掉后解密立刻失败。
通知清除了会怎样
某些 ROM 允许你手动清除常驻通知。不要清除——清除了通知等于告诉 Android 这个前台服务可以结束,PCAPdroid 抓包也会随之停止。