A geo-aware secure browser that masks your identity and location with one click. Built on Tor and residential proxies with zero-config leak prevention.
Shroud lets you pick any country on an interactive world map and instantly routes all your traffic through it — masking your IP, blocking WebRTC leaks, encrypting DNS, and spoofing your timezone and locale headers. No manual proxy configuration. No exposed identity.
- One-click geo routing — select a country, connect, browse
- Hybrid routing engine — residential SOCKS5 proxies for speed, Tor exit nodes for broad coverage
- Zero-leak guarantee — WebRTC blocked, DNS-over-HTTPS enforced, timezone and locale spoofed, canvas noise injected
- Live country switching — switch location mid-session without disconnecting
- Visual routing map — countries color-coded by routing quality (green = dedicated node, amber = Tor)
- Searchable country list — find and connect to any of 50+ countries instantly
| Color | Meaning | Protocol | Speed |
|---|---|---|---|
| 🟢 Green | Dedicated residential proxy | SOCKS5 | Fast |
| 🟡 Amber | Tor exit node | Tor SOCKS5 | Moderate |
| ⚫ Grey | No coverage | — | — |
shroud/
├── main/
│ ├── index.js ← Electron main process (orchestrator)
│ ├── torController.js ← Tor binary lifecycle + circuit switching
│ ├── proxyManager.js ← Webshare SOCKS5 proxy pool
│ └── leakPrevention.js ← WebRTC/DNS/locale hardening
├── renderer/
│ ├── src/
│ │ ├── App.jsx ← Root component + state
│ │ ├── styles.css ← Dark UI stylesheet
│ │ ├── data/countries.js ← Country + routing tier data
│ │ └── components/
│ │ ├── WorldMap.jsx ← Interactive SVG map (d3-geo)
│ │ ├── CountryList.jsx ← Searchable country list
│ │ ├── CountryPanel.jsx ← Selected country + connect button
│ │ └── StatusBar.jsx ← Status bar + browser bar
│ └── index.html
├── preload/
│ ├── preload.js ← IPC bridge + fingerprint spoofing
│ └── browserPreload.js ← WebRTC killer injected before page load
└── tor/
├── bin/
│ ├── windows/ ← tor.exe goes here
│ ├── linux/ ← tor binary goes here
│ ├── macos/ ← tor binary goes here
│ └── geoip/ ← geoip + geoip6 files go here
- Node.js 18+
- Tor Expert Bundle (for bundled binary) — or system Tor daemon
git clone https://github.com/userIssa/shroud
cd shroud
npm installDownload the Tor Expert Bundle for your platform from https://www.torproject.org/download/tor/
Place the binary and GeoIP files:
# Windows
tor/bin/windows/tor.exe
tor/bin/geoip/geoip
tor/bin/geoip/geoip6
# Linux
tor/bin/linux/tor
chmod +x tor/bin/linux/tor
# macOS
tor/bin/macos/tor
chmod +x tor/bin/macos/tor
Free residential proxies via Webshare — no credit card required.
# Windows
set WEBSHARE_API_KEY=your_key_here
# Linux / macOS
export WEBSHARE_API_KEY=your_key_hereWithout a Webshare key, Shroud falls back to Tor-only routing for all countries.
npm startEvery session gets:
| Vector | Protection |
|---|---|
| WebRTC | RTCPeerConnection overridden before page load via preload script |
| DNS | Encrypted via session proxy routing |
| Timezone | Intl.DateTimeFormat overridden to match target country |
| Language | Accept-Language header spoofed + navigator.language overridden |
| Canvas | Pixel-level noise injected to defeat fingerprinting |
| IP headers | X-Forwarded-For, Via, Forwarded stripped from requests |
# Windows installer (.exe)
npm run dist:win
# Linux AppImage + .deb
npm run dist:linux
# macOS .dmg (must build on macOS)
npm run dist:macOutput goes to dist-build/.
| Layer | Technology |
|---|---|
| Browser shell | Electron + Chromium |
| UI framework | React 18 |
| Map rendering | D3-geo + world-atlas topojson |
| Tor integration | Bundled Tor binary + control port |
| Proxy management | Webshare API |
| Bundler | Webpack 5 + Babel |
| Packaging | electron-builder |
Tolu "Issa" Oderinde (@userIssa) — CEH, Cybersecurity Engineer
LinkedIn: linkedin.com/in/toluwanimi-oderinde