User Agents of Visitors

This page demonstrates showing query result from database.

Below list of user agents are collected from the visitor's HTTP header.

stats ready

User AgentCount
Windows106,916
Bots29,787
curl16,985
MacOS16,663
Android8,159
Linux7,413
Other4,733
iPhone1,085
iPad159
ChromeOS111
SonyEricsson108
FreeBSD69
BlackBerry41
Links36
NetBSD34
OpenBSD30
Wget15
Lynx9
Bot AgentCount
ClaudeBot4,654
OpenAIBot3,586
CensysInspect3,102
PythonBot2,157
InternetMeasurement2,104
PaloBot1,818
GoBot1,563
GoogleBot1,109
Amazonbot1,079
YandexBot1,068
BingBot1,017
FacebookBot893
AhrefsBot873
SemrushBot784
MJ12Bot354
BaiduBot274
DotBot272
DuckDuckGoBot261
CCBot215
SERankingBacklinksBot189
PerplexityBot185
Hkfl-Bot137
DeepSeekBot110
Kimi-SearchBot99
TwitterBot98
Amzn-SearchBot98
GrokBot98
KimiBot93
MojeekBot88
YouBot85
DuckAssistBot83
Bravebot78
NetcraftSurveyAgent77
Qwenbot77
wpbot70
Claude-SearchBot69
MoonshotBot68
BLEXBot65
PanguBot55
NodeBot52
YiBot52
Scrapy51
JavaBot48
Google-CloudVertexBot47
HackerNewsBot46
Applebot34
BarkrowlerBot27
TechSpyBot27
HaloBot24
msnbot18
Nmap16
DataForSeoBot15
ImagesiftBot15
org_bot14
AdsBot-Google12
expo-research-bot12
Reflectionbot12
Exabot11
bot9
Gaisbot9
DartBot8
HawaiiBot8
MizuRSSBot7
xAI-SearchBot7
ShapBot7
GulperBot6
NVBot6
PublicWWWBot6
WhatsAppBot4
TurnitinBot4
Facebot4
CohereBot4
FudgeResearchBot4
TelegramBot3
ZoomBot3
net-Robot3
MistralBot3
SlackBot2
MastodonBot2
Readybot2
AwarioBot2
Googlebot2
Aranet-SearchBot2
SleepBot2
DejaShipBot2
LindyReportBot2
BeansLLM-CorpusBot2
ExaSearchBot2
TheMapBot2
ReconBot2
YahooBot1
Discordbot1
EveryoneSocialBot1
LinkedInBot1
LivelapBot1
Pinterestbot1
Quora-Bot1
RepoLookoutBot1
Dub.co Bot1
VertexWP Bot1
PulseGateBot1
Smallwebindexbot1
EveryTabBot1
TenMillionDomainsBot1
AdsTxtBot1
GeneralCrawlBot1
AdsNexusBot1
ApcosysBot1
Other AgentCount
iaudit/0.1559
Mozilla/5.0495
Mozilla/5.0 (l9scan/2.0.934323e2631313e2430313e2237313; +https://leakix.net)341
Mozilla/5.0 (compatible; jscrawler/0.1; +https://github.com/)247
Mozilla/5.0 (compatible; pathscan/1.0)220
Mozilla/5.0 zgrab/0.x213
crusader-worker/1.0201
Mozilla/5.0...139
Mozilla/5.0 (compatible; ModatScanner/1.2; +https://modat.io/)134
WordPress/6.4.3; https://wordpress.org/97
Mozilla/5.0 (compatible)96
Mozilla/5.0 (compatible; cohere-ai; +https://cohere.com/crawler)86
Mozilla/5.0 (compatible; Bytespider; spider-feedback@bytedance.com) AppleWebKit/537.3686
Mozilla/5.0 (compatible; ChatGLM-Spider/1.0; +https://zhipuai.cn/)84
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Claude-User/1.0; +claudebot@anthropic.com)82
Mozilla/5.0 (compatible; CMS-Checker/1.0; +https://example.com)73
Mozilla/5.0 (compatible; Hunyuan/1.0; +https://hunyuan.tencent.com/)62
Mozilla/5.0 (compatible; xAI-Grok/1.0; +https://x.ai/)56
Mozilla/5.0 (compatible; MistralAI-User/1.0; +https://mistral.ai/)54
Mozilla/5.0 (compatible; DomainExtractor/1.0)48
TLM-Audit-Scanner/1.044
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Perplexity-User/1.0; +https://perplexity.ai/perplexitybot)39
AteveSearchSourceUrlDiscovery/0.1 (+mailto:crawler@example.com)38
ct‑git‑scanner/0.436
RootEvidence/1.035
Mozilla/5.0 (compatible; GoogleOther; +https://developers.google.com/search/)34
WordPress/6.4.333
webapp-mapper-authorized-probe/0.133
Mozilla/5.0 (compatible; ModatScanner/1.1; +https://modat.io/)32
AgentTrust-Collector/1.0 (+https://agenttru.st/crawler; purpose=AI Agent Discovery; contact=admin@agenttru.st)30
Mozilla/5.0 (compatible; CT-WP-Scanner/1.0; +https://example.com/bot)21
firefox19
got (https://github.com/sindresorhus/got)18
Apache/2.4.34 (Ubuntu) OpenSSL/1.1.1 (internal dummy connection)17
fasthttp17
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Perplexity-User/1.0; +https://perplexity.ai/perplexity-user)17
rest-client/2.1.0 (linux x86_64) ruby/3.2.2p5314
webapp-mapper/0.1 (public technical analysis)13
FindFiles.net/1.0 (compatible; +https://findfiles.net/bot)12
Mozilla/5.0 (compatible; VelenPublicWebCrawler/1.0; +https://velen.io)12
Mozilla/5.0 (compatible; SecurityScanner/1.0; +http://example.com/bot)12
metabase-cve-2026-72898-detect/1.0 (benign detection probes only)12
SEC-SGHE900/1.0 NetFront/3.2 Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1378; nl; U; ssr)11
Mozilla/5.0 (compatible; SecurityScanner/1.0)11
EPST-maker-source-verifier/1.011
facebookscraper/1.0( http://www.facebook.com/sharescraper_help.php)10
MOT-V177/0.1.75 UP.Browser/6.2.3.9.c.12 (GUI) MMP/2.0 UP.Link/6.3.1.13.010
Jigsaw/2.2.5 W3C_CSS_Validator_JFouffa/2.010
Mozilla/5.0 (compatible; startup-research/1.0)10
Mozilla/5.0 (compatible; GitFinder/1.0)10
cve-2026-87902-poc/1.010
MOTORIZR-Z8/46.00.00 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; 356) Opera 8.65 [it] UP.Link/6.3.0.0.09
Mozilla/3.01Gold (Win95; I)9
Mozilla/5.0 (compatible; ModatScanner/1.0; +https://modat.io/)9
MetaCrawler/1.0 (+https://metacrawler.com/bot)9
opc-contact-finder/1.0 (research; reads publicly published contact pages only)9
KelviqLeadResearch/1.0 (+https://kelviq.com)9
Download Demon/3.5.0.118
CSSCheck/1.2.28
Mozilla/5.0 (OS/2; Warp 4.5; rv:31.0) Gecko/20100101 Firefox/31.0 SeaMonkey/2.288
LG-GC900/V10a Obigo/WAP2.0 Profile/MIDP-2.1 Configuration/CLDC-1.18
Mozilla/5.0 (Unknown; UNIX BSD/SYSV system) AppleWebKit/538.1 (KHTML, like Gecko) QupZilla/1.7.0 Safari/538.18
portalmmm/2.0 N410i(c20;TB)8
Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/37.8918; U; en) Presto/2.12.423 Version/12.168
grub-client-1.5.3; (grub-client-1.5.3; Crawl your own stuff with http://grub.org)8
Mozilla/5.0 (X11; U; SunOS sun4m; en-US; rv:1.4b) Gecko/20030517 Mozilla Firebird/0.68
RecordedFuture Global Inventory Crawler8
vuln_scanner/3.1.0 (CVE-2026-4020)8
Mozilla/4.0 (PSP (PlayStation Portable); 2.00)7
Mozilla/2.0 (compatible; Ask Jeeves/Teoma)7
Mozilla/5.0 (OS/2; Warp 4.5; rv:24.0) Gecko/20100101 Firefox/24.0 SeaMonkey/2.217
Opera/9.80 (J2ME/MIDP; Opera Mini/5.0.16823/1428; U; en) Presto/2.2.07
Adobe Application Manager 2.07
Microsoft URL Control - 6.00.88627
Mozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.9a1) Gecko/20060702 SeaMonkey/1.5a7
Mozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413 es507
SearchExpress7
Mozilla/5.0 (compatible; SecurityResearch/1.0; )7
Mozilla/3.0 (compatible; NetPositive/2.1.1; BeOS)6
Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html)6
Mozilla/4.0 (compatible; MSIE 5.15; Mac_PowerPC)6
HTMLParser/1.66
Peach/1.01 (Ubuntu 8.04 LTS; U; en)6
POLARIS/6.01(BREW 3.1.5;U;en-us;LG;LX265;POLARIS/6.01/WAP;)MMP/2.0 profile/MIDP-201 Configuration /CLDC-1.16
MobileSafari/600.1.4 CFNetwork/711.1.12 Darwin/14.0.06
Mozilla/5.0 (PLAYSTATION 3; 2.00)6
Mozilla/5.0 (OS/2; U; OS/2; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Arora/0.11.0 Safari/533.36
nook browser/1.06
Vodafone/1.0/V802SE/SEJ001 Browser/SEMC-Browser/4.16
Mediapartners-Google6
Avant Browser/1.2.789rel1 (http://www.avantbrowser.com)6
Mozilla/5.0 (lars-studio)6
NPOSAIStartupDirectory/0.1 (+https://nposai.com)6
Mozilla/5.0 (compatible; Yeti/1.1; +https://naver.me/spd)5
Ruby5
SEC-SGHX820/1.0 NetFront/3.2 Profile/MIDP-2.0 Configuration/CLDC-1.15
WebZIP/3.5 (http://www.spidersoft.com)5
Mozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413 es705
LG-LX550 AU-MIC-LX550/2.0 MMP/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.15
Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.115
P3P Validator5
FeedFetcher-Google; ( http://www.google.com/feedfetcher.html)5
Mozilla/5.0 (compatible; alexa site audit/1.0; +http://www.alexa.com/help/webmasters; )5
Mozilla/5.0 (SymbianOS/9.1; U; de) AppleWebKit/413 (KHTML, like Gecko) Safari/4135
Mozilla/5.0 (OS/2; Warp 4.5; rv:10.0.12) Gecko/20100101 Firefox/10.0.125
Mozilla/5.0 (OS/2; Warp 4.5; rv:38.0) Gecko/20100101 Firefox/38.05
Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML like Gecko) Version/7.2.1.0 Safari/536.2+5
SEC-SGHX210/1.0 UP.Link/6.3.1.13.05
Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14320/554; U; cs) Presto/2.2.05
Opera/9.60 (J2ME/MIDP; Opera Mini/4.1.11320/608; U; en) Presto/2.2.05
Mozilla/1.22 (compatible; MSIE 5.01; PalmOS 3.0) EudoraWeb 2.15
POLARIS/6.01 (BREW 3.1.5; U; en-us; LG; LX265; POLARIS/6.01/WAP) MMP/2.0 profile/MIDP-2.1 Configuration/CLDC-1.15
Opera/9.80 (S60; SymbOS; Opera Mobi/499; U; ru) Presto/2.4.18 Version/10.005
Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.8.1.12) Gecko/20080303 SeaMonkey/1.1.85
Mozilla/4.0 (compatible; Dillo 3.0)5
w3m/0.5.15
Xenu Link Sleuth/1.3.85
MizuCrawler/3.05
Mozilla/5.0 (compatible; GoogleOther; +https://developers.google.com/search/docs/crawling-indexing/overview-google-crawlers)5
Mozilla/5.0 (compatible; opr-crawler/0.1.0; +mailto:alykhan@simbasystems.com)5
W3C_Validator/1.305.2.12 libwww-perl/5.644
Mozilla/5.0 (OS/2; Warp 4.5; rv:45.0) Gecko/20100101 Firefox/45.04
Mozilla/5.0 (X11; CrOS aarch64 14526.89.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.133 Safari/537.364
Mozilla/5.0 (webOS/1.3; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Desktop/1.04
Mozilla/2.02E (Win95; U)4
Mozilla/4.0 (compatible; MSIE 6.0; j2me) ReqwirelessWeb/3.54
libwww-perl/5.8204
Mozilla/4.77 [en] (X11; I; IRIX;64 6.5 IP30)4
Screaming Frog SEO Spider/8.14
Mozilla/5.0 (compatible; Konqueror/3.5; SunOS) KHTML/3.5.1 (like Gecko)4
Mozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413 es654
Mozilla/5.0 (OS/2; U; OS/2; en-US) AppleWebKit/533.3 (KHTML, like Gecko) QupZilla/1.3.1 Safari/533.34
wii libnup/1.04
W3C_Validator/1.6544
MOT-L7v/08.B7.5DR MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Link/6.3.0.0.04
MOT-V9mm/00.62 UP.Browser/6.2.3.4.c.1.123 (GUI) MMP/2.04
Mozilla/5.0 (OS/2; Warp 4.5; rv:10.0.12) Gecko/20130108 Firefox/10.0.12 SeaMonkey/2.7.24
Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.9.1b3) Gecko/20090429 Firefox/3.1b34
Mozilla/5.0 (compatible; Konqueror/4.1; DragonFly) KHTML/4.1.4 (like Gecko)4
SAMSUNG-SGH-A867/A867UCHJ3 SHP/VPP/R5 NetFront/35 SMM-MMS/1.2.0 profile/MIDP-2.0 configuration/CLDC-1.1 UP.Link/6.3.0.0.04
Mozilla/5.0 (compatible; Perplexity-User/1.0; +https://perplexity.ai/perplexity-user)4
gwf-carbon-txt-crawler/1.0 (Web Crawler for the Green Software Foundation to measure the adoption of the carbon.txt initiative; https://carbontxt.org/; support@greenweb.org)4
git/2.39.24
wp2shell4
tech-leads-check (+https://github.com/lhypds/heroes)4
accesson-ir-sweep/2.0 (authorized)4
Embed PHP library3
Mozilla/4.8 [en] (X11; U; SunOS; 5.7 sun4u)3
Mozilla/5.0 (OS/2; Warp 4.5; rv:31.0) Gecko/20100101 Firefox/31.03
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible3
Roku/DVP-4.1 (024.01E01250A)3
WebCopier v4.63
Mozilla/5.0 (Unknown; U; UNIX BSD/SYSV system; C -) AppleWebKit/527 (KHTML, like Gecko, Safari/419.3) Arora/0.10.23
Opera/10.61 (J2ME/MIDP; Opera Mini/5.1.21219/19.999; en-US; rv:1.9.3a5) WebKit/534.5 Presto/2.6.303
DoCoMo/2.0 SH901iC(c100;TB;W24H12)3
WDG_Validator/1.6.23
FAST-WebCrawler/3.8 (crawler at trd dot overture dot com; http://www.alltheweb.com/help/webmaster/crawler)3
Web Downloader/6.93
SAMSUNG-S8000/S8000XXIF3 SHP/VPP/R5 Jasmine/1.0 Nextreaming SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 FirePHP/0.33
Mozilla/5.0 (en-us) AppleWebKit/525.13 (KHTML, like Gecko; Google Web Preview) Version/3.1 Safari/525.133
GoogleOther3
CVE-2025-55182-Checker3
DejaShip/1.0 (survival-checker)3
Mozilla/5.0 (X11; CrOS aarch64 12239.67.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.102 Safari/537.363
tranco-crawler/1.03
pixelgrab-radar/1.0 (+https://radar.pixelgrab.lol/about; support@pixelgrab.lol)3
dp-discover/1.0 (+https://godigitalpigeon.com/bot)3
Mozilla/5.0 (compatible; YaK/1.0; http://linkfluence.com/; bot@linkfluence.com)2
Lemmy/0.18.3; +https://zerobytes.monster2
newspaperjs2
MetadataScraper2
Mozilla/5.0 (compatible; Miniflux/2.0.44; +https://miniflux.app)2
Iframely/1.3.1 (+https://iframely.com/docs/about)2
News%20Explorer/247 CFNetwork/1410.0.3 Darwin/22.6.02
Mozilla/5.0 (compatible; Feedspot/1.0 (+https://www.feedspot.com/fs/fetcher; like FeedFetcher-Google)2
trafilatura/1.6.1 (+https://github.com/adbar/trafilatura)2
Mozilla/5.0 (compatible; FlipboardProxy/1.2; +http://flipboard.com/browserproxy)2
newspaper/0.3.02
undici2
node-fetch/1.0 (+https://github.com/bitinn/node-fetch)2
Gregarius/0.5.2 ( http://devlog.gregarius.net/docs/ua)2
colly - https://github.com/gocolly/colly/v22
Mozilla/5.0 (OS/2; Warp 4.5; rv:45.0) Gecko/20100101 Firefox/45.0 SeaMonkey/2.42.9esr2
trafilatura/1.12.2 (+https://github.com/adbar/trafilatura)2
Java/1.6.0_132
EmailWolf 1.002
Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.1.0.2342 Mobile Safari/537.10+2
Offline Explorer/2.52
Mozilla/5.0 (Mac OS X 13_2) AppleWebKit/537.36 (KHTML, like Gecko) Safari/102.0 Safari/537.362
Mozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/4132
Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)2
MizuCrawler/1.02
Terra Cotta 0.1 https://www.github.com/ceramicTeam/CeramicTerracotta2
NetAPI v12
Mozilla/5.0 (compatible; pre-filter)2
Mozilla/5.0 (keys-so-bot)2
Mozilla/5.0 (compatible; domains-distillery/1.0; +https://crawler.validus.ai)2
Mozilla/5.0 (compatible; NoctraRecon/1.0)2
Mozilla/5.0 (compatible; darkalgo-research/0.1; +https://darkalgo.org; research crawler)2
Mozilla/5.0 Firefox/143.02
IronFountain-Leads/1.0 (+https://www.ironfountain.com)2
Mozilla/5.0 (compatible; yavchn-reader/0.1; +https://github.com/paulmooreparks/yavchn)2
Racket/6.8 (net/http-client)1
topicaxis1
Mozilla/5.0 (compatible; Embedly/0.2; +http://support.embed.ly/)1
Mozilla/5.0 (compatible; Embedly/0.2; snap; +http://support.embed.ly/)1
Hacky/1 CFNetwork/1390 Darwin/22.0.01
rss/4.5.61
MetaInspector/5.7.0 (+https://github.com/jaimeiniesta/metainspector)1
newspaper/0.2.81
Mozilla/5.0 (compatible; Miniflux/2.0.31; +https://miniflux.app)1
Mozilla/5.0 (compatible; Miniflux/2.0.36; +https://miniflux.app)1
Mozilla/5.0 (compatible; RSSClients/1.0)1
`Mozilla/5.01
shadowforce.io - sslshed/0.11
cc1
Mozilla/5.0 (X11; CrOS aarch64 14388.61.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.107 Safari/537.361
Opera/9.30 (Nintendo Wii; U; ; 2047-7; en)1
everyfeed-spider/2.0 (http://www.everyfeed.com)1
Mozilla/4.0 (PDA; PalmOS/sony/model prmr/Revision:1.1.54 (en)) NetFront/3.01
Fuzz Faster U Fool v2.1.01
Mozilla/5.0 (Mac OS X 13_2) AppleWebKit/537.36 (KHTML, like Gecko) Safari/129.0 Safari/537.361
Mozilla/5.0 (Mac OS X 13_2) AppleWebKit/537.36 (KHTML, like Gecko) Safari/111.0 Safari/537.361
Mozilla/5.0 (Mac OS X 13_2) AppleWebKit/537.36 (KHTML, like Gecko) Safari/120.0 Safari/537.361
Mozilla/5.0 (Mac OS X 13_2) AppleWebKit/537.36 (KHTML, like Gecko) Edge/126.0 Safari/537.361
Fuzz Faster U Fool v2.1.0-dev1
dubox;4.3.9;SM-M145F;android-android;15;JSbridge1.0.10;jointbridge;1.1.39;1
Java/1.8.0_3221
dubox;4.4.2;SM-A556E;android-android;15;JSbridge1.0.10;jointbridge;1.1.39;1
Mozilla/5.0 (compatible; UGAResearchAgent/1.0; Please visit: NISLabUGA.github.io)1
Mozilla/5.0 (compatible; showhn-cleaner/1.0)1
Mozilla/5.0 (compatible; showhn-cleaner/1.0; +https://news.ycombinator.com)1
Mozilla/5.0 AppleWebKit/605.1.15 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/605.1.151
subjs1
Mozilla/5.0 (compatible; KeyScanner/1.0)1
Mozilla/5.0 (compatible; Bytespider; spider-feedback@bytedance.com)1
pilot/1.0 (+https://github.com/ryan-king/pilot)1
Goosee-Audit/1.0 (+internal-security-audit)1
Mozilla/5.0 (compatible; Scanner/1.0)1
Mozilla/5.0 (compatible; sitecheck/1.0)1
Mozilla/5.0 (compatible; myjob/1.0)1
LinkChecker/3.0 (async; +https://github.com/example)1
Bloglines/3.1 (http://www.bloglines.com)1
url-text-fetcher/0.3.01
DAGCrawler/1.0 (+https://samsepi0l.fr/dagcrawler; contact: vincent.dominguez@master-developpement-logiciel.fr)1
WarmBadge-Trawler/1.0 (trust-layer research crawler; https://warmbadge.io/crawler)1
scrape_central/1.01
Mozilla/5.0 (compatible; GoFastSiteChecker/1.0)1
github-talent-scout link check1
csint.dev/1.0 (public research; contact via site)1
Mozilla/5.0 (compatible; ForestEngine/1.0; +https://forestengine.net/)1
LaravelHostChecker/1.01
cve-2026-87902-research/1.01
Mozilla/5.0 (compatible; SiteTemplateAudit/1.0)1
cve-2026-63030/1.01
Mozilla/5.0 gitscan-go/0.31
agow-poi-robots-audit/1 (robots.txt-only rights audit, one fetch per host; contact pratyay@amazon.com)1
Source Code of user-agents.tsx
(import statements omitted for simplicity, click to expand)
import { proxy } from '../../../db/proxy.js'
import { pick } from 'better-sqlite3-proxy'
import {
  getOtherUserAgents,
  getUAStatsProgress,
} from '../../../db/user-agent.js'
import { Locale, Title } from '../components/locale.js'
import SourceCode from '../components/source-code.js'
import Style from '../components/style.js'
import { Context, getContextLanguage } from '../context.js'
import { o } from '../jsx/jsx.js'
import { Routes } from '../routes.js'
function agentTable(
  title: string,
  rows: [name: string, count: number][],
  locales: string,
) {
  // skip rows with zero count
  rows = rows.filter(row => row[1] > 0)

  // skip empty table
  if (rows.length === 0) return

  // sort by count descending
  rows.sort((a, b) => b[1] - a[1])

  return (
    <table>
      <thead>
        <tr>
          <th>{title}</th>
          <th style="word-break: normal;">Count</th>
        </tr>
      </thead>
      <tbody>
        {[
          rows.map(([name, count]) => (
            <tr>
              <td>{name}</td>
              <td>{count.toLocaleString(locales)}</td>
            </tr>
          )),
        ]}
      </tbody>
    </table>
  )
}

function Tables(attrs: {}, context: Context) {
  let locales = getContextLanguage(context) || 'en-US'
  return (
    <>
      <p>{getUAStatsProgress()}</p>
      {agentTable(
        'User Agent',
        pick(proxy.ua_type, ['name', 'count']).map(row => [
          row.name,
          row.count,
        ]),
        locales,
      )}
      {agentTable(
        'Bot Agent',
        pick(proxy.ua_bot, ['name', 'count']).map(row => [row.name, row.count]),
        locales,
      )}
      {agentTable(
        'Other Agent',
        getOtherUserAgents().map(row => [row.user_agent, row.count]),
        locales,
      )}
    </>
  )
}

let UserAgents = (
  <div id="user-agents">
    <h1>User Agents of Visitors</h1>
    {Style(/* css */ `
#user-agents table {
  border-collapse: collapse;
  margin: 1rem;
  display: inline;
}
#user-agents th,
#user-agents td {
  border: 1px solid var(--text-color, black);
  padding: 0.25rem 0.5rem;
  max-width: calc(90vw - 8rem);
  word-break: break-word;
}
`)}
    <p>This page demonstrates showing query result from database.</p>
    <p>
      Below list of user agents are collected from the visitor's HTTP header.
    </p>
    <Tables />
    <SourceCode page="user-agents.tsx" />
  </div>
)

let routes = {
  '/user-agents': {
    menuText: <Locale en="Visitor Stats" zh_hk="訪客統計" zh_cn="访客统计" />,
    title: (
      <Title
        t={
          <Locale
            en="User Agents of Visitors"
            zh_hk="訪客的用戶代理"
            zh_cn="访客的用戶代理"
          />
        }
      />
    ),
    description: (
      <Locale
        en="User agents of this site's visitors"
        zh_hk="此網站訪客的用戶代理資訊"
        zh_cn="此网站访客的用户代理资讯"
      />
    ),
    node: UserAgents,
  },
} satisfies Routes

export default { routes }