Sc4v3g3r/browser-cache-viewer
GitHub: Sc4v3g3r/browser-cache-viewer
一个轻量级的浏览器缓存取证工具,通过 Web UI 解析、预览和下载 Chrome 与 Firefox 的磁盘缓存文件。
Stars: 0 | Forks: 0
# 浏览器缓存查看器
一个轻量级的 Web 应用,用于检查 **Chrome/Chromium** 和 **Firefox** 浏览器的缓存文件。它解析磁盘上的缓存格式,列出每个缓存资源及其 URL、时间戳和内容类型,并允许您直接在浏览器中预览或下载原始的缓存 payload。
本项目作为浏览器取证的学习项目而开发——属于数字取证和事件响应中使用的同类工具,用于从本地痕迹中还原用户的网络活动。
## 功能
- **Chrome & Chromium** — 通过内置的 [`ccl_chromium_reader`](https://github.com/cclgroupltd/ccl_chromium_reader) 解析 Simple Cache 格式。
- **Firefox** — 解析磁盘上的 `cache2` 格式(metadata、headers、payload)。
- **自动解压** `gzip`、`brotli` 和 `deflate` 响应,以便预览时显示真实内容。
- **预览或下载**任何缓存资源(图像、HTML、JSON 等),并使用正确的 MIME 类型。
- **拖拽 `.zip`** 文件(包含收集的缓存文件夹)进行分析,无需触碰活动的用户配置。
- **现代单页 UI**(暗色主题,无需构建步骤,纯 HTML/CSS/JS)。
## 技术栈
Python · Flask · `ccl_chromium_reader` · 原生 HTML/CSS/JS · Docker
## 项目结构
```
browser-cache-viewer/
├── app.py # Flask app: routes + upload handling
├── cache_parser.py # Chrome & Firefox cache parsing logic
├── templates/index.html # Single-page front end
├── static/ # Static assets (currently empty)
├── ccl_chromium_reader/ # Vendored Chrome-cache reader (MIT, CCL Solutions Group)
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
├── .env.example
└── README.md
```
## 快速开始
### 最快方式:运行已发布的镜像
无需克隆,无需构建。拉取并运行容器,然后打开应用并**拖拽一个包含浏览器缓存文件夹的 `.zip`** 文件进行分析:
```
docker pull sc4v3g3r/browser-cache-viewer
docker run --rm -p 5000:5000 sc4v3g3r/browser-cache-viewer:latest
```
然后打开 **http://127.0.0.1:5000** 并使用上传面板。
要分析**已存在于您机器上**的缓存(实时分析),请以只读方式挂载它并让应用指向它。在 **Linux/macOS** 上:
```
docker run --rm -p 5000:5000 \
-e CHROME_CACHE_DIR=/data/chromium/Default/Cache/Cache_Data \
-e FIREFOX_CACHE_BASE=/data/firefox \
-v "$HOME/.cache/chromium:/data/chromium:ro" \
-v "$HOME/.cache/mozilla/firefox:/data/firefox:ro" \
sc4v3g3r/browser-cache-viewer:latest
```
在 **Windows (PowerShell)** 上——拖拽 `.zip` 上传是最简单的方式,但如果要挂载实时缓存,请使用 Windows 路径:
```
docker run --rm -p 5000:5000 -e CHROME_CACHE_DIR=/data/chromium/Cache_Data -v "$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Cache\Cache_Data:/data/chromium/Cache_Data:ro" sc4v3g3r/browser-cache-viewer:latest
```
### 1. 本地运行 (Python)
需要 **Python 3.10+** 和 **git**(用于其中一个依赖项)。
```
# clone 你的 repo,然后:
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env # then edit paths for your machine (optional)
python app.py
```
打开 **http://127.0.0.1:5000**。
### 2. 使用 Docker 运行
```
# 将这些指向你自己的 browser caches,然后 bring it up:
HOST_CHROME_CACHE=~/.cache/chromium \
HOST_FIREFOX_CACHE=~/.cache/mozilla/firefox \
docker compose up --build
```
## 配置
所有设置均来自环境变量(参见 `.env.example`):
| 变量名 | 默认值 | 用途 |
|----------------------|--------------------------------------------------|------------------------------------------------|
| `CHROME_CACHE_DIR` | `~/.cache/chromium/Default/Cache/Cache_Data` | UI 中显示的默认 Chrome 缓存目录 |
| `FIREFOX_CACHE_BASE` | `~/.cache/mozilla/firefox/` | Firefox profiles 目录;自动扫描 `cache2` |
| `HOST` | `127.0.0.1` | 绑定的网络接口 |
| `PORT` | `5000` | 绑定的端口 |
| `FLASK_DEBUG` | `0` | Flask 调试模式(在开发环境外保持关闭) |
| `MAX_UPLOAD_MB` | `500` | `.zip` 上传的最大大小 |
常见缓存位置:
- **Chrome (Linux):** `~/.config/google-chrome/Default/Cache/Cache_Data`
- **Chrome (macOS):** `~/Library/Caches/Google/Chrome/Default/Cache/Cache_Data`
- **Chrome (Windows):** `%LocalAppData%\Google\Chrome\User Data\Default\Cache\Cache_Data`
- **Firefox:** 位于您的操作系统 Firefox profiles 文件夹下的 `/cache2/entries` 中。
## 工作原理
1. `CacheParser` 会检测目录是 Chrome Simple Cache 还是 Firefox `cache2` 存储。
2. 对于 **Chrome**,它会委托给 `ccl_chromium_reader` 来枚举键并读取 metadata 和 payload。
3. 对于 **Firefox**,它直接读取每个缓存文件:定位 metadata 块、解析 headers 并提取响应主体。
4. 内容在需要时会被解压,并以正确的内容类型发回浏览器,以便进行内联预览或下载。
## 安全提示
这是一个个人/分析工具,不是经过严格安全加固的服务。在运行它之前:
- **绑定到 localhost。** 默认的 `HOST` 是 `127.0.0.1`。仅在您可控的网络中暴露它,绝不要暴露在公共互联网上。
- **`dir` 参数会读取主机上的任意路径**,这样您就可以将它指向任何缓存位置。这种灵活性意味着您不应将此应用暴露给不受信任的用户。
- 在开发环境之外**保持 `FLASK_DEBUG=0`** —— 调试模式会启用一个交互式的代码执行控制台。
- 上传的压缩包在解压时带有**路径遍历 保护**。
## 致谢与许可
- 本项目自身的代码基于 **MIT License** 发布——参见 [`LICENSE`](LICENSE)。
- Chrome 缓存解析使用了由 [CCL Solutions Group](https://github.com/cclgroupltd/ccl_chromium_reader) 开发的内置 **`ccl_chromium_reader`**
(MIT)。其许可保留在 `ccl_chromium_reader/LICENSE` 中。
- Firefox `cache2` 解析属于原创实现,参考了关于该磁盘格式的公开文档。
欢迎提交贡献和问题。
标签:Flask, HTTP工具, Python, 库, 应急响应, 数字取证, 无后门, 浏览器取证, 缓存解析, 自动化脚本, 请求拦截, 逆向工具