一、开源项目简介

Snitch

追踪每一个隐藏的网络连接。

Snitch 是一个开源的实时网络流量可视化工具,可以查看电脑建立的每一个连接:连接了谁、对方在哪里、由哪个应用程序发起。

二、开源协议

使用AGPL-3.0开源协议

三、界面展示

四、功能概述

Snitch 是一款实时网络流量可视化工具。 看清电脑的每一个连接——连接了谁、对方在哪里、由哪个应用发起。

整个界面提供 ​English、Français、Español、Deutsch、Русский、日本語、Português (BR) 和 简体中文​:使用右上角工具栏中的语言选择器切换。

为什么选择 Snitch?

  • 对比 Little Snitch / Lulu —— 同样的思路(按应用可视化+出站阻断规则),但 Snitch 跨平台、免费且开源。阻断通过操作系统原生防火墙(netsh / iptables / pf)编排——Snitch 绝不在用户态做包过滤。
  • 对比 GlassWire —— Snitch 免费、开源(AGPL)、无需账号,且默认​零对外请求​;连地理定位都是离线的。
  • 对比 Wireshark —— Snitch 提供任何人都能读懂的实时高层概览,而不是原始数据包剖析。
  • 对比云端监控方案 —— 一切运行在 127.0.0.1 并受令牌保护;你的流量数据永远不会离开本机。

功能特性

功能 说明
力导向图 实时节点图——你的机器居中,每个连接是一个节点
世界地图 地理定位的 IP 在可交互地球仪上以动画弧线展示
15/30/60 分钟时间线 本地 SQLite 滑动历史(保留 24 小时)
异常检测 标记端口扫描、beaconing(固定间隔 C2)、潜在数据外泄
高级检测 DNS 隧道启发式、明文端口、按应用的国家基线偏离
防火墙编排 阻断规则(IP/CIDR/域名/进程/端口)下发到 OS 防火墙——netsh/iptables/pf,持久化,按规则计数被拦次数
Lockdown 模式 应急开关——标记并阻断所有出站公网流量,局域网保持可用
事件响应 结束/挂起进程、阻断 IP——从连接详情一键操作
威胁情报 选择性开启的信誉查询(AbuseIPDB / AlienVault OTX / VirusTotal),使用你自己的 API 密钥——默认关闭,结果本地缓存
安全审计 内置加固报告——评分、发现项、通俗语言建议
取证导出 一键调查包——进程树+二进制 SHA-256、历史与关联告警(JSON/CSV/STIX)
Webhook 告警 选择性开启将 warning/critical 告警实时转发到 Discord、Slack、Telegram 或任意端点
进程归属 知道哪个应用产生了哪份流量(每个连接 Top 5)
LAN 扫描器 通过系统 ARP 表被动发现(无广播扫描)
隐私评分 出站流量暴露度的实时评分
按应用视图 按进程展示目的地、流量与 60 分钟历史
告警抑制 持久化的「忽略主机/类型」规则,可在 UI 中管理
设置面板 语言、保留期、过滤器、需同意的 GeoIP 下载、诊断
跟踪器检测 后缀匹配域名列表,以可编辑数据文件提供(backend/classifier/lists/)
带宽监控 实时 MB/s 迷你曲线
8 语言 UI EN · FR · ES · DE · RU · JA · PT-BR · ZH-CN——一键切换,语言包位于frontend/src/locales/
浅色/深色主题 默认跟随系统,手动切换会被记住
自动更新 桌面应用检查 GitHub Releases(可在设置中关闭;SNITCH_NO_UPDATE=1)
QUIC / HTTP/3 UDP/443 流如实标注——QUIC 的 SNI 已加密,绝不读取
监视列表 固定 IP/域名——流量一旦触碰立即发出专属告警
上传峰值告警 按进程 MB/分钟上限,阈值可调
网卡选择器 选择监听哪块网卡——无需环境变量
Wi-Fi 上下文 当前 SSID 显示在工具栏
导出 图+告警一键导出 JSON/CSV

五、技术选型

开发

要求:Python 3.11+、Node.js 18+、Npcap(仅 Windows)、后端需要管理员终端。

演示模式 —— SNITCH_DEMO=1 让合成流量走真实管线:无需 root、无需 libpcap、不接触真实包。适合截图与测试。

cd backend && pip install -r requirements.txt && python run_backend.py
cd frontend && npm install && npm run dev   # http://localhost:5173/?token=令牌
cd electron && npm install && VITE_DEV=1 npx electron .

测试:

cd backend && pip install -r requirements-dev.txt && python -m pytest tests/ -v
cd frontend && npm test

项目结构

snitch/
├── backend/       FastAPI + libpcap 捕获(ctypes,自研解析器)
├── frontend/      React + D3.js UI(8 种语言)
├── electron/      Electron 封装(main、splash、preload)
├── data/          运行时数据(SQLite、geo/ 下的 .mmdb)
└── dist/          编译产物(后端 exe、安装器)

六、源码地址

开源项目地址:

https://github.com/aixisstudio/Snitch