_____ _ __ _ _
| __ \ | | / _(_) | |
| |__) |___ | |__ ___ | |_ _ _ __ __| | ___ _ __
| _ // _ \| '_ \ / _ \| _| | '_ \ / _` |/ _ \ '__|
| | \ \ (_) | |_) | (_) | | | | | | | (_| | __/ |
|_| \_\___/|_.__/ \___/|_| |_|_| |_|\__,_|\___|_|
Uncover hidden endpoints by mining every historical robots.txt snapshot from the Wayback Machine.
Sites regularly scrub sensitive paths from robots.txt — but the Wayback Machine keeps every version ever crawled.
Robofinder queries Archive.org's CDX API to pull all historical robots.txt snapshots for a target, deduplicates every Allow, Disallow, and Sitemap directive, and prints the full list. Paths that were quietly removed from production may still be alive and reachable.
Built for: bug bounty recon · OSINT · attack-surface mapping · forgotten endpoint discovery
pip install robofinderInstall from source
git clone https://github.com/Spix0r/robofinder
cd robofinder
pip install .# Single target
robofinder -u https://example.com
# Full URLs ready to probe
robofinder -u https://example.com -c
# Pipe straight into httpx or nuclei
robofinder -u domains.txt -c -s | httpx -silent -mc 200
robofinder -u https://example.com -c -s | nuclei -t exposures/robofinder -u URL [options]
| Flag | Long form | Default | Description |
|---|---|---|---|
-u |
--url |
— | Target URL or file with one URL per line |
-o |
--output |
— | Output to terminal (no value) or save to file (with value) |
-f |
--format |
txt |
Output format: txt, json, or both |
-c |
— | Prefix each path with the target URL (full URLs) | |
-p |
— | Extract URL parameters from historical paths | |
-t |
--threads |
1 |
Number of fetch threads |
-r |
--rate-limit |
2.0 |
Max requests/sec sent to Archive.org |
--cooldown |
10 |
Seconds to wait between domains | |
-s |
--silent |
— | Suppress the banner |
--debug |
— | Verbose debug output (goes to stderr) |
Create domains.txt:
https://example.com
https://target.org
api.example.com
robofinder -u domains.txt -o all_paths.txt# Save to file
robofinder -u https://example.com -f json -o results
# Pipe to jq
robofinder -u https://example.com -f json | jq '.["example.com"].paths[]'
# Count paths per domain
robofinder -u domains.txt -f json | jq 'to_entries[] | "\(.key): \(.value.count) paths"'robofinder -u https://example.com -p
# returns parameter names found in historical paths, e.g.:
# id
# token
# redirect_urlRobofinder ships with a token-bucket rate limiter so it never hammers Archive.org.
- Default: 2 req/s — well within Archive.org's tolerance.
- On HTTP 429: exponential back-off with automatic retry.
- On timeout/connection errors: retries with backoff (up to 7 attempts).
- Override with
-r: use-r 0.5to be conservative or-r 5on a fast connection.
# Conservative mode
robofinder -u https://example.com -r 1 --cooldown 30See CHANGELOG.md.