Extract historical robots.txt paths via Wayback Machine – a recon tool for bug hunters
Project description
Robofinder
_____ _ __ _ _
| __ \ | | / _(_) | |
| |__) |___ | |__ ___ | |_ _ _ __ __| | ___ _ __
| _ // _ \| '_ \ / _ \| _| | '_ \ / _` |/ _ \ '__|
| | \ \ (_) | |_) | (_) | | | | | | | (_| | __/ |
|_| \_\___/|_.__/ \___/|_| |_|_| |_|\__,_|\___|_|
Uncover hidden endpoints by mining every historical robots.txt snapshot from the Wayback Machine.
Why Robofinder?
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
Install
pip install robofinder
Install from source
git clone https://github.com/Spix0r/robofinder
cd robofinder
pip install .
Quick start
# 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/
Usage
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) |
Scan a list of domains
Create domains.txt:
https://example.com
https://target.org
api.example.com
robofinder -u domains.txt -o all_paths.txt
JSON output with jq
# 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"'
Extract forgotten URL parameters
robofinder -u https://example.com -p
# returns parameter names found in historical paths, e.g.:
# id
# token
# redirect_url
Rate limiting
Robofinder 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 30
Changelog
See CHANGELOG.md.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file robofinder-0.2.2.tar.gz.
File metadata
- Download URL: robofinder-0.2.2.tar.gz
- Upload date:
- Size: 8.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a70624e54370835b54836a8b524fe717e3726a5cfde3764d7e9d843105769fb
|
|
| MD5 |
d19f744aa19af4473ea14b0689837cbd
|
|
| BLAKE2b-256 |
f16c9cd9c7e791f7d94abc9a5e6a49548251ed50093abc5f122569f5525185c3
|
File details
Details for the file robofinder-0.2.2-py3-none-any.whl.
File metadata
- Download URL: robofinder-0.2.2-py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8623021d2fcfee0aa87712d58794df01f6d50c08c4e8d9508a971bacbd0adc81
|
|
| MD5 |
3a2794ce7bd8515cb4cc228382a9b4e5
|
|
| BLAKE2b-256 |
2648813a29336231becf10c83340b4688827564984fc936731ec8687c16eec08
|