Skip to content

Reference

Result fields

DetectResult is a frozen dataclass. Unknown CMS is success: cms is None and error is empty.

Field Type Meaning
url str Final URL after redirects, or the input if fetch failed
cms str \| None Best match name, or None if unknown
version str \| None Public version string, or None
confidence str \| None high, medium, or low when cms is set
evidence tuple[Evidence, ...] Hits from the run, including candidate hits
candidates tuple[str, ...] Other CMS that scored, excluding cms
error str Fetch or parse failure, or ""

Evidence fields: kind (meta_generator, header, cookie, script, path), value (what was seen), and cms (which signature it supported).

Confidence rules

Each matching signal adds points used only to pick the winner. Points are not shown in the CLI.

Signal Points Strength
meta_generator substring match 3 strong
Listed response header name present 3 strong
Matching confirm_paths or active_paths probe 2 path
Cookie name prefix in Set-Cookie 1 weak
Script src host or path substring 1 weak
Confidence Rule
high Two or more independent passive kinds, or one strong passive plus a matching path
medium One strong passive, or two weak passives
low Path evidence only, or a single weak passive

cms is the highest total. Other names with a score greater than zero go in candidates. Ties: more distinct evidence kinds, then presence of a version, then alphabetical name.

A path probe counts only when the status is allowed and a required snippet appears in the body or headers. HTTP 200 alone is not a hit.

Errors

Case Behaviour
Network, timeout, TLS, HTTP error error set, cms=None; the batch continues
Invalid URL or empty input CLI exits non-zero; library raises CmsDetectionError
One probe fails That probe is skipped; the detect continues
Unknown CMS Success: cms=None, error=""
Output file write failure CLI reports it and exits non-zero after the scan