Discord proxy/DPI bypass via WinDivert + SOCKS5 on Go
  • Go 91.9%
  • Inno Setup 8.1%
Find a file
root 4e19d8eeb1
Some checks failed
Build / test (push) Successful in 18s
Build / build-windows (push) Successful in 6s
Release / release (push) Failing after 1m9s
release.yml: install Inno Setup via innoextract (no Wine GUI install)
Previous attempt (rc1, rc2) tried to run innosetup-6.7.1.exe under
xvfb-run wine /VERYSILENT — silently failed (|| true masked it),
ISCC.exe never appeared at C:\InnoSetup\ISCC.exe.

Switch strategy: apt-get install innoextract (Debian package), use
it to unpack the Inno Setup installer's payload directly to disk,
then copy the extracted Inno Setup tree into the Wine prefix where
ISCC.exe can be invoked normally. Wine is still needed to run ISCC
itself, but no longer for the install step.

Also: ignore /.claude/ directory (local Claude Code session settings).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 01:44:05 +03:00
.forgejo/workflows release.yml: install Inno Setup via innoextract (no Wine GUI install) 2026-05-01 01:44:05 +03:00
cmd/drover Implement internal/updater: selfupdate via Forgejo Releases API 2026-05-01 00:20:24 +03:00
docs Add directory skeleton and CLI entry point with Cobra 2026-05-01 00:10:30 +03:00
installer Add installer/installer.iss (Inno Setup 6 minimal) 2026-05-01 00:23:24 +03:00
internal Implement internal/updater: selfupdate via Forgejo Releases API 2026-05-01 00:20:24 +03:00
third_party Embed WinDivert v2.2.2 (x64) in third_party/windivert/ 2026-05-01 00:12:16 +03:00
.gitattributes .gitattributes: LF-by-default + CRLF for .bat/.ps1, mark binaries 2026-05-01 00:07:17 +03:00
.gitignore release.yml: install Inno Setup via innoextract (no Wine GUI install) 2026-05-01 01:44:05 +03:00
go.mod Implement internal/updater: selfupdate via Forgejo Releases API 2026-05-01 00:20:24 +03:00
go.sum Implement internal/updater: selfupdate via Forgejo Releases API 2026-05-01 00:20:24 +03:00
LICENSE Initial commit: README, LICENSE (MIT), .gitignore, go.mod 2026-05-01 00:06:51 +03:00
README.md Initial commit: README, LICENSE (MIT), .gitignore, go.mod 2026-05-01 00:06:51 +03:00

Drover-Go

Discord proxy / DPI bypass tool. Routes Discord traffic through a SOCKS5 proxy via kernel-level packet capture (WinDivert), bypassing the limitations of in-app proxy settings and surviving Discord auto-updates.

What it solves

Discord doesn't support proxies for voice/video traffic. Existing DLL-injection tools (drover, discord-voice-proxy) modify Discord.exe, which:

  • triggers antivirus heuristics (unsigned DLL injecting into a popular app),
  • breaks every time Discord auto-updates,
  • doesn't proxy Update.exe itself, so the updater fails when Discord servers are blocked.

Drover-Go uses WinDivert — a Microsoft-signed kernel driver — to capture packets at the network stack level. No modification of Discord, works for any Discord variant (Stable/Canary/PTB/Vesktop), survives auto-updates, minimal AV detection.

Status

Pre-alpha. See implementation plan for details.

How it works

Discord.exe (unmodified)
    ↓ TCP/UDP
WinDivert.sys (kernel filter)
    ↓ matched packets
drover.exe (Go)
    ├── TCP redirect to local SOCKS5 listener  →  SOCKS5 CONNECT  →  upstream proxy
    └── UDP encapsulation (RFC 1928)           →  SOCKS5 UDP ASSOCIATE  →  upstream proxy

For UDP voice that's blocked even via SOCKS5 (DPI on the proxy's TCP control channel), drover-go injects a fake QUIC initial packet (à la zapret-discord-youtube) before forwarding — DPI sees "QUIC to Google" instead of Discord media.

Requirements

  • Windows 10 1903+ or Windows 11 (x64). ARM64 not supported by WinDivert.
  • Administrator privileges for first run (driver install).
  • Upstream SOCKS5 proxy with UDP ASSOCIATE support (e.g. mihomo, sing-box).

Install

Download the latest release from releases:

  • drover-vX.Y.Z-setup.exe — installer with Start Menu shortcut, registers in Apps & Features for clean uninstall.
  • drover-vX.Y.Z-windows-amd64.zip — portable, just unzip and run.

Verify SHA256 against SHA256SUMS.txt in the same release.

License

MIT for our code. WinDivert (embedded) is LGPL-3.0.

Acknowledgements