Skip to content

Repository files navigation

🕵️‍♂️ Exposur

Discover What the Internet Already Knows About You.

License: MIT TypeScript Vercel Next.js Express

Explore Documentation · Report Bug · Request Feature


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.


📖 Table of Contents


✨ Core Features

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.

🛠️ Technical Highlights (Why I Built This)

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.

🏗️ System Architecture

Exposur is designed as a polyglot monorepo deployed seamlessly via Vercel Services.

System Architecture

🚀 Quick Start

Get Exposur running locally in minutes.

1. Installation

From the root workspace directory, install all dependencies:

npm install

2. Compile Intelligence Datasets

Generate 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 --force

3. Start Development Server

Run the full stack (Frontend & Backend):

npm run dev

Visit http://localhost:3000 to view the application.


📚 Documentation Hub

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.

🤝 Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'feat: Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Please refer to our Contributing Guide for more details.


📄 License

Distributed under the MIT License. See LICENSE for more information.


Built with ❤️ for privacy and security.

About

Exposur helps users discover what their browser, device, and network reveal during everyday web browsing through digital footprint, fingerprinting, network, and privacy intelligence analysis.

Resources

Contributing

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages