Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

exitlight

Find the exit. 🚪

Contact websites about your personal data, the fair and legitimate way.

License: MIT PyPI version Python 3.10+

✨ What is exitlight?

Every website handles privacy requests differently. Finding the correct contact method often takes longer than the request itself.

exitlight is a CLI tool that helps you find the right contact information to reach a website about your personal data (DSAR - Data Subject Access Request).

A common use case is exercising your data protection rights, such as requesting account deletion. Once you identify the appropriate contact email, you can manually send your data-related requests.

Given a website URL, it:

  1. discovers candidate links likely to be a Privacy Policy page
  2. visits those candidates (using a headless browser)
  3. extracts privacy-related contact methods (for now: email addresses)
  4. outputs a report you can use to contact the website about your personal data (JSON by default, or a plain-text email list)

🚀 Features

Core functionality

  • Finds and ranks privacy-policy candidates from the source page.
  • Extracts emails from both page text and mailto: links.
  • Produces a structured JSON report with per-candidate results and a consolidated email list.
  • Batch mode: process a file of URLs (one per line).

Responsible by design

  • Respects robots.txt by default (can be disabled for manual testing).
  • Applies a fixed delay between page visits to reduce server load (--delay).
  • Blocks images/media/fonts to reduce load (--no-resources-block to disable).
  • Uses a custom transparent default User-Agent with a CLI override (--user-agent).

📦 Installation

Requires Python 3.10+.

Install from PyPI

pip install exitlight

Install Playwright browser binaries (required on first install):

playwright install

⚡ Quick start

Show all options:

exitlight --help

Scan a single site and print the full JSON report:

exitlight example.com

Print only the consolidated email list (one per line):

exitlight example.com --format plain

Write JSON output to a file:

exitlight example.com --output report.json

Batch mode (one URL per line):

exitlight urls.txt --output batch.json

Notes:

  • exitlight respects robots.txt by default; use --ignore-robots for manual testing only.
  • If you need a different request identity, override the User-Agent via --user-agent.
  • Batch mode is intended for small, user-curated lists of websites.

🧾 Output

Example JSON output

{
  "input_url": "example.com",
  "source_url": "https://example.com",
  "final_url": "https://www.example.com/",
  "candidates": [
    {
      "url": "https://example.com/privacy",
      "source": "Privacy Policy",
      "score": 42,
      "emails": ["dpo@example.com", "privacy@example.com"]
    },
    {
      "url": "https://example.com/legal/privacy-notice",
      "source": "Privacy Notice",
      "score": 27,
      "emails": ["info@example.com"]
    }
  ],
  "emails": [
    {
      "email": "dpo@example.com",
      "candidate_urls": "https://example.com/privacy"
    },
    {
      "email": "info@example.com",
      "candidate_urls": "https://example.com/legal/privacy-notice"
    },
    {
      "email": "privacy@example.com",
      "candidate_urls": "https://example.com/privacy"
    }
  ],
  "stats": {
    "candidate_count": 2,
    "email_count": 3
  }
}

Plain text output

dpo@example.com
info@example.com
privacy@example.com

⚠️ Disclaimer

This project is provided for educational and personal use purposes.

The author does not take responsibility for how this software is used. Users are solely responsible for ensuring that their use of this tool complies with applicable laws, website Terms of Service, and robots.txt policies.

This tool accesses only publicly available pages and does not attempt to bypass authentication, paywalls, or anti-bot protections.

📄 License

MIT. See LICENSE.

About

A privacy-oriented CLI tool to discover legitimate contact methods for data access, deletion, or modification requests.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages