Usage
Input is a single URL, or a file of URLs (one per line). If the argument exists as a file, it is read as a list; otherwise it is treated as a URL.
CLI flags
| Flag | Default | Description |
|---|---|---|
--active |
off | Run broader path probes after default confirm files |
--format, -f |
text |
Output format: text, json, or csv |
--output, -o |
stdout | Write results to this file |
--workers, -w |
10 |
Thread-pool size for a file of URLs |
--delay |
0 |
Seconds to wait before each request |
--retries |
2 |
Retry count for failed fetches |
--verbose |
off | Append evidence notes to text lines |
--version |
— | Print the package version and exit |
cms-detection https://target.example
cms-detection https://target.example --active
cms-detection urls.txt --format json --output results.json
Default mode uses the homepage plus a few well-known public files for CMS
that already scored on that page. --active adds broader path probes, and
when the homepage has no signal it also walks the catalogue's confirm files.
A path is never a hit from HTTP 200 alone.
--output writes the chosen format to a file and does not also print
results on stdout.
Text line: {url} => {cms} {version} ({confidence}), plus a short evidence
note when --verbose. JSON is a list of result objects. CSV columns are
url, cms, version, confidence, evidence, candidates, and error.
Network and HTTP failures become error on that result and do not crash a
batch. Invalid URL or empty input exits non-zero.
Library
from lupaxa.cms_detection import detect, detect_many
result = detect("https://target.example", active=False)
print(result.cms, result.version, result.confidence)
results = detect_many(
["https://a.example", "https://b.example"],
workers=10,
active=False,
)
| Function | Role |
|---|---|
detect |
One target. Keyword-only: active, delay, retries, timeout |
detect_many |
Independent detects in input order. Same keywords plus workers |
detect() does not raise on network or HTTP failure. Those become
result.error with cms=None. Invalid URL or empty input raises
CmsDetectionError.