sm1ee/Sniper
GitHub: sm1ee/Sniper
Sniper 是一款用 Rust 构建的 macOS 原生 Web 安全代理,提供 HTTP/HTTPS MITM 拦截、流量捕获与重放、模糊测试和被动扫描功能,以轻量快速和 CLI/AI 自动化支持为特色。
Stars: 4 | Forks: 0
轻量、快速、开源的 macOS Web 代理
重型代理平台的现代替代品 — 使用 Rust 构建,专为安全测试设计。
## 什么是 Sniper?
Sniper 是一款专为 macOS 打造的**开源桌面 Web 安全代理**。它拦截、检查并修改浏览器与互联网之间的 HTTP/HTTPS 流量 — 这是 Web 应用程序安全测试、漏洞赏金狩猎和 API 调试的核心工作流程。
如果你使用过 Burp Suite、OWASP ZAP 或 Caido,你会感到非常熟悉 — 但没有 Java 的开销、订阅费用或臃肿的功能集。Sniper 是一款用 Rust 编写的**原生 macOS 应用**,能在 1 秒内启动,且内存占用保持在 100 MB 以下。
**适用人群:** 渗透测试人员、漏洞赏金猎人、安全研究人员以及需要了解网络传输细节的开发者。
## 安装
从 [Releases](https://github.com/sm1ee/Sniper/releases/latest) **下载最新的 `.dmg`** 文件,打开它,然后将 Sniper 拖入你的 Applications 文件夹。
或者从源码构建:
```
cargo run --bin sniper-desktop
```
## 功能
| 类别 | 具体内容 |
|---|---|
| **代理** | HTTP 转发、HTTPS MITM、持久化根 CA、`https://sniper` 证书门户 |
| **捕获** | HTTP 历史、WebSocket 会话、拦截队列、匹配与替换规则 |
| **发现** | 被动漏洞扫描器 — 敏感数据、CORS、缺失标头、JWT 问题 |
| **重放** | 修改并重发任何捕获的请求 |
| **Fuzzer** | 基于载荷和标记的请求测试 |
| **工具** | 解码、编码、哈希、JWT 检查器、数据转换 |
| **会话** | 隔离的工作区 — 各自拥有独立的记录、作用域和状态 |
| **作用域** | 域名/路径过滤及站点地图可视化 |
| **主题** | 12 款主题 — 7 款深色 + 5 款浅色,金色点缀的设计语言 |
| **CLI** | `sniper-cli` — 优先支持 JSON 的脚本自动化 |
| **AI 技能** | 使用 `sniper-cli` 的内置 Claude 和 Codex 技能模板 |
## 为什么选择 Sniper?
| | Sniper | Burp Suite | OWASP ZAP | Caido |
|---|---|---|---|---|
| **运行时** | 原生 (Rust) | JVM | JVM | Rust + Electron |
| **启动速度** | < 1 秒 | 10+ 秒 | 10+ 秒 | ~3 秒 |
| **内存占用** | ~80 MB | 500+ MB | 400+ MB | ~200 MB |
| **价格** | 免费 | $449/年 (Pro) | 免费 | 免费增值 |
| **CLI 自动化** | 优先 JSON | 有限 | 有限 | API |
| **AI 集成** | 内置 | 无 | 无 | 无 |
## 快速开始
1. 下载并打开 Sniper
2. 将浏览器代理指向 `127.0.0.1:8080`
3. 访问 `https://sniper` 下载并信任根 CA
4. 开始捕获
默认监听器:
- Proxy: `127.0.0.1:8080`
- UI: `127.0.0.1:23001` (headless 模式)
## 核心工作流程
```
Session → Scope → Capture → Replay → Fuzz
│
┌─────────┼─────────┐
Intercept HTTP WebSocket
│
Findings (passive scan)
```
- **会话** — 拥有独立记录和状态的隔离工作区
- **作用域** — 定义目标域名/路径,自动过滤流量
- **捕获** — 检查 HTTP、拦截与修改、WebSocket 帧、自动替换
- **发现** — 被动扫描器检测敏感数据泄露、CORS 配置错误、缺失的安全标头、JWT 弱点
- **重放** — 带修改重发,覆盖 host/port
- **Fuzzer** — 插入标记,运行载荷列表
- **工具** — 集成解码/编码/哈希/JWT 功能
## 命令行界面
```
sniper-cli session list
sniper-cli capture http list --limit 10
sniper-cli capture http replay --id
sniper-cli scope set-scope --pattern '*.example.com'
sniper-cli fuzzer run
```
完整的 JSON 输出,支持脚本化,对 AI agent 友好。
## AI 集成
```
sniper-cli skills install --claude # Install Claude skill
sniper-cli skills install --codex # Install Codex skill
sniper-cli skills install --all # Install all
```
AI agent 可以通过 CLI 驱动完整的工作流程 — 捕获、作用域、重放、模糊测试 — 无需抓取 UI。
## 技术栈
| 层级 | 技术 |
|---|---|
| 核心 | **Rust** — 代理、MITM、TLS、会话管理 |
| HTTP | `hyper` + `tokio` 异步运行时 |
| TLS | `rustls` + `rcgen` 用于即时证书生成 |
| UI 服务器 | `axum` 提供嵌入式 SPA 服务 |
| 前端 | 原生 **JS** + **CSS** — 零框架,零构建步骤 |
| 桌面外壳 | 原生 **WebView** (`wry`) |
| 打包 | macOS `.app` + `.dmg`,包含代码签名与公证 |
## 从源码构建
```
cargo run --bin sniper-desktop # Desktop app
cargo run --bin sniper # Headless proxy + UI server
cargo run --bin sniper-cli # CLI
cargo test # Tests
./packaging/macos/release-macos.sh # macOS .app + .dmg
```
## 项目结构
```
src/
├── proxy.rs # Proxy core, HTTPS MITM, replay
├── api.rs # UI/API server (axum)
├── scanner.rs # Passive vulnerability scanner
├── session.rs # Session registry & snapshots
├── certificate.rs # Root CA generation & export
├── store.rs # HTTP transaction store
├── model.rs # Normalized data models
├── intercept.rs # Request intercept queue
├── match_replace.rs # Auto match & replace rules
├── fuzzer.rs # Payload fuzzer engine
├── websocket.rs # WebSocket capture
├── bin/
│ ├── sniper-desktop.rs # Native desktop shell (wry)
│ └── sniper-cli.rs # JSON-first CLI
web/ # Frontend SPA (vanilla JS/CSS)
packaging/
├── macos/ # .app & .dmg packaging scripts
└── skills/ # Claude & Codex skill templates
```
## 许可证
[MIT](LICENSE)标签:API调试, Bug Bounty, Elastic Stack, HTTPS解密, HTTP流量分析, LangChain, macOS应用, MITM, Rust, Web代理, 中间人攻击, 可自定义解析器, 可视化界面, 安全测试, 开源安全工具, 抓包工具, 攻击性安全, 数据可视化, 服务管理, 桌面应用, 流量重放, 网络截获, 网络流量审计, 自定义脚本, 请求伪造, 轻量级, 逆向工程平台