DPI Detector:网络流量审查检测工具
一款用于检测网络审查与 DPI 封锁的命令行工具,识别 TCP、TLS、HTTP、DNS 层面的封锁与连接中断。
- 浏览
- 4
- 访问
- 0
- 下载
- 0
- 版本
- v4.2.4
- 平台
- Windows、macOS、Linux
详细介绍
项目简介
DPI Detector 是一个用 Python 编写的网络审查检测工具,用于分析运营商对网站、主机商与 CDN 的封锁情况。它可以发现并分类各类阻断现象,包括 TCP 16-20KB 连接中断、TLS/SNI 封锁、HTTP 阻断以及 DNS 劫持与投毒,适合需要排查网络连通性、验证代理或翻墙工具效果的开发者与网络用户。
工具提供交互式菜单,也支持纯命令行参数运行;除源码外还提供 Windows、Linux、macOS 的预编译二进制,以及 Docker 镜像(含 Web 界面版本)。

主要功能
- TCP 16-20KB 封锁检测:发现连接到 CDN 与主机商时,在传输约 14–34KB 数据后连接被中断的现象。
- 白名单 SNI 探测:为 AS 主机商 / CDN 自动挑选可用的“白”SNI 域名。
- 被封锁网站可达性检测:分别测试 TLS 1.2、TLS 1.3 与 HTTP。
- DNS 检查:识别 UDP/53 拦截、IP 被替换为占位地址、DoH/DoT 被封锁等情况。
- 错误分类:区分 TCP RST、Connection Abort、握手/读取超时、TLS MITM、SNI 封锁等类型。
- 灵活配置:可在菜单中调整超时、自定义域名列表、DNS 服务器、IPv4/IPv6 以及并发数(1/5/20/50/100)。
安装与使用
Python 3.8+
依赖:httpx[socks,http2]>=0.28.1、rich>=14.3.2、PyYAML>=6.0.3。
git clone https://github.com/Runnin4ik/dpi-detector.git
cd dpi-detector
python -m pip install -r requirements.txt
启动:
python dpi_detector.py
# 或带参数运行
python dpi_detector.py -t 2 -d discord.com -p socks5://127.0.0.1:1080
Docker
docker run --rm -it --pull=always ghcr.io/runnin4ik/dpi-detector:latest
Web 界面版本:
docker run -d --name dpi-detector-web -p 7681:7681 --restart unless-stopped ghcr.io/runnin4ik/dpi-detector:web
启动后在浏览器打开 http://<服务器IP>:7681 或 http://localhost:7681。
Windows / Linux / macOS
从 releases 页面下载对应平台的二进制文件后直接运行,例如 Linux x86_64:
curl -fsSLO https://github.com/Runnin4ik/dpi-detector/releases/download/v4.2.4/dpi_detector_v4.2.4_linux_x86_64 && chmod +x dpi_detector_v4.2.4_linux_x86_64 && ./dpi_detector_v4.2.4_linux_x86_64
macOS 版本未做公证,运行前需用 xattr -cr <文件> 解除系统隔离。
Android(Termux)/ iOS(a-Shell)
在 Termux 中安装 git python clang make 后克隆仓库、pip install -r requirements.txt 并运行 python dpi_detector.py。在 a-Shell 中不支持交互模式,需改用带参数的方式,例如:
python dpi_detector.py -t 123 --batch
常用命令行参数
| 参数 | 说明 |
|---|---|
-t, --tests |
指定测试编号,跳过菜单,如 -t 123 |
-p, --proxy |
使用代理,如 -p socks5://127.0.0.1:1080 |
-d, --domain |
只检查指定域名,忽略 domains.txt |
-c, --concurrency |
并发请求数 |
-o, --output |
将日志自动保存到指定文件 |
--batch |
关闭所有交互提问与暂停 |
自定义配置
可覆盖以下文件(二进制版本放在可执行文件同目录,Docker 版本通过 -v 挂载):
domains.txt:要检测可用性的域名列表tcp16.json:TCP 16-20KB 检测的目标与端口config.yml:超时、DoH 服务器等参数whitelist_sni.txt:用于 SNI 探测的白名单域名
注意事项
- 若本机正在运行 zapret、GoodbyeDPI 等绕过封锁的工具,测试结果会被干扰。要了解运营商过滤的真实情况,请先关闭这些工具,或确认其运行在“处理全部数据包(ALL)”模式,而非仅按列表处理。
- a-Shell 中无法使用交互式菜单,必须通过
-t指定测试并加上--batch。 - Termux 请从 F-Droid 或 GitHub Releases 安装,Google Play 版本已过期且不受支持。
- 项目以 MIT 许可证开源。
本作品整理自 GitHub 开源项目 Runnin4ik/dpi-detector,原作者 @Runnin4ik,许可证 MIT。中文介绍由 AI 根据项目 README 整理,以原仓库为准。
更新记录
- v4.2.4当前版本
修复在 Windows 7 上的启动问题。
评论