root 1c1ab566d9
Build / test (push) Failing after 29s
Build / build-windows (push) Has been skipped
internal/gui: wire real checker.Run + CancelCheck binding + RawHex display
- RunCheck now drives internal/checker.Run instead of the fake 7-step
  sleep loop. Streams checker.Result events as "check:result" with
  Duration converted to milliseconds; emits "check:done" summary on
  channel close. Re-running while a check is in flight cancels the
  previous run and waits for its goroutine to drain so two emitter
  goroutines never race on event order.
- New CancelCheck method (no-op when nothing is running) is bound
  through wailsjs/go/gui/App.js and surfaced in useDrover as
  cancelCheck() with a "check cancelled by user" log line.
- Classic.jsx: while phase==='checking', the Check button collapses to
  a disabled "Checking…" pill side-by-side with a Cancel button (uses
  Stop's secondary visual weight, t.danger on hover). The expanded
  failure row now renders r.rawHex (truncated to 64 chars) on its own
  mono line and the copy button includes raw=<hex> when present.
- CheckResult struct gains RawHex (json:"rawHex") and Attempt fields.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 16:13:02 +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

S
Description
Discord proxy/DPI bypass via WinDivert + SOCKS5 on Go
Readme MIT 7.4 MiB
2026-05-01 03:58:49 +03:00
Languages
Go 74.6%
JavaScript 18%
NSIS 5.1%
Inno Setup 1.3%
CSS 0.7%
Other 0.3%