User-Agent string

pattern matching, entirely local
Browser
Engine
Operating system
Device type

Heuristic, like every UA parser: browsers omit tokens, spoof each other's, and new UA formats show up constantly. Unrecognized fields show as "unknown" rather than a best-effort guess. Chromium-derived browsers (Edge, Opera, Samsung Internet, Vivaldi) are matched on their own token first, since they all also carry a Chrome/ token for compatibility.