Skip to main content

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

Project description

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?

exitlight is a CLI tool that helps you find the right contact information to contact a website about your personal data (DSAR - Data Subject Access 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.

⚠️ 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

exitlight-0.0.1.tar.gz (17.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

exitlight-0.0.1-py3-none-any.whl (24.4 kB view details)

Uploaded Python 3

File details

Details for the file exitlight-0.0.1.tar.gz.

File metadata

  • Download URL: exitlight-0.0.1.tar.gz
  • Upload date:
  • Size: 17.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for exitlight-0.0.1.tar.gz
Algorithm Hash digest
SHA256 26707fb893e1e4d1d85f20035c8882d22c117bcc168d71b3e74b72bf079ba4f5
MD5 eacc172d953476780be978f0ab7fc1ab
BLAKE2b-256 e7e0325091c6ee96585ae9dd2fa3991863c8af9e8a25e1a1e96323d850626887

See more details on using hashes here.

File details

Details for the file exitlight-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: exitlight-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 24.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for exitlight-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2747df742b9f1aa6ada9490bb1ba31a5ab73ad15025583e1259efe7b97b0488e
MD5 6b1a8be89b7244479dfba9563e87657c
BLAKE2b-256 41f35b51070c3b043aca06dcdf48f4af8826c8c3a3a06fe7bfe687025f0cad1e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page