This page demonstrates showing query result from database.
Below list of user agents are collected from the visitor's HTTP header.
stats ready
| User Agent | Count |
|---|---|
| Windows | 85,381 |
| Bots | 18,386 |
| curl | 11,352 |
| Android | 5,909 |
| MacOS | 5,663 |
| Linux | 4,195 |
| Other | 1,310 |
| iPhone | 500 |
| ChromeOS | 96 |
| iPad | 87 |
| SonyEricsson | 84 |
| FreeBSD | 52 |
| Links | 30 |
| BlackBerry | 30 |
| NetBSD | 26 |
| OpenBSD | 20 |
| Wget | 14 |
| Lynx | 5 |
| Bot Agent | Count |
|---|---|
| ClaudeBot | 2,403 |
| CensysInspect | 2,138 |
| PythonBot | 2,082 |
| InternetMeasurement | 1,669 |
| PaloBot | 1,600 |
| OpenAIBot | 1,575 |
| GoBot | 877 |
| BingBot | 817 |
| AhrefsBot | 781 |
| YandexBot | 756 |
| GoogleBot | 601 |
| FacebookBot | 578 |
| SemrushBot | 576 |
| Amazonbot | 539 |
| MJ12Bot | 230 |
| DuckDuckGoBot | 162 |
| DotBot | 162 |
| Hkfl-Bot | 137 |
| MojeekBot | 78 |
| TwitterBot | 75 |
| BLEXBot | 65 |
| NetcraftSurveyAgent | 62 |
| BaiduBot | 61 |
| NodeBot | 52 |
| HackerNewsBot | 46 |
| wpbot | 42 |
| JavaBot | 21 |
| SERankingBacklinksBot | 17 |
| DataForSeoBot | 15 |
| ImagesiftBot | 15 |
| org_bot | 14 |
| Scrapy | 13 |
| expo-research-bot | 12 |
| AdsBot-Google | 11 |
| msnbot | 11 |
| Exabot | 10 |
| HaloBot | 10 |
| DartBot | 8 |
| HawaiiBot | 8 |
| GulperBot | 6 |
| Gaisbot | 5 |
| TurnitinBot | 4 |
| Facebot | 4 |
| TelegramBot | 3 |
| ZoomBot | 3 |
| CCBot | 3 |
| SlackBot | 2 |
| MastodonBot | 2 |
| Readybot | 2 |
| AwarioBot | 2 |
| Aranet-SearchBot | 2 |
| SleepBot | 2 |
| DejaShipBot | 2 |
| WhatsAppBot | 1 |
| YahooBot | 1 |
| Discordbot | 1 |
| EveryoneSocialBot | 1 |
| LinkedInBot | 1 |
| LivelapBot | 1 |
| Pinterestbot | 1 |
| bot | 1 |
| Quora-Bot | 1 |
| RepoLookoutBot | 1 |
| Dub.co Bot | 1 |
| Bravebot | 1 |
| VertexWP Bot | 1 |
| Googlebot | 1 |
| PulseGateBot | 1 |
| Other Agent | Count |
|---|---|
| Mozilla/5.0 zgrab/0.x | 132 |
| Mozilla/5.0 (l9scan/2.0.934323e2631313e2430313e2237313; +https://leakix.net) | 125 |
| Mozilla/5.0 | 118 |
| iaudit/0.1 | 112 |
| Mozilla/5.0 (compatible) | 96 |
| ctâgitâscanner/0.4 | 36 |
| Mozilla/5.0 (compatible; ModatScanner/1.2; +https://modat.io/) | 35 |
| Mozilla/5.0 (compatible; ModatScanner/1.1; +https://modat.io/) | 32 |
| Mozilla/5.0 (compatible; CMS-Checker/1.0; +https://example.com) | 28 |
| firefox | 19 |
| got (https://github.com/sindresorhus/got) | 18 |
| Apache/2.4.34 (Ubuntu) OpenSSL/1.1.1 (internal dummy connection) | 17 |
| Mozilla/5.0 (compatible; DomainExtractor/1.0) | 15 |
| rest-client/2.1.0 (linux x86_64) ruby/3.2.2p53 | 14 |
| facebookscraper/1.0( http://www.facebook.com/sharescraper_help.php) | 10 |
| Mozilla/5.0 (compatible; ModatScanner/1.0; +https://modat.io/) | 9 |
| 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) | 8 |
| MOT-V177/0.1.75 UP.Browser/6.2.3.9.c.12 (GUI) MMP/2.0 UP.Link/6.3.1.13.0 | 8 |
| Jigsaw/2.2.5 W3C_CSS_Validator_JFouffa/2.0 | 8 |
| portalmmm/2.0 N410i(c20;TB) | 8 |
| Download Demon/3.5.0.11 | 7 |
| CSSCheck/1.2.2 | 7 |
| Mozilla/5.0 (Unknown; UNIX BSD/SYSV system) AppleWebKit/538.1 (KHTML, like Gecko) QupZilla/1.7.0 Safari/538.1 | 7 |
| Mozilla/3.0 (compatible; NetPositive/2.1.1; BeOS) | 6 |
| 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.0 | 6 |
| Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html) | 6 |
| Mozilla/5.0 (OS/2; Warp 4.5; rv:31.0) Gecko/20100101 Firefox/31.0 SeaMonkey/2.28 | 6 |
| HTMLParser/1.6 | 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.1 | 6 |
| Opera/9.80 (J2ME/MIDP; Opera Mini/5.0.16823/1428; U; en) Presto/2.2.0 | 6 |
| LG-GC900/V10a Obigo/WAP2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1 | 6 |
| MobileSafari/600.1.4 CFNetwork/711.1.12 Darwin/14.0.0 | 6 |
| Adobe Application Manager 2.0 | 6 |
| Microsoft URL Control - 6.00.8862 | 6 |
| Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/37.8918; U; en) Presto/2.12.423 Version/12.16 | 6 |
| Mozilla/3.01Gold (Win95; I) | 6 |
| Mozilla/5.0 (X11; U; SunOS sun4m; en-US; rv:1.4b) Gecko/20030517 Mozilla Firebird/0.6 | 6 |
| Avant Browser/1.2.789rel1 (http://www.avantbrowser.com) | 6 |
| Mozilla/5.0 (compatible; Yeti/1.1; +https://naver.me/spd) | 5 |
| Ruby | 5 |
| Mozilla/4.0 (PSP (PlayStation Portable); 2.00) | 5 |
| Mozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413 es70 | 5 |
| LG-LX550 AU-MIC-LX550/2.0 MMP/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 | 5 |
| Mozilla/2.0 (compatible; Ask Jeeves/Teoma) | 5 |
| P3P Validator | 5 |
| Mozilla/5.0 (compatible; alexa site audit/1.0; +http://www.alexa.com/help/webmasters; ) | 5 |
| Mozilla/4.0 (compatible; MSIE 5.15; Mac_PowerPC) | 5 |
| Mozilla/5.0 (OS/2; Warp 4.5; rv:24.0) Gecko/20100101 Firefox/24.0 SeaMonkey/2.21 | 5 |
| Peach/1.01 (Ubuntu 8.04 LTS; U; en) | 5 |
| Mozilla/5.0 (OS/2; Warp 4.5; rv:38.0) Gecko/20100101 Firefox/38.0 | 5 |
| SEC-SGHX210/1.0 UP.Link/6.3.1.13.0 | 5 |
| Mozilla/1.22 (compatible; MSIE 5.01; PalmOS 3.0) EudoraWeb 2.1 | 5 |
| Opera/9.80 (S60; SymbOS; Opera Mobi/499; U; ru) Presto/2.4.18 Version/10.00 | 5 |
| grub-client-1.5.3; (grub-client-1.5.3; Crawl your own stuff with http://grub.org) | 5 |
| Mozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.9a1) Gecko/20060702 SeaMonkey/1.5a | 5 |
| Mozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413 es50 | 5 |
| SearchExpress | 5 |
| MizuCrawler/3.0 | 5 |
| SEC-SGHX820/1.0 NetFront/3.2 Profile/MIDP-2.0 Configuration/CLDC-1.1 | 4 |
| WebZIP/3.5 (http://www.spidersoft.com) | 4 |
| Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11 | 4 |
| Mozilla/5.0 (X11; CrOS aarch64 14526.89.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.133 Safari/537.36 | 4 |
| 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.0 | 4 |
| FeedFetcher-Google; ( http://www.google.com/feedfetcher.html) | 4 |
| Mozilla/5.0 (OS/2; Warp 4.5; rv:10.0.12) Gecko/20100101 Firefox/10.0.12 | 4 |
| Mozilla/4.77 [en] (X11; I; IRIX;64 6.5 IP30) | 4 |
| Mozilla/5.0 (compatible; Konqueror/3.5; SunOS) KHTML/3.5.1 (like Gecko) | 4 |
| Mozilla/5.0 (PLAYSTATION 3; 2.00) | 4 |
| Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14320/554; U; cs) Presto/2.2.0 | 4 |
| nook browser/1.0 | 4 |
| Mozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413 es65 | 4 |
| Mozilla/5.0 (OS/2; U; OS/2; en-US) AppleWebKit/533.3 (KHTML, like Gecko) QupZilla/1.3.1 Safari/533.3 | 4 |
| Vodafone/1.0/V802SE/SEJ001 Browser/SEMC-Browser/4.1 | 4 |
| Mozilla/5.0 (OS/2; Warp 4.5; rv:10.0.12) Gecko/20130108 Firefox/10.0.12 SeaMonkey/2.7.2 | 4 |
| Mozilla/4.0 (compatible; Dillo 3.0) | 4 |
| w3m/0.5.1 | 4 |
| Xenu Link Sleuth/1.3.8 | 4 |
| Embed PHP library | 3 |
| W3C_Validator/1.305.2.12 libwww-perl/5.64 | 3 |
| Mozilla/5.0 (OS/2; Warp 4.5; rv:45.0) Gecko/20100101 Firefox/45.0 | 3 |
| Mozilla/5.0 (SymbianOS/9.1; U; de) AppleWebKit/413 (KHTML, like Gecko) Safari/413 | 3 |
| Mozilla/2.02E (Win95; U) | 3 |
| Mozilla/4.0 (compatible; MSIE 6.0; j2me) ReqwirelessWeb/3.5 | 3 |
| libwww-perl/5.820 | 3 |
| Screaming Frog SEO Spider/8.1 | 3 |
| Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible | 3 |
| Opera/9.60 (J2ME/MIDP; Opera Mini/4.1.11320/608; U; en) Presto/2.2.0 | 3 |
| WebCopier v4.6 | 3 |
| Mozilla/5.0 (OS/2; U; OS/2; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Arora/0.11.0 Safari/533.3 | 3 |
| Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.8.1.12) Gecko/20080303 SeaMonkey/1.1.8 | 3 |
| wii libnup/1.0 | 3 |
| MOT-L7v/08.B7.5DR MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Link/6.3.0.0.0 | 3 |
| MOT-V9mm/00.62 UP.Browser/6.2.3.4.c.1.123 (GUI) MMP/2.0 | 3 |
| Web Downloader/6.9 | 3 |
| RecordedFuture Global Inventory Crawler | 3 |
| CVE-2025-55182-Checker | 3 |
| RootEvidence/1.0 | 3 |
| DejaShip/1.0 (survival-checker) | 3 |
| Mozilla/5.0 (compatible; YaK/1.0; http://linkfluence.com/; bot@linkfluence.com) | 2 |
| Lemmy/0.18.3; +https://zerobytes.monster | 2 |
| newspaperjs | 2 |
| MetadataScraper | 2 |
| 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.0 | 2 |
| 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.0 | 2 |
| undici | 2 |
| node-fetch/1.0 (+https://github.com/bitinn/node-fetch) | 2 |
| Gregarius/0.5.2 ( http://devlog.gregarius.net/docs/ua) | 2 |
| Mozilla/4.8 [en] (X11; U; SunOS; 5.7 sun4u) | 2 |
| colly - https://github.com/gocolly/colly/v2 | 2 |
| Mozilla/5.0 (OS/2; Warp 4.5; rv:45.0) Gecko/20100101 Firefox/45.0 SeaMonkey/2.42.9esr | 2 |
| Mozilla/5.0 (OS/2; Warp 4.5; rv:31.0) Gecko/20100101 Firefox/31.0 | 2 |
| 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 |
| trafilatura/1.12.2 (+https://github.com/adbar/trafilatura) | 2 |
| Roku/DVP-4.1 (024.01E01250A) | 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.1 | 2 |
| Mozilla/5.0 (Unknown; U; UNIX BSD/SYSV system; C -) AppleWebKit/527 (KHTML, like Gecko, Safari/419.3) Arora/0.10.2 | 2 |
| Java/1.6.0_13 | 2 |
| Opera/10.61 (J2ME/MIDP; Opera Mini/5.1.21219/19.999; en-US; rv:1.9.3a5) WebKit/534.5 Presto/2.6.30 | 2 |
| EmailWolf 1.00 | 2 |
| Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.1.0.2342 Mobile Safari/537.10+ | 2 |
| WDG_Validator/1.6.2 | 2 |
| FAST-WebCrawler/3.8 (crawler at trd dot overture dot com; http://www.alltheweb.com/help/webmaster/crawler) | 2 |
| 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.3 | 2 |
| Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.9.1b3) Gecko/20090429 Firefox/3.1b3 | 2 |
| Mediapartners-Google | 2 |
| Mozilla/5.0 (Mac OS X 13_2) AppleWebKit/537.36 (KHTML, like Gecko) Safari/102.0 Safari/537.36 | 2 |
| Mozilla/5.0 (compatible; Konqueror/4.1; DragonFly) KHTML/4.1.4 (like Gecko) | 2 |
| Mozilla/5.0 (compatible; SecurityScanner/1.0) | 2 |
| Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org) | 2 |
| MizuCrawler/1.0 | 2 |
| Racket/6.8 (net/http-client) | 1 |
| topicaxis | 1 |
| 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.0 | 1 |
| rss/4.5.6 | 1 |
| MetaInspector/5.7.0 (+https://github.com/jaimeiniesta/metainspector) | 1 |
| newspaper/0.2.8 | 1 |
| 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.0 | 1 |
| shadowforce.io - sslshed/0.1 | 1 |
| cc | 1 |
| Mozilla/5.0 (X11; CrOS aarch64 14388.61.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.107 Safari/537.36 | 1 |
| W3C_Validator/1.654 | 1 |
| DoCoMo/2.0 SH901iC(c100;TB;W24H12) | 1 |
| Offline Explorer/2.5 | 1 |
| 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.0 | 1 |
| Fuzz Faster U Fool v2.1.0 | 1 |
| Mozilla/5.0 (Mac OS X 13_2) AppleWebKit/537.36 (KHTML, like Gecko) Safari/129.0 Safari/537.36 | 1 |
| Mozilla/5.0 (Mac OS X 13_2) AppleWebKit/537.36 (KHTML, like Gecko) Safari/111.0 Safari/537.36 | 1 |
| Mozilla/5.0 (Mac OS X 13_2) AppleWebKit/537.36 (KHTML, like Gecko) Safari/120.0 Safari/537.36 | 1 |
| Mozilla/5.0 (Mac OS X 13_2) AppleWebKit/537.36 (KHTML, like Gecko) Edge/126.0 Safari/537.36 | 1 |
| Mozilla/5.0 (en-us) AppleWebKit/525.13 (KHTML, like Gecko; Google Web Preview) Version/3.1 Safari/525.13 | 1 |
| 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.0 | 1 |
| Fuzz Faster U Fool v2.1.0-dev | 1 |
| dubox;4.3.9;SM-M145F;android-android;15;JSbridge1.0.10;jointbridge;1.1.39; | 1 |
| Java/1.8.0_322 | 1 |
| 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 |
| GoogleOther | 1 |
| Mozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413 | 1 |
| Mozilla/5.0 (compatible; showhn-cleaner/1.0) | 1 |
| Mozilla/5.0 (compatible; showhn-cleaner/1.0; +https://news.ycombinator.com) | 1 |
| fasthttp | 1 |
user-agents.tsximport { 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>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 }