Identity begins with declared evidence

The simplest detector matches a request's user-agent string against known tokens such as GPTBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot, Claude-User, or PerplexityBot. That is useful for organizing traffic, especially when the token and documented purpose are current. It is not sufficient to prove that the request came from the named company because user-agent headers are controlled by the requester.

A good analytics product should therefore store both the classification and the evidence class. 'Recognized token' is more honest than 'verified OpenAI request' unless a stronger provider or edge-verification mechanism supports the latter claim.

Corroborate when the infrastructure allows it

Some CDN and bot-management systems expose verified-bot metadata or other signals derived from network reputation and provider-maintained lists. Those can materially raise identity confidence because they do not depend on the request header alone. Reverse-DNS or IP-range checks can also be useful for providers that publish durable verification guidance, but they must be implemented carefully and kept current.

The absence of corroboration is not the same as evidence of spoofing. Many legitimate systems use changing infrastructure, cloud providers, or service networks. This is why a multi-level confidence model is safer than a binary verified/unverified field.

Behavior is context, not identity proof

Request patterns can reveal automation: regular intervals, deep traversal, repeated sitemap discovery, rapid path enumeration, or machine-like retry behavior. Those signals help distinguish browsers from automated clients, but they do not identify the organization behind the traffic. A scraper can mimic a famous bot's behavior; a legitimate agent can behave unlike a traditional crawler.

Use behavior to characterize the session or journey, not to assign a brand without evidence. 'Unclassified automation repeatedly requesting API documentation' is a useful statement. 'Claude is scraping the API' is not defensible if the only support is a behavioral resemblance.

Preserve the unknown bucket

Machine-web products create pressure to name every request because branded charts look more satisfying than an unknown category. That pressure should be resisted. Unknown automation is a real operational class: it can be rate-limited, investigated, or compared over time without inventing an identity.

As provider documentation and verified signals improve, historical classifiers can be revised. The raw privacy-minimized evidence should remain stable enough to support that reclassification without requiring storage of full visitor identifiers.