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
Windows72038
curl12226
Bots6330
MacOS6150
Other2734
Linux2494
Android1932
iPhone1243
iPad60
ChromeOS29
Links13
Lynx3
Wget3
Bot AgentCount
InternetMeasurement1582
PaloBot1470
GoBot1214
CensysInspect1111
OpenAIBot633
PythonBot158
NetcraftSurveyAgent53
JavaBot30
Nmap26
FacebookBot24
GoogleBot11
BingBot5
TwitterBot5
YandexBot3
TelegramBot2
YahooBot2
WhatsAppBot1
PythonRequests0
Other AgentCount
iaudit/0.1560
python-httpx/0.28.1492
Mozilla/5.0 (l9scan/2.0.934323e2631313e2430313e2237313; +https://leakix.net)205
python-httpx/0.24.1191
Mozilla/5.0166
python-httpx/0.22.0158
Mozilla/5.0 zgrab/0.x112
Mozilla/5.0 (compatible)98
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)88
Mozilla/5.0 (compatible; ModatScanner/1.1; +https://modat.io/)35
Mozilla/5.0 (compatible; ModatScanner/1.2; +https://modat.io/)33
ct‑git‑scanner/0.432
Mozilla/5.0 (compatible; CMS-Checker/1.0; +https://example.com)31
Mozilla/5.0 (compatible; wpbot/1.3; +https://forms.gle/ajBaxygz9jSR8p8G9)24
Mozilla/5.0 (compatible; wpbot/1.4; +https://forms.gle/ajBaxygz9jSR8p8G9)18
fasthttp16
Mozilla/5.0 (compatible; SecurityScanner/1.0)15
Safari/18615.3.12.11.2 CFNetwork/1410.0.3 Darwin/22.6.012
python-httpx/0.27.210
Mozilla/5.0 (compatible; ModatScanner/1.0; +https://modat.io/)9
Mozilla/5.0 (compatible; NetScope-DomainScanner/1.0; security research scanner)9
firefox8
Apache/2.4.34 (Ubuntu) OpenSSL/1.1.1 (internal dummy connection)7
Mozilla/5.0 AppleWebKit/999.0 (KHTML, like Gecko) Chrome/99.0 Safari/999.07
RootEvidence/1.07
Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.8.1.12) Gecko/20080303 SeaMonkey/1.1.86
Opera/10.61 (J2ME/MIDP; Opera Mini/5.1.21219/19.999; en-US; rv:1.9.3a5) WebKit/534.5 Presto/2.6.306
Scrapy/2.12.0 (+https://scrapy.org)6
BlackBerry9700/5.0.0.351 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/1235
Screaming Frog SEO Spider/8.15
Mozilla/4.0 (PSP (PlayStation Portable); 2.00)5
SonyEricssonK810i/R1KG Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.15
RecordedFuture Global Inventory Crawler5
CVE-2025-55182-Checker5
NetSurf/1.2 (NetBSD; amd64)4
Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.1.0.2342 Mobile Safari/537.10+4
portalmmm/2.0 N410i(c20;TB)4
Mozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413 es654
SonyEricssonK310iv/R4DA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Link/6.3.1.13.04
Mozilla/5.0 (OS/2; Warp 4.5; rv:24.0) Gecko/20100101 Firefox/24.04
Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14320/554; U; cs) Presto/2.2.04
Mozilla/5.0 (OS/2; Warp 4.5; rv:45.0) Gecko/20100101 Firefox/45.0 SeaMonkey/2.42.9esr4
Mozilla/4.77 [en] (X11; I; IRIX;64 6.5 IP30)4
Mozilla/5.0 (SymbianOS/9.1; U; de) AppleWebKit/413 (KHTML, like Gecko) Safari/4134
Mozilla/5.0 (X11; U; NetBSD amd64; en-US; rv:1.9.2.15) Gecko/20110308 Namoroka/3.6.154
Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/37.8918; U; en) Presto/2.12.423 Version/12.164
LG-GC900/V10a Obigo/WAP2.0 Profile/MIDP-2.1 Configuration/CLDC-1.14
MOT-V177/0.1.75 UP.Browser/6.2.3.9.c.12 (GUI) MMP/2.0 UP.Link/6.3.1.13.04
Mozilla/5.0 (compatible; wpbot/1.2; +https://forms.gle/ajBaxygz9jSR8p8G9)4
Mozilla/5.0 (compatible; archive.org_bot +http://archive.org/details/archive.org_bot) Zeno/ea9409f warc/v0.8.634
Scrapy/2.13.4 (+https://scrapy.org)4
BaiduSpider4
FeedFetcher-Google; ( http://www.google.com/feedfetcher.html)3
Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.113
SonyEricssonK550i/R1JD Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.13
grub-client-1.5.3; (grub-client-1.5.3; Crawl your own stuff with http://grub.org)3
Mozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413 es503
wii libnup/1.03
Opera/9.80 (X11; FreeBSD 8.1-RELEASE i386; Edition Next) Presto/2.12.388 Version/12.103
SEC-SGHX820/1.0 NetFront/3.2 Profile/MIDP-2.0 Configuration/CLDC-1.13
FAST-WebCrawler/3.8 (crawler at trd dot overture dot com; http://www.alltheweb.com/help/webmaster/crawler)3
Mozilla/5.0 (OS/2; U; OS/2; en-US) AppleWebKit/533.3 (KHTML, like Gecko) QupZilla/1.3.1 Safari/533.33
Mozilla/5.0 (en-us) AppleWebKit/525.13 (KHTML, like Gecko; Google Web Preview) Version/3.1 Safari/525.133
TurnitinBot (https://turnitin.com/robot/crawlerinfo.html)3
Mozilla/4.0 (compatible; MSIE 5.15; Mac_PowerPC)3
Mozilla/5.0 (compatible; Konqueror/3.5; SunOS) KHTML/3.5.1 (like Gecko)3
Mozilla/5.0 (OS/2; U; OS/2; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Arora/0.11.0 Safari/533.33
Mozilla/5.0 (X11; NetBSD amd64; rv:16.0) Gecko/20121102 Firefox/16.03
BlackBerry9000/4.6.0.167 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/1023
SonyEricssonW810i/R4EA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Link/6.3.0.0.03
msnbot-media/1.1 ( http://search.msn.com/msnbot.htm)3
Mozilla/4.0 (PDA; PalmOS/sony/model prmr/Revision:1.1.54 (en)) NetFront/3.03
Mozilla/4.0 (compatible; MSIE 6.0; j2me) ReqwirelessWeb/3.53
req/v3 (https://github.com/imroc/req)3
Mozilla/5.0 (compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)3
Opera/9.30 (Nintendo Wii; U; ; 2047-7; en)2
Googlebot-News2
WDG_Validator/1.6.22
Avant Browser/1.2.789rel1 (http://www.avantbrowser.com)2
Mozilla/5.0 (X11; U; FreeBSD x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.162
everyfeed-spider/2.0 (http://www.everyfeed.com)2
SonyEricssonS500i/R6BC Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.12
CSSCheck/1.2.22
Microsoft URL Control - 6.00.88622
Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 SonyEricssonP100/01; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/5252
Opera/9.60 (J2ME/MIDP; Opera Mini/4.1.11320/608; U; en) Presto/2.2.02
Mozilla/5.0 (X11; U; FreeBSD i386; de-CH; rv:1.9.2.8) Gecko/20100729 Firefox/3.6.82
Mozilla/5.0 (X11; CrOS aarch64 14388.61.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.107 Safari/537.362
Mozilla/5.0 (OS/2; Warp 4.5; rv:38.0) Gecko/20100101 Firefox/38.0 SeaMonkey/2.352
Mozilla/5.0 (compatible; archive.org_bot +http://archive.org/details/archive.org_bot) Zeno/6d48952 warc/v0.8.532
Gregarius/0.5.2 ( http://devlog.gregarius.net/docs/ua)2
Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.362
Mozilla/5.0 (X11; FreeBSD amd64; rv:54.0) Gecko/20100101 Firefox/54.02
MobileSafari/600.1.4 CFNetwork/711.1.12 Darwin/14.0.02
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+2
Mozilla/5.0 (Unknown; U; UNIX BSD/SYSV system; C -) AppleWebKit/527 (KHTML, like Gecko, Safari/419.3) Arora/0.10.22
Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.9.1b3) Gecko/20090429 Firefox/3.1b32
msnbot/1.0 ( http://search.msn.com/msnbot.htm)2
DoCoMo/2.0 SH901iC(c100;TB;W24H12)2
SonyEricssonZ800/R1Y Browser/SEMC-Browser/4.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Link/6.3.0.0.02
Mozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413 es702
Peach/1.01 (Ubuntu 8.04 LTS; U; en)2
SonyEricssonW660i/R6AD Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.12
Mozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/4132
BlackBerry8320/4.2.2 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/1002
Mediapartners-Google2
Mozilla/3.0 (compatible; NetPositive/2.1.1; BeOS)2
SonyEricssonK610i/R1CB Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.12
Mozilla/5.0 (compatible; archive.org_bot; Wayback Machine Live Record; +http://archive.org/details/archive.org_bot)2
WebZIP/3.5 (http://www.spidersoft.com)2
Mozilla/5.0 (OS/2; Warp 4.5; rv:10.0.12) Gecko/20100101 Firefox/10.0.122
SonyEricssonT610/R201 Profile/MIDP-1.0 Configuration/CLDC-1.02
P3P Validator2
Gulper Web Bot 0.2.4 (www.ecsl.cs.sunysb.edu/~maxim/cgi-bin/Link/GulperBot)2
Mozilla/5.0 (X11; U; SunOS sun4m; en-US; rv:1.4b) Gecko/20030517 Mozilla Firebird/0.62
Adobe Application Manager 2.02
Mozilla/5.0 (OS/2; Warp 4.5; rv:45.0) Gecko/20100101 Firefox/45.02
SonyEricssonT68/R201A2
w3m/0.5.12
HTMLParser/1.62
BlackBerry8330/4.3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/1052
Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html)2
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.12
Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.6) Gecko/20040406 Galeon/1.3.152
Mozilla/5.0 (compatible; alexa site audit/1.0; +http://www.alexa.com/help/webmasters; )2
BlackBerry7520/4.0.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/5.0.3.3 UP.Link/5.1.2.12 (Google WAP Proxy/1.0)2
Scrapy/2.11.2 (+https://scrapy.org)2
Mozilla/5.0 (Mac OS X 13_2) AppleWebKit/537.36 (KHTML, like Gecko) Safari/107.0 Safari/537.362
Mozilla/5.0 (X11; CrOS aarch64 12239.67.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.102 Safari/537.362
Mozilla/5.0 (X11; U; FreeBSD i386; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.207.0 Safari/532.02
Scrapy/2.13.3 (+https://scrapy.org)2
EmailWolf 1.002
Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)2
AliyunSecBot/Aliyun (AliyunSecBot@service.alibaba.com)2
Mozilla/5.0 (compatible; GoogleOther; +https://developers.google.com/search/docs/crawling-indexing/overview-google-crawlers)2
Mozilla/5.0 (compatible; Bytespider; spider-feedback@bytedance.com)2
Mozilla/5.0 (compatible; Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot)2
cpp-httplib/0.29.02
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)1
shadowforce.io - sslshed/0.11
Mozilla/5.0 (X11; U; FreeBSD; i386; en-US; rv:1.7) Gecko1
RepoLookoutBot/v1.1.0-297-gcf436d3 (abuse reports to abuse@repo-lookout.org)1
Mozilla/5.0 (X11; FreeBSD amd64; rv:5.0) Gecko/20100101 Firefox/5.01
Mozilla/5.0 (OS/2; Warp 4.5; rv:24.0) Gecko/20100101 Firefox/24.0 SeaMonkey/2.211
Mozilla/5.0 (OS/2; Warp 4.5; rv:31.0) Gecko/20100101 Firefox/31.0 SeaMonkey/2.281
cc1
Roku/DVP-4.1 (024.01E01250A)1
nook browser/1.01
Xenu Link Sleuth/1.3.81
Mozilla/5.0 (compatible; archive.org_bot +http://archive.org/details/archive.org_bot) Zeno/6417bfd warc/v0.8.431
Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1 (KHTML, Like Gecko) Version/6.0.0.141 Mobile Safari/534.11
Mozilla/5.0 (PLAYSTATION 3; 2.00)1
Mozilla/5.0 (compatible; Konqueror/4.5; FreeBSD) KHTML/4.5.4 (like Gecko)1
Mozilla/5.0 (compatible; Konqueror/3.5; NetBSD 4.0_RC3; X11) KHTML/3.5.7 (like Gecko)1
SonyEricssonW995/R1EA Profile/MIDP-2.1 Configuration/CLDC-1.1 UNTRUSTED/1.01
Opera/9.80 (J2ME/MIDP; Opera Mini/5.0.16823/1428; U; en) Presto/2.2.01
msnbot/1.1 ( http://search.msn.com/msnbot.htm)1
Java/1.6.0_131
W3C_Validator/1.6541
Jigsaw/2.2.5 W3C_CSS_Validator_JFouffa/2.01
SonyEricssonW850i/R1ED Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.11
AdsBot-Google ( http://www.google.com/adsbot.html)1
BlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/1031
SonyEricssonT100/R1011
SonyEricssonW580i/R6BC Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.11
LG-LX550 AU-MIC-LX550/2.0 MMP/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.11
Mozilla/5.0 (OS/2; Warp 4.5; rv:38.0) Gecko/20100101 Firefox/38.01
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.01
Mozilla/5.0 (X11; FreeBSD amd64) AppleWebKit/535.22+ (KHTML, like Gecko) Chromium/17.0.963.56 Chrome/17.0.963.56 Safari/535.22+ Epiphany/2.30.61
Bloglines/3.1 (http://www.bloglines.com)1
WebCopier v4.61
MOT-L7v/08.B7.5DR MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Link/6.3.0.0.01
SonyEricssonW950i/R100 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; 323) Opera 8.60 [en-US]1
W3C_Validator/1.305.2.12 libwww-perl/5.641
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.11
Opera/9.80 (S60; SymbOS; Opera Mobi/499; U; ru) Presto/2.4.18 Version/10.001
Mozilla/5.0 (OS/2; Warp 4.5; rv:10.0.12) Gecko/20130108 Firefox/10.0.12 SeaMonkey/2.7.21
Mozilla/5.0 (X11; NetBSD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.361
Mozilla/4.8 [en] (X11; U; SunOS; 5.7 sun4u)1
Mozilla/5.0 (compatible; archive.org_bot +http://archive.org/details/archive.org_bot) Zeno/6c4db80 warc/v0.8.681
Mozilla/5.0 (compatible; archive.org_bot +http://archive.org/details/archive.org_bot) Zeno/64a9140 warc/v0.8.681
Fuzz Faster U Fool v2.1.01
Opera/8.01 (J2ME/MIDP; Opera Mini/1.0.1479/HiFi; SonyEricsson P900; no; U; ssr)1
Mozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.9a1) Gecko/20060702 SeaMonkey/1.5a1
BlackBerry8300/4.2.2 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/107 UP.Link/6.2.3.15.01
msnbot/0.11 ( http://search.msn.com/msnbot.htm)1
libwww-perl/5.8201
Mozilla/5.0 (X11; U; OpenBSD i386; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Chrome/5.0.359.0 Safari/533.31
Mozilla/5.0 (compatible; Exabot/3.0; http://www.exabot.com/go/robot)1
Mozilla/5.0 (Mac OS X 13_2) AppleWebKit/537.36 (KHTML, like Gecko) Edge/102.0 Safari/537.361
Mozilla/5.0 (Mac OS X 13_2) AppleWebKit/537.36 (KHTML, like Gecko) Edge/113.0 Safari/537.361
Mozilla/5.0 (Mac OS X 13_2) AppleWebKit/537.36 (KHTML, like Gecko) Edge/126.0 Safari/537.361
Mozilla/5.0 (Mac OS X 13_2) AppleWebKit/537.36 (KHTML, like Gecko) Edge/120.0 Safari/537.361
Mozilla/5.0 (Mac OS X 13_2) AppleWebKit/537.36 (KHTML, like Gecko) Safari/108.0 Safari/537.361
Mozilla/5.0 (Mac OS X 13_2) AppleWebKit/537.36 (KHTML, like Gecko) Edge/109.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 (X11; FreeBSD i386; rv:28.0) Gecko/20100101 Firefox/28.0 SeaMonkey/2.251
Mozilla/5.0 (X11; U; OpenBSD arm; en-us) AppleWebKit/531.2 (KHTML, like Gecko) Safari/531.2 Epiphany/2.30.01
Mozilla/5.0 (Unknown; UNIX BSD/SYSV system) AppleWebKit/538.1 (KHTML, like Gecko) QupZilla/1.7.0 Safari/538.11
SEC-SGHX210/1.0 UP.Link/6.3.1.13.01
Mozilla/2.02E (Win95; U)1
Mozilla/5.0 (compatible; Googlebot/2.1; +https://www.google.com/bot.html)1
Mozilla/5.0 (PLAYSTATION 3; 1.10)1
Mozilla/5.0 (X11; FreeBSD amd64) AppleWebKit/536.5 (KHTML like Gecko) Chrome/19.0.1084.56 Safari/536.51
SonyEricssonT650i/R7AA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.11
SonyEricssonK800i/R1CB Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Link/6.3.0.0.01
subjs1
WP-Safe-Scanner/2.01
Mozilla/5.0 (compatible; CohereBot/1.0; +https://cohere.com/bot)1
Mozilla/5.0 (compatible; YouBot/1.0; +https://about.you.com/youbot/)1
CCBot/2.0 (https://commoncrawl.org/faq/)1
Mozilla/5.0 (compatible; Konqueror/4.1; DragonFly) KHTML/4.1.4 (like Gecko)1
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Claude-SearchBot/1.0; +searchbot@anthropic.com)1
FileTransport PolycomVVX-VVX_400-UA/5.9.6.2327 Type/Application1
Source Code of user-agents.tsx
(import statements omitted for simplicity, click to expand)
import { proxy } from '../../../db/proxy.js'
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 { o } from '../jsx/jsx.js'
import { Routes } from '../routes.js'
function agentTable(title: string, rows: [name: string, count: number][]) {
  if (rows.length === 0) return
  rows.sort((a, b) => b[1] - a[1])
  return (
    <table>
      <thead>
        <tr>
          <th>{title}</th>
          <th>Count</th>
        </tr>
      </thead>
      <tbody>
        {[
          rows.map(([name, count]) => (
            <tr>
              <td>{name}</td>
              <td>{count}</td>
            </tr>
          )),
        ]}
      </tbody>
    </table>
  )
}

function Tables() {
  return (
    <>
      <p>{getUAStatsProgress()}</p>
      {agentTable(
        'User Agent',
        proxy.ua_type.map(row => [row.name, row.count]),
      )}
      {agentTable(
        'Bot Agent',
        proxy.ua_bot.map(row => [row.name, row.count]),
      )}
      {agentTable(
        'Other Agent',
        getOtherUserAgents().map(row => [row.user_agent, row.count]),
      )}
    </>
  )
}

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 }