⭐欢迎提交PR或任何形式的贡献⭐
SpoofDPI
其他语言版本: 🇬🇧英语, 🇰🇷韩语, 🇨🇳简体中文, 🇷🇺俄语, 🇯🇵日语
一个简单快速的软件,用于绕过深度包检测
安装
二进制文件
SpoofDPI 将安装在 ~/.spoof-dpi/bin
目录下。
要在任何目录运行 SpoofDPI,请将以下行添加到您的 ~/.bashrc || ~/.zshrc || ...
文件中
export PATH=$PATH:~/.spoof-dpi/bin
# macOS Intel
curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s darwin-amd64
# macOS Apple Silicon
curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s darwin-arm64
# linux-amd64
curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s linux-amd64
# linux-arm
curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s linux-arm
# linux-arm64
curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s linux-arm64
# linux-mips
curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s linux-mips
# linux-mipsle
curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s linux-mipsle
Go
您也可以使用 go install
安装 SpoofDPI
$ go install github.com/xvzc/SpoofDPI/cmd/spoof-dpi@latest
Git
您也可以自行构建
$ git clone https://github.com/xvzc/SpoofDPI.git
$ cd SpoofDPI
$ go build ./cmd/...
使用方法
用法: spoof-dpi [选项...]
-addr string
监听地址 (默认 "127.0.0.1")
-debug
启用调试输出
-dns-addr string
DNS 地址 (默认 "8.8.8.8")
-dns-port int
DNS 端口号 (默认 53)
-enable-doh
启用 'DNS-over-HTTPS'
-no-banner
禁用横幅
-pattern value
仅在匹配此正则表达式模式的数据包上绕过 DPI;可多次给出
-port int
端口 (默认 8080)
-system-proxy
启用系统范围的代理 (默认为 true)
-timeout int
超时时间(毫秒);不设置则无超时
-v 打印 spoof-dpi 的版本;可能包含一些其他相关信息
-window-size int
分片客户端 hello 的块大小(字节数),
如果默认值无法绕过 DPI,请尝试较小的值;
不设置时,客户端 hello 数据包将分两部分发送:
第一个数据包进行分片,其余部分一起发送
如果您在 Chrome 浏览器中使用任何 VPN 扩展(如 Hotspot Shield), 请转到设置 > 扩展程序,并禁用它们。
OSX
运行 spoof-dpi
,它将自动设置您的代理
Linux
运行 spoof-dpi
,并使用代理选项打开您喜欢的浏览器
google-chrome --proxy-server="http://127.0.0.1:8080"
工作原理
HTTP
由于世界上大多数网站现在都支持 HTTPS,SpoofDPI 不会绕过 HTTP 请求的深度包检测,但它仍然为所有 HTTP 请求提供代理连接。
HTTPS
尽管 TLS 加密了每个握手过程,但域名仍然以明文形式显示在客户端 hello 数据包中。 换句话说,当其他人查看数据包时,他们可以轻易猜到数据包的目的地。 域名可以在进行 DPI 时提供重要信息,我们实际上可以看到连接在发送客户端 hello 数据包后立即被阻止。 我尝试了一些方法来绕过这个问题,发现当我们将客户端 hello 数据包分成多个块发送时,似乎只有第一个块被检查。 SpoofDPI 为绕过这个问题所做的是先向服务器发送请求的第一个字节, 然后发送剩余部分。
灵感来源
Green Tunnel 作者 @SadeghHayeri GoodbyeDPI 作者 @ValdikSS