✨ 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:
- discovers candidate links likely to be a Privacy Policy page
- visits those candidates (using a headless browser)
- extracts privacy-related contact methods (for now: email addresses)
- 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.txtby 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-blockto 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:
exitlightrespectsrobots.txtby default; use--ignore-robotsfor 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.
Metadata
Release files for exitlight 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| exitlight-0.1.0.tar.gz | 17.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| exitlight-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.8 kB
Release files / exitlight-0.1.0.tar.gz
| Download URL | exitlight-0.1.0.tar.gz |
|---|---|
| Size | 17.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6dab785fbb2b4f6248b7ff682d08aa03f3e5eba5f6242098224aa7535ac7c4cf
|
|
BLAKE2b-256 checksum How to use checksums |
fc4508e788d023140ec6fb7118a8bd83b688dd006e5d14a3a855b8cd86246e80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / exitlight-0.1.0-py3-none-any.whl
| Download URL | exitlight-0.1.0-py3-none-any.whl |
|---|---|
| Size | 24.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0f89389639f7cfb6780970e3de2c0246ccbf6b8b12b306f39626d91c99716ba8
|
|
BLAKE2b-256 checksum How to use checksums |
ec6718a47ef4d7f439287f42bbb986496c0d8c259261deae1b4fec58b67ca958
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|