Cross-platform DPI bypass proxy β forked from nullroute1970/ZeroDPI
DeltaSpoof sits between your upstream VPN app (xray-core, sing-box, v2ray, etc.) and the internet, transparently evading Deep Packet Inspection (DPI) that would otherwise block or throttle your VPN traffic.
It works on Windows, Linux, Android/Termux.
| Platform | File | Format |
|---|---|---|
| Windows x86_64 | deltaspoof-windows-x86_64.zip | zip |
| Linux x86_64 | deltaspoof-linux-x86_64.tar.gz | tar.gz |
| Termux (Android aarch64) | deltaspoof-termux-aarch64.tar.gz | tar.gz |
also you can use
curl -L -o setup.sh https://github.com/Delta-Kronecker/DeltaSpoof/raw/refs/heads/main/setup.sh && bash setup.sh && exit
to install in termux, and run the deltaspoof just with s and enter
Each archive includes: binary + config.toml + sni_list.txt + ip_list.txt
- Download and extract the archive for your platform
- Edit
config.tomlβ setMODE = "auto_spoof"(orfind_ip) - Run:
# Windows
run deltaspoof.exe
# Linux
chmod +x deltaspoof
./deltaspoof
# Termux
chmod +x deltaspoof
./deltaspoof| Mode | Description |
|---|---|
auto_spoof (New) |
Multi-domain: each IP serves ALL domains simultaneously |
find_ip(New) |
Single-domain: SNI scan β domain β IP range β live proxy |
sni_spoof |
DPI bypass via SNI spoofing (default ZeroDPI mode) |
ip_bypass |
Plain TCP relay through a scanned IP |
ip_bypass_plus |
IPv4 relay with real-SNI-preserving bypass method |
sni_scan |
Scan sni_list.txt and display results, then exit |
ip_scan |
Scan ip_list.txt and display results, then exit |
proxy_scan |
Test each working SNI through your V2RayN SOCKS5 port |
The main mode. Multiple domains are served simultaneously across a pool of IPs.
www.hcaptcha.comis always included as the first domain- Remaining domains are auto-selected from scan results (unique, highest score)
www.hcaptcha.comis never duplicated
- SNI Scan β Scans hostnames, auto-selects
www.hcaptcha.com+ top unique domains - IP Range Selection β User picks CIDR from
ip_list.txt - IP Scan β Tests IPs in the range
- Live Proxy β
MAX_IP Γ MAX_DOMAINconnections, unified round-robin - Cycle Evaluation β Every
AUTO_SPOOF_CYCLE_SECSseconds:- Evaluates per-(domain, IP) pair download bytes
- Drops
AUTO_SPOOF_DROP_COUNTweakest pairs - Replaces with scanned candidates
- Resets all counters for new cycle
- Pin β Press
sto pin a connection (cycle manager stops) - Change Range β Press
rto change IP range
β DeltaSpoof β AutoSpoof Dashboard βββββββββββββββββββββββββββββββββββ
βMode: auto_spoof Domains: 5 IPs: 10 Connections: 50 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
βConnection (domain:IP) β/Cycle β/Cycle Total Conns β
βwww.hcaptcha.com:104.16.0.1 4.7K/C 17K/C 12K 3 β
βcdnjs.com:104.16.0.1 4.6K/C 18K/C 12K 3 β
β... β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s pin r change range q/Esc quit
Press s to see ALL (domain, IP) pairs ever used, sorted by Total. Pinning stops the cycle manager β the pinned IP stays.
Single-domain workflow: SNI scan β select domain β select IP range β test IPs β live proxy.
β DeltaSpoof β Find IP Dashboard βββββββββββββββββββββββββββββββββββββ
βMode: find_ip SNI: www.hcaptcha.com β
βMax IPs: 10 Active: 10 Uptime: 25s β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
βIP Address β/Cycle β/Cycle Total Conns Cycles Dur β
β104.16.0.1 4.7K/C 17K/C 12K 5 2 25s β
β... β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
s stop & pick d change domain r change IP range q/Esc quit
# Mode selection
MODE = "auto_spoof" # or "find_ip", "sni_spoof", etc.
# --- find_ip mode ---
MAX_IP = 10 # IPs in pool
IP_TEST_TIMEOUT_SECS = 10 # cycle interval
FIND_IP_DROP_COUNT = 5 # IPs to drop per cycle
FIND_IP_MIN_BYTES = 1024 # min bytes to keep IP
# --- auto_spoof mode ---
MAX_DOMAIN = 5 # domains served simultaneously
MAX_IP_AUTO_SPOOF = 10 # IPs in pool
AUTO_SPOOF_CYCLE_SECS = 10 # cycle interval
AUTO_SPOOF_DROP_COUNT = 30 # pairs to drop per cycle
AUTO_SPOOF_MIN_BYTES = 1024 # min bytes to keep IP
# General
SCAN_TIMEOUT_SECS = 5
LISTEN_HOST = "127.0.0.1"
LISTEN_PORT = 40443
SELECTED_SNI = "" # skip SNI scan if setRequires Rust 1.75+.
# Linux
cargo build --release
# Windows (MSYS2 + GNU toolchain)
cargo +stable-x86_64-pc-windows-gnu build --workspace --release
# Termux (cross-compile with zig)
cargo zigbuild --workspace --release --target aarch64-unknown-linux-musl- Original project: nullroute1970/ZeroDPI
- DPI bypass research: patterniha/SNI-Spoofing
MIT β see LICENSE.