Skip to content

feat(devices): name the crawlers production reads generically - #3

Merged
joelwurtz merged 6 commits into
mainfrom
feat/traffic-2026-10-29
Oct 29, 2026
Merged

joelwurtz merged 6 commits into
mainfrom
feat/traffic-2026-10-29

Conversation

@joelwurtz

@joelwurtz joelwurtz commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

Follows matomo past 6.5.2, and names crawlers, monitors and agents that the detector only read as Generic Bot, or not at all. Each one was looked up on the web. An entry was written where an operator or a project says what it is. Everything else stays generic.

One commit per typology, so a regression bisects to a file.

matomo, at eaafe37

The fixtures move to eaafe37: 38 383 cases, 82 more than at 6.5.2.

  • bots: 9bot, IsonSearchBot, IsonAI-User and TuneIn-DirMon, all four from matomo's own rules.
  • clients and systems: WhatsApp Web (WhatsApp/x N) is named and no longer claims a Mac. SteamOS now reads only on SteamDeck or Valve Steam, so a Windows launcher that mentions Steam stays Windows.
  • devices: every new case has its entry in the file named after its fixture. Vivo Y67L and X9L, Honor X9b 5G and WhatsApp's iPhone 4 follow matomo's renaming.

Bots — src/devices/bots.yml

user agent now page
Mozilla/5.0 (compatible; TalarionSearchBot/1.0; research; contact: …) TalarionSearchBot · AI Search Crawler https://knownagents.com/agents/talarionsearchbot (no page of its own)
eplictabot/1.0 (+https://eplicta.se/bot/) EplictaBot · Crawler https://eplicta.se/bot/
ElevenlabsBot/1.0 ElevenlabsBot · AI Assistant https://elevenlabs.io/docs/bots
aikido-scan-agent/1.0 Aikido Security · Security Checker https://help.aikido.dev/dast-surface-monitoring/miscellaneous/allowing-ip-addresses-for-dast-surface-monitoring
cert-manager-challenges/canary (linux/amd64) cert-manager/ cert-manager · Service Agent (existing entry widened) https://github.com/cert-manager/cert-manager/blob/master/pkg/util/version.go (AppVersion = "canary")
centreon::plugins::backend::http::useragent Centreon · Site Monitor https://github.com/centreon/centreon-plugins/blob/develop/src/centreon/plugins/backend/http/useragent.pm
contentsquare static resource scraper Contentsquare Static Resource Scraper · Service Agent https://docs.contentsquare.com/en/web/static-assets-scraping
topicsearch-crawler/0.1 (+https://fatgrid.com/crawler; …) FatGrid TopicSearch · Crawler https://fatgrid.com/crawler
ClueWeb-Crawler/1.0 (+https://boston.lti.cs.cmu.edu/CMU-ClueWeb-Crawler/; …) ClueWeb Crawler · Crawler https://boston.lti.cs.cmu.edu/CMU-ClueWeb-Crawler/
kinsta-bot Kinsta · Site Monitor https://kinsta.com/docs/wordpress-hosting/wordpress-monitoring/uptime-monitoring/
Svix-Webhooks/1.101.0 Svix · Service Agent https://www.svix.com/http-sender/

None of them feeds a search index, so none takes the Search bot category.

  • tests/pinned/production.rs pins one case per entry, and each case fails against the database of main. Five of the strings left alone are pinned as generic.

Traffic comparison types a detection as the log injector now does

examples/compare and examples/traffic replay the log injector's current device_type: a client counts as a person only when it is a browser, an application or a PIM on a named platform. Libraries, and anything naming no platform, are tools. Rows of an older dump that differ on the type alone are excused.

Detection::is_headless()

Matomo reads Headless Chrome, Headless Edge and Lightpanda as browsers (#5691, #7441), and so does the detection. is_headless() says what the name already holds, for a caller who counts visitors and wants to leave them out. A headless Chrome sending a plain user agent is still read from Sec-CH-UA, as matomo does.

Follows matomo: a WhatsApp Web request no longer claims to run on a Mac, and a Windows launcher that mentions Steam no longer reads as SteamOS.
The fixtures move to eaafe37: 38 383 cases, 82 more. Every new case has its entry in the file named after its fixture; Vivo's Y67L and X9L, Honor's X9b 5G and WhatsApp's iPhone model follow matomo's renaming.
…2026-10-29

Each entry rests on a page its operator publishes, or on a third-party directory where none exists. cert-manager also answers for a build cut from no tag, which says canary where a release says its version.
A client counts as a person only when it is a browser, an application or a PIM on a named platform; libraries and anything naming no platform are tools. The dump predates the rule, so its rows that differ on the type alone are excused.
Matomo reads Headless Chrome, Headless Edge and Lightpanda as browsers, and so does the detection. Detection::is_headless says what the name already holds, for a caller who counts visitors. A headless Chrome sending a plain user agent is still read from its brands.
@joelwurtz
joelwurtz merged commit 388da7f into main Oct 29, 2026
2 checks passed
@joelwurtz
joelwurtz deleted the feat/traffic-2026-10-29 branch October 29, 2026 16:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant