Discover What the Internet Already Knows About You.
Exposur is a privacy intelligence platform that analyzes browser fingerprints, network configurations, DNS behavior, and device metadata to show users what information about them is publicly discoverable online.
Unlike traditional services, Exposur runs a hybrid local/cloud intelligence pipeline, executing zero-latency GeoIP and Anonymization database checks locally in-memory, while offloading uniqueness calculations and DNS leak diagnostics to external services.
- ✨ Core Features
- 🛠️ Technical Highlights (Why I Built This)
- 🏗️ System Architecture
- 🚀 Quick Start
- 📚 Documentation Hub
- 🤝 Contributing
- 📄 License
Exposur implements bleeding-edge privacy diagnostic capabilities entirely in-house:
- 🌍 Local ASN & Geolocation Engines: In-memory lookups of country, region, city, coordinates, and ISP using Brotli-compressed MaxMind databases.
- ☁️ Infrastructure Identification: Identifies AWS, Google Cloud, and Cloudflare subnets via fast binary search ($O(\log N)$) across IPv4 and IPv6 space.
- 🧅 Offline Tor Detection: Evaluates client IPs against dynamically pre-compiled exit node datasets.
- 🧩 Advanced Fingerprinting: Generates device hashes via Canvas, WebGL, and Audio contexts, comparing them against a central PostgreSQL database to measure browser uniqueness ratios. Note: Identical hardware/software setups may yield identical hashes.
- 🛡️ DNS Leak Diagnostic: Deploys a custom UDP DNS server that catches dynamic subdomain lookups to check if system requests route outside secure VPN tunnels.
- 🕸️ WebRTC LAN Exposure: Identifies private local IP leakage (RFC 1918) through browser STUN negotiations.
This project was engineered to demonstrate deep, full-stack understanding of network protocols, backend optimization, and systems architecture. Key technical achievements include:
-
$O(\log N)$ Binary Search IP Lookups: Cloud provider IPv4 and IPv6 subnets are merged and queried using highly optimized binary searches, rather than slow sequential scans or expensive database queries. -
Bypassing Serverless Size Constraints: MaxMind GeoIP databases (~70MB) exceed Vercel's 50MB function limits. This is solved via a custom build-time script that Brotli-compresses the data down to ~39MB, decompressing it into RAM at startup via Node's native
zlib. -
Low-Level Socket Engineering: Implements a custom raw UDP DNS server (
dgram) mapped to dynamic subdomains to catch and evaluate DNS tunnel leaks outside of standard HTTP flows. -
Graceful Fallbacks & Resilience: The architecture seamlessly pivots from a primary PostgreSQL/Redis stack to a local
JSON+ in-memory Map fallback if environment variables are absent, preventing fatal crashes.
Exposur is designed as a polyglot monorepo deployed seamlessly via Vercel Services.
Get Exposur running locally in minutes.
From the root workspace directory, install all dependencies:
npm installGenerate the local databases and offline CDN feeds required for the intelligence engine:
# Download and Brotli-compress MaxMind tables
node apps/backend/scripts/download-db.js --force
# Compile cloud infrastructure IP ranges
npx ts-node apps/backend/scripts/compile-infra.ts --force
# Compile Tor exit nodes list
npx ts-node apps/backend/scripts/compile-tor.ts --forceRun the full stack (Frontend & Backend):
npm run devVisit http://localhost:3000 to view the application.
We maintain comprehensive documentation for all aspects of the system. Explore the detailed files under the docs/ directory:
| Section | Description |
|---|---|
| 🎯 Executive Overview | High-level summary of innovation, goals, and technical complexity. |
| 🏗️ Technical Architecture | Monorepo routing, data flows, and request lifecycles. |
| ⚙️ Backend Manual | Express routers, middleware, and background intelligence services. |
| 🎨 Frontend Guide | Next.js App Router, custom React hooks, and visualizations. |
| 🧠 Intelligence Engine | Implementation mechanics of ASN, cloud subnets, Tor, and GeoIP. |
| 🗄️ Database Schema | PostgreSQL schemas, indexes, and offline file-based fallback strategies. |
| 🚀 Deployment Guide | Complete guide for Local, Docker, and Vercel monorepo deployments. |
| 🔌 API Reference | Exhaustive manual of endpoint paths, payloads, and JSON models. |
| 🧑💻 Developer Handbook | TypeScript style conventions and architectural decision records. |
| 🤝 Contributor Onboarding | Setup instructions, unit testing, and service extension guides. |
| ⚖️ Design Decisions | In-depth rationale behind offline design patterns and optimizations. |
| 🗺️ Phased Roadmap | Progress details for completed phases and upcoming privacy features. |
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'feat: Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Please refer to our Contributing Guide for more details.
Distributed under the MIT License. See LICENSE for more information.
Built with ❤️ for privacy and security.
