iakshkhurana/outbounds
GitHub: iakshkhurana/outbounds
一个本地出站网络可见性工具,通过捕获连接元数据让用户查看设备与外部目的地的通信情况、DNS故障及延迟问题。
Stars: 0 | Forks: 0
# 出站流量
**查看你的设备究竟在与谁进行通信。**
针对出站目的地、DNS 故障、延迟问题以及意外连接的本地网络可见性。
**仅限元数据** — 不进行 TLS 解密。
## 架构
```
sniffer ──events──► api (:4000) ──REST──► web (:3000)
▲
sample-data (replay)
```
| 服务 | 角色 |
|---|---|
| `web/` | Next.js 产品 UI |
| `services/api/` | 接收、风险、查询、演示重放、报告 |
| `services/sniffer/` | 试运行或实时 (Scapy) 捕获 worker |
```
flowchart LR
sniffer[sniffer] -->|JSON events| api[api :4000]
sample[sample-data] -->|replay| api
api -->|REST| web[web :3000]
```
## 快速演示
```
# 终端 1
cd services/api && cp .env.example .env && npm install && npx prisma db push && npm run dev
# 终端 2
cd web && cp .env.example .env.local && npm install && npm run dev
```
打开 http://localhost:3000 → **重放示例** (Replay sample)。
或者:
```
docker compose up --build
```
## 运行详情
### API (`:4000`)
```
cd services/api
cp .env.example .env
npm install
npx prisma generate
npx prisma db push
npm run dev
```
```
curl -X POST http://localhost:4000/api/demo/replay -H "content-type: application/json" -d "{}"
```
### Web (`:3000`)
```
cd web
cp .env.example .env.local
npm install # or pnpm install
npm run dev
```
### Sniffer — 实时 Chrome(在宿主机上运行)
PowerShell:
```
cd services/sniffer
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
copy .env.example .env
python main.py
```
默认 `MODE=connections` = 真实的 OS sockets(你的 Chrome 流量)。不要为此使用 Docker sniffer。如果你只想要实时数据,请跳过“重放示例”。
**Windows 注意事项:** 不要在 `:4000` 上同时为 API 运行 `npm run dev` 和 `docker compose` API。两个监听器会分流流量——当 sniffer 看起来仍然正常时,UI 却显示离线 / 0 个事件。建议使用 Docker API + 宿主机 sniffer,并在 sniffer/web 环境中使用 `http://127.0.0.1:4000`(而不是 `localhost`)。
请参阅 [`services/sniffer/README.md`](services/sniffer/README.md)。
### Docker Compose
```
# 仅 Web + API — 然后在另一个终端运行 host sniffer
docker compose up --build
docker compose --profile sniffer up --build # optional; cannot see host Chrome
```
### 冒烟测试(API 必须正在运行)
```
.\scripts\smoke.ps1
```
```
chmod +x scripts/smoke.sh && ./scripts/smoke.sh
```
## 截图
将 PNG 添加到 [`docs/screenshots/`](docs/screenshots/) 目录下(`overview.png`、`host-detail.png`、`report.png`),然后取消注释:
```
```
## 文档
| 文档 | 用途 |
|---|---|
| [overview.md](docs/overview.md) | 产品摘要 |
| [prd.md](docs/prd.md) | 需求 |
| [architecture.md](docs/architecture.md) | 系统设计 |
| [data-model.md](docs/data-model.md) | Schema 与风险规则 |
| [api.md](docs/api.md) | HTTP API |
| [stack.md](docs/stack.md) | 技术选择 |
| [conventions.md](docs/conventions.md) | 工程规范 |
| [decisions.md](docs/decisions.md) | 设计决策 |
| [testing.md](docs/testing.md) | 测试策略 |
| [todo.md](docs/todo.md) | 构建顺序 |
## 限制
- 不是防火墙、IDS 或 MITM 代理
- 进程归因为尽力而为(best-effort)
- Windows 实时捕获可能需要 Npcap 和提权
- v1 版本中为单机 SQLite
## 许可证
**保留所有权利** — 仅用于作品集/求职展示。
请参阅 [`LICENSE`](LICENSE)。允许查看和本地评估;但不允许将此作品作为你自己的作品进行复制或重用。
标签:MITM代理, Scapy, 自动化攻击, 请求拦截, 运维监控, 逆向工具