mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-09-27 07:58:45 +03:00
Compare commits
1 Commits
fbf72e8e2a
...
ac1d06d2ee
Author | SHA1 | Date | |
---|---|---|---|
|
ac1d06d2ee |
@ -2,18 +2,15 @@
|
|||||||
/* jshint esversion: 6 */
|
/* jshint esversion: 6 */
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
|
||||||
const defaultReplacements = {
|
const generateMJS = (module) => {
|
||||||
mjs: [
|
|
||||||
[/const (.+?)\s*=\s*require\(\'\.(.+)\'\)/ig, 'import $1 from \'\.$2.mjs\''],
|
|
||||||
[/const (.+?)\s*=\s*require\(\'(.+)\'\)/ig, 'import $1 from \'$2\''],
|
|
||||||
[/module\.exports =/ig, 'export']
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
const generateFile = (module) => {
|
|
||||||
let { src, dest, title, replacements } = module;
|
let { src, dest, title, replacements } = module;
|
||||||
let text = fs.readFileSync(src, 'utf-8');
|
let text = fs.readFileSync(src, 'utf-8');
|
||||||
|
|
||||||
|
replacements.push(
|
||||||
|
[/const (.+?)\s*=\s*require\(\'\.(.+)\'\)/ig, 'import $1 from \'\.$2.mjs\''],
|
||||||
|
[/const (.+?)\s*=\s*require\(\'(.+)\'\)/ig, 'import $1 from \'$2\''],
|
||||||
|
[/module\.exports =/ig, 'export']
|
||||||
|
);
|
||||||
replacements.forEach(rep => {
|
replacements.forEach(rep => {
|
||||||
text = text.replace(rep[0], rep[1]);
|
text = text.replace(rep[0], rep[1]);
|
||||||
});
|
});
|
||||||
@ -21,54 +18,42 @@ const generateFile = (module) => {
|
|||||||
console.log(`Generate ${dest}`);
|
console.log(`Generate ${dest}`);
|
||||||
|
|
||||||
fs.writeFileSync(dest,
|
fs.writeFileSync(dest,
|
||||||
`// ${title}
|
`// Generated ESM version of ${title}
|
||||||
// DO NOT EDIT THIS FILE!
|
// DO NOT EDIT THIS FILE!
|
||||||
// Source: /${src}
|
// Source: /${src}
|
||||||
|
|
||||||
${text}`, 'utf-8');
|
${text}`, 'utf-8');
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const files = [
|
const modules = [
|
||||||
{
|
{
|
||||||
src : 'src/main/ua-parser.js',
|
src : 'src/main/ua-parser.js',
|
||||||
dest : 'src/main/ua-parser.mjs',
|
dest : 'src/main/ua-parser.mjs',
|
||||||
title : 'Generated ESM version of ua-parser-js',
|
title : 'ua-parser-js',
|
||||||
replacements : [
|
replacements : [
|
||||||
[/\(func[\s\S]+strict\';/ig, ''],
|
[/\(func[\s\S]+strict\';/ig, ''],
|
||||||
[/esversion\: 3/ig, 'esversion: 6'],
|
[/esversion\: 3/ig, 'esversion: 6'],
|
||||||
[/\/[\/\s]+export[\s\S]+/ig,'export {UAParser};'],
|
[/\/[\/\s]+export[\s\S]+/ig,'export {UAParser};']
|
||||||
...defaultReplacements.mjs
|
|
||||||
]
|
]
|
||||||
},
|
},{
|
||||||
{
|
|
||||||
src : 'src/enums/ua-parser-enums.js',
|
src : 'src/enums/ua-parser-enums.js',
|
||||||
dest :'src/enums/ua-parser-enums.mjs',
|
dest :'src/enums/ua-parser-enums.mjs',
|
||||||
title : 'Generated ESM version of ua-parser-js/enums',
|
title : 'ua-parser-js/enums',
|
||||||
replacements : [...defaultReplacements.mjs]
|
replacements : []
|
||||||
},
|
|
||||||
{
|
|
||||||
src : 'src/enums/ua-parser-enums.js',
|
|
||||||
dest :'src/enums/ua-parser-enums.d.ts',
|
|
||||||
title : 'Generated type declarations of ua-parser-js/enums',
|
|
||||||
replacements : [
|
|
||||||
[/(const .+) = object\.freeze\(/ig, 'export $1: Readonly<'],
|
|
||||||
[/(const .+) =( .+;)/ig, 'export $1: typeof$2'],
|
|
||||||
[/}\);/ig, '}>;'],
|
|
||||||
[/module\.exports =.+/igs, '']
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src : 'src/extensions/ua-parser-extensions.js',
|
src : 'src/extensions/ua-parser-extensions.js',
|
||||||
dest : 'src/extensions/ua-parser-extensions.mjs',
|
dest : 'src/extensions/ua-parser-extensions.mjs',
|
||||||
title : 'Generated ESM version of ua-parser-js/extensions',
|
title : 'ua-parser-js/extensions',
|
||||||
replacements : [...defaultReplacements.mjs]
|
replacements : []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src : 'src/helpers/ua-parser-helpers.js',
|
src : 'src/helpers/ua-parser-helpers.js',
|
||||||
dest : 'src/helpers/ua-parser-helpers.mjs',
|
dest : 'src/helpers/ua-parser-helpers.mjs',
|
||||||
title : 'Generated ESM version of ua-parser-js/helpers',
|
title : 'ua-parser-js/helpers',
|
||||||
replacements : [...defaultReplacements.mjs]
|
replacements : []
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
files.forEach(module => generateFile(module));
|
modules.forEach(module => generateMJS(module));
|
769
src/enums/ua-parser-enums.d.ts
vendored
769
src/enums/ua-parser-enums.d.ts
vendored
@ -1,171 +1,160 @@
|
|||||||
// Generated type declarations of ua-parser-js/enums
|
// Type definitions for Enums submodule of UAParser.js v2.0.4
|
||||||
// DO NOT EDIT THIS FILE!
|
// Project: https://github.com/faisalman/ua-parser-js
|
||||||
// Source: /src/enums/ua-parser-enums.js
|
// Definitions by: Faisal Salman <https://github.com/faisalman>
|
||||||
|
|
||||||
///////////////////////////////////////////////
|
|
||||||
/* Enums for UAParser.js v2.0.4
|
|
||||||
https://github.com/faisalman/ua-parser-js
|
|
||||||
Author: Faisal Salman <f@faisalman.com>
|
|
||||||
AGPLv3 License */
|
|
||||||
//////////////////////////////////////////////
|
|
||||||
|
|
||||||
/*jshint esversion: 6 */
|
|
||||||
|
|
||||||
export const BrowserName: Readonly<{
|
export const BrowserName: Readonly<{
|
||||||
'115': '115',
|
'115': "115",
|
||||||
'2345': '2345',
|
'2345': "2345",
|
||||||
'360': '360',
|
'360': "360",
|
||||||
ALIPAY: 'Alipay',
|
ALIPAY: "Alipay",
|
||||||
AMAYA: 'Amaya',
|
AMAYA: "Amaya",
|
||||||
ANDROID: 'Android Browser',
|
ANDROID: "Android Browser",
|
||||||
ARORA: 'Arora',
|
ARORA: "Arora",
|
||||||
AVANT: 'Avant',
|
AVANT: "Avant",
|
||||||
AVAST: 'Avast Secure Browser',
|
AVAST: "Avast Secure Browser",
|
||||||
AVG: 'AVG Secure Browser',
|
AVG: "AVG Secure Browser",
|
||||||
BAIDU: 'Baidu Browser',
|
BAIDU: "Baidu Browser",
|
||||||
BASILISK: 'Basilisk',
|
BASILISK: "Basilisk",
|
||||||
BLAZER: 'Blazer',
|
BLAZER: "Blazer",
|
||||||
BOLT: 'Bolt',
|
BOLT: "Bolt",
|
||||||
BOWSER: 'Bowser',
|
BOWSER: "Bowser",
|
||||||
BRAVE: 'Brave',
|
BRAVE: "Brave",
|
||||||
CAMINO: 'Camino',
|
CAMINO: "Camino",
|
||||||
CHIMERA: 'Chimera',
|
CHIMERA: "Chimera",
|
||||||
CHROME: 'Chrome',
|
CHROME: "Chrome",
|
||||||
CHROME_HEADLESS: 'Chrome Headless',
|
CHROME_HEADLESS: "Chrome Headless",
|
||||||
CHROME_MOBILE: 'Mobile Chrome',
|
CHROME_MOBILE: "Mobile Chrome",
|
||||||
CHROME_WEBVIEW: 'Chrome WebView',
|
CHROME_WEBVIEW: "Chrome WebView",
|
||||||
CHROMIUM: 'Chromium',
|
CHROMIUM: "Chromium",
|
||||||
COBALT: 'Cobalt',
|
COBALT: "Cobalt",
|
||||||
COC_COC: 'Coc Coc',
|
COC_COC: "Coc Coc",
|
||||||
CONKEROR: 'Conkeror',
|
CONKEROR: "Conkeror",
|
||||||
DAUM: 'Daum',
|
DAUM: "Daum",
|
||||||
DILLO: 'Dillo',
|
DILLO: "Dillo",
|
||||||
DOLPHIN: 'Dolphin',
|
DOLPHIN: "Dolphin",
|
||||||
DOOBLE: 'Dooble',
|
DOOBLE: 'Dooble',
|
||||||
DORIS: 'Doris',
|
DORIS: "Doris",
|
||||||
DRAGON: 'Dragon',
|
DRAGON: "Dragon",
|
||||||
DUCKDUCKGO: 'DuckDuckGo',
|
DUCKDUCKGO: "DuckDuckGo",
|
||||||
ECOSIA: 'Ecosia',
|
ECOSIA: "Ecosia",
|
||||||
EDGE: 'Edge',
|
EDGE: "Edge",
|
||||||
EDGE_WEBVIEW: 'Edge WebView',
|
EDGE_WEBVIEW: "Edge WebView",
|
||||||
EDGE_WEBVIEW2: 'Edge WebView2',
|
EDGE_WEBVIEW2: "Edge WebView2",
|
||||||
EPIPHANY: 'Epiphany',
|
EPIPHANY: "Epiphany",
|
||||||
FACEBOOK: 'Facebook',
|
FACEBOOK: "Facebook",
|
||||||
FALKON: 'Falkon',
|
FALKON: "Falkon",
|
||||||
FIREBIRD: 'Firebird',
|
FIREBIRD: "Firebird",
|
||||||
FIREFOX: 'Firefox',
|
FIREFOX: "Firefox",
|
||||||
FIREFOX_FOCUS: 'Firefox Focus',
|
FIREFOX_FOCUS: "Firefox Focus",
|
||||||
FIREFOX_MOBILE: 'Mobile Firefox',
|
FIREFOX_MOBILE: "Mobile Firefox",
|
||||||
FIREFOX_REALITY: 'Firefox Reality',
|
FIREFOX_REALITY: "Firefox Reality",
|
||||||
FENNEC: 'Fennec',
|
FENNEC: "Fennec",
|
||||||
FLOCK: 'Flock',
|
FLOCK: "Flock",
|
||||||
FLOW: 'Flow',
|
FLOW: "Flow",
|
||||||
GO: 'GoBrowser',
|
GO: "GoBrowser",
|
||||||
GOOGLE_SEARCH: 'GSA',
|
GOOGLE_SEARCH: "GSA",
|
||||||
HELIO: 'Helio',
|
HELIO: "Helio",
|
||||||
HEYTAP: 'HeyTap',
|
HEYTAP: "HeyTap",
|
||||||
HONOR: 'Honor',
|
HONOR: "Honor",
|
||||||
HUAWEI: 'Huawei Browser',
|
HUAWEI: "Huawei Browser",
|
||||||
ICAB: 'iCab',
|
ICAB: "iCab",
|
||||||
ICE: 'ICE Browser',
|
ICE: "ICE Browser",
|
||||||
ICEAPE: 'IceApe',
|
ICEAPE: "IceApe",
|
||||||
ICECAT: 'IceCat',
|
ICECAT: "IceCat",
|
||||||
ICEDRAGON: 'IceDragon',
|
ICEDRAGON: "IceDragon",
|
||||||
ICEWEASEL: 'IceWeasel',
|
ICEWEASEL: "IceWeasel",
|
||||||
IE: 'IE',
|
IE: "IE",
|
||||||
INSTAGRAM: 'Instagram',
|
INSTAGRAM: "Instagram",
|
||||||
IRIDIUM: 'Iridium',
|
IRIDIUM: "Iridium",
|
||||||
IRON: 'Iron',
|
IRON: "Iron",
|
||||||
JASMINE: 'Jasmine',
|
JASMINE: "Jasmine",
|
||||||
KONQUEROR: 'Konqueror',
|
KONQUEROR: "Konqueror",
|
||||||
KAKAO: 'KakaoTalk',
|
KAKAO: "KakaoTalk",
|
||||||
KHTML: 'KHTML',
|
KHTML: "KHTML",
|
||||||
K_MELEON: 'K-Meleon',
|
K_MELEON: "K-Meleon",
|
||||||
KLAR: 'Klar',
|
KLAR: "Klar",
|
||||||
KLARNA: 'Klarna',
|
KLARNA: "Klarna",
|
||||||
KINDLE: 'Kindle',
|
KINDLE: "Kindle",
|
||||||
LENOVO: 'Smart Lenovo Browser',
|
LENOVO: "Smart Lenovo Browser",
|
||||||
LADYBIRD: 'Ladybird',
|
LADYBIRD: "Ladybird",
|
||||||
LG: 'LG Browser',
|
LG: "LG Browser",
|
||||||
LIBREWOLF: 'LibreWolf',
|
LIBREWOLF: "LibreWolf",
|
||||||
LIEBAO: 'LBBROWSER',
|
LIEBAO: "LBBROWSER",
|
||||||
LINE: 'Line',
|
LINE: "Line",
|
||||||
LINKEDIN: 'LinkedIn',
|
LINKEDIN: "LinkedIn",
|
||||||
LINKS: 'Links',
|
LINKS: "Links",
|
||||||
LUNASCAPE: 'Lunascape',
|
LUNASCAPE: "Lunascape",
|
||||||
LYNX: 'Lynx',
|
LYNX: "Lynx",
|
||||||
MAEMO: 'Maemo Browser',
|
MAEMO: "Maemo Browser",
|
||||||
MAXTHON: 'Maxthon',
|
MAXTHON: "Maxthon",
|
||||||
MIDORI: 'Midori',
|
MIDORI: "Midori",
|
||||||
MINIMO: 'Minimo',
|
MINIMO: "Minimo",
|
||||||
MIUI: 'MIUI Browser',
|
MIUI: "MIUI Browser",
|
||||||
MOZILLA: 'Mozilla',
|
MOZILLA: "Mozilla",
|
||||||
MOSAIC: 'Mosaic',
|
MOSAIC: "Mosaic",
|
||||||
NAVER: 'Naver',
|
NAVER: "Naver",
|
||||||
NETFRONT: 'NetFront',
|
NETFRONT: "NetFront",
|
||||||
NETSCAPE: 'Netscape',
|
NETSCAPE: "Netscape",
|
||||||
NETSURF: 'Netsurf',
|
NETSURF: "Netsurf",
|
||||||
NOKIA: 'Nokia Browser',
|
NOKIA: "Nokia Browser",
|
||||||
OBIGO: 'Obigo',
|
OBIGO: "Obigo",
|
||||||
OCULUS: 'Oculus Browser',
|
OCULUS: "Oculus Browser",
|
||||||
OMNIWEB: 'OmniWeb',
|
OMNIWEB: "OmniWeb",
|
||||||
OPERA: 'Opera',
|
OPERA: "Opera",
|
||||||
OPERA_COAST: 'Opera Coast',
|
OPERA_COAST: "Opera Coast",
|
||||||
OPERA_GX: 'Opera GX',
|
OPERA_GX: "Opera GX",
|
||||||
OPERA_MINI: 'Opera Mini',
|
OPERA_MINI: "Opera Mini",
|
||||||
OPERA_MOBI: 'Opera Mobi',
|
OPERA_MOBI: "Opera Mobi",
|
||||||
OPERA_TABLET: 'Opera Tablet',
|
OPERA_TABLET: "Opera Tablet",
|
||||||
OPERA_TOUCH: 'Opera Touch',
|
OPERA_TOUCH: "Opera Touch",
|
||||||
OTTER: 'Otter',
|
OTTER: "Otter",
|
||||||
OVI: 'OviBrowser',
|
OVI: "OviBrowser",
|
||||||
PALEMOON: 'PaleMoon',
|
PALEMOON: "PaleMoon",
|
||||||
PHANTOMJS: 'PhantomJS',
|
PHANTOMJS: "PhantomJS",
|
||||||
PHOENIX: 'Phoenix',
|
PHOENIX: "Phoenix",
|
||||||
PICOBROWSER: 'Pico Browser',
|
PICOBROWSER: "Pico Browser",
|
||||||
POLARIS: 'Polaris',
|
POLARIS: "Polaris",
|
||||||
PUFFIN: 'Puffin',
|
PUFFIN: "Puffin",
|
||||||
QQ: 'QQBrowser',
|
QQ: "QQBrowser",
|
||||||
QQ_LITE: 'QQBrowserLite',
|
QQ_LITE: "QQBrowserLite",
|
||||||
QUARK: 'Quark',
|
QUARK: "Quark",
|
||||||
QUPZILLA: 'QupZilla',
|
QUPZILLA: "QupZilla",
|
||||||
QUTEBROWSER: 'qutebrowser',
|
QUTEBROWSER: "qutebrowser",
|
||||||
REKONQ: 'rekonq',
|
REKONQ: "rekonq",
|
||||||
ROCKMELT: 'Rockmelt',
|
ROCKMELT: "Rockmelt",
|
||||||
SAFARI: 'Safari',
|
SAFARI: "Safari",
|
||||||
SAFARI_MOBILE: 'Mobile Safari',
|
SAFARI_MOBILE: "Mobile Safari",
|
||||||
SAILFISH: 'Sailfish Browser',
|
SAILFISH: "Sailfish Browser",
|
||||||
SAMSUNG: 'Samsung Internet',
|
SAMSUNG: "Samsung Internet",
|
||||||
SEAMONKEY: 'SeaMonkey',
|
SEAMONKEY: "SeaMonkey",
|
||||||
SILK: 'Silk',
|
SILK: "Silk",
|
||||||
SKYFIRE: 'Skyfire',
|
SKYFIRE: "Skyfire",
|
||||||
SLEIPNIR: 'Sleipnir',
|
SLEIPNIR: "Sleipnir",
|
||||||
SLIMBOAT: 'SlimBoat',
|
SLIMBOAT: "SlimBoat",
|
||||||
SLIMBROWSER: 'SlimBrowser',
|
SLIMBROWSER: "SlimBrowser",
|
||||||
SLIMJET: 'Slimjet',
|
SLIMJET: "Slimjet",
|
||||||
SNAPCHAT: 'Snapchat',
|
SNAPCHAT: "Snapchat",
|
||||||
SOGOU_EXPLORER: 'Sogou Explorer',
|
SOGOU_EXPLORER: "Sogou Explorer",
|
||||||
SOGOU_MOBILE: 'Sogou Mobile',
|
SOGOU_MOBILE: "Sogou Mobile",
|
||||||
SURF: 'Surf',
|
SURF: "Surf",
|
||||||
SWIFTFOX: 'Swiftfox',
|
SWIFTFOX: "Swiftfox",
|
||||||
TESLA: 'Tesla',
|
TESLA: "Tesla",
|
||||||
TIKTOK: 'TikTok',
|
TIKTOK: "TikTok",
|
||||||
TIZEN: 'Tizen Browser',
|
TIZEN: "Tizen Browser",
|
||||||
TWITTER: 'Twitter',
|
TWITTER: "Twitter",
|
||||||
UC: 'UCBrowser',
|
UC: "UCBrowser",
|
||||||
UP: 'UP.Browser',
|
UP: "UP.Browser",
|
||||||
VIVALDI: 'Vivaldi',
|
VIVALDI: "Vivaldi",
|
||||||
VIVO: 'Vivo Browser',
|
VIVO: "Vivo Browser",
|
||||||
W3M: 'w3m',
|
W3M: "w3m",
|
||||||
WATERFOX: 'Waterfox',
|
WATERFOX: "Waterfox",
|
||||||
WEBKIT: 'WebKit',
|
WEBKIT: "WebKit",
|
||||||
WECHAT: 'WeChat',
|
WECHAT: "WeChat",
|
||||||
WEIBO: 'Weibo',
|
WEIBO: "Weibo",
|
||||||
WHALE: 'Whale',
|
WHALE: "Whale",
|
||||||
WOLVIC: 'Wolvic',
|
WOLVIC: "Wolvic",
|
||||||
YANDEX: 'Yandex',
|
YANDEX: "Yandex",
|
||||||
ZALO: 'Zalo'
|
ZALO: "Zalo",
|
||||||
|
|
||||||
// TODO : test!
|
|
||||||
}>;
|
}>;
|
||||||
/**
|
/**
|
||||||
* @deprecated Use `BrowserName` instead
|
* @deprecated Use `BrowserName` instead
|
||||||
@ -173,34 +162,34 @@ export const BrowserName: Readonly<{
|
|||||||
export const Browser: typeof BrowserName;
|
export const Browser: typeof BrowserName;
|
||||||
|
|
||||||
export const BrowserType: Readonly<{
|
export const BrowserType: Readonly<{
|
||||||
CRAWLER: 'crawler',
|
CRAWLER: "crawler",
|
||||||
CLI: 'cli',
|
CLI: "cli",
|
||||||
EMAIL: 'email',
|
EMAIL: "email",
|
||||||
FETCHER: 'fetcher',
|
FETCHER: "fetcher",
|
||||||
INAPP: 'inapp',
|
INAPP: "inapp",
|
||||||
MEDIAPLAYER: 'mediaplayer',
|
MEDIAPLAYER: "mediaplayer",
|
||||||
LIBRARY: 'library'
|
LIBRARY: "library",
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
export const CPUArch: Readonly<{
|
export const CPUArch: Readonly<{
|
||||||
'68K': '68k',
|
'68K': "68k",
|
||||||
ALPHA: 'alpha',
|
ALPHA: "alpha",
|
||||||
ARM : 'arm',
|
ARM: "arm",
|
||||||
ARM_64: 'arm64',
|
ARM_64: "arm64",
|
||||||
ARM_HF: 'armhf',
|
ARM_HF: "armhf",
|
||||||
AVR: 'avr',
|
AVR: "avr",
|
||||||
AVR_32: 'avr32',
|
AVR_32: "avr32",
|
||||||
IA64: 'ia64',
|
IA64: "ia64",
|
||||||
IRIX: 'irix',
|
IRIX: "irix",
|
||||||
IRIX_64: 'irix64',
|
IRIX_64: "irix64",
|
||||||
MIPS: 'mips',
|
MIPS: "mips",
|
||||||
MIPS_64: 'mips64',
|
MIPS_64: "mips64",
|
||||||
PA_RISC: 'pa-risc',
|
PA_RISC: "pa-risc",
|
||||||
PPC: 'ppc',
|
PPC: "ppc",
|
||||||
SPARC: 'sparc',
|
SPARC: "sparc",
|
||||||
SPARC_64: 'sparc64',
|
SPARC_64: "sparc64",
|
||||||
X86: 'ia32',
|
X86: "ia32",
|
||||||
X86_64: 'amd64'
|
X86_64: "amd64",
|
||||||
}>;
|
}>;
|
||||||
/**
|
/**
|
||||||
* @deprecated Use `CPUArch` instead
|
* @deprecated Use `CPUArch` instead
|
||||||
@ -208,14 +197,14 @@ export const CPUArch: Readonly<{
|
|||||||
export const CPU: typeof CPUArch;
|
export const CPU: typeof CPUArch;
|
||||||
|
|
||||||
export const DeviceType: Readonly<{
|
export const DeviceType: Readonly<{
|
||||||
CONSOLE: 'console',
|
CONSOLE: "console",
|
||||||
DESKTOP: 'desktop',
|
DESKTOP: "desktop",
|
||||||
EMBEDDED: 'embedded',
|
EMBEDDED: "embedded",
|
||||||
MOBILE: 'mobile',
|
MOBILE: "mobile",
|
||||||
SMARTTV: 'smarttv',
|
SMARTTV: "smarttv",
|
||||||
TABLET: 'tablet',
|
TABLET: "tablet",
|
||||||
WEARABLE: 'wearable',
|
WEARABLE: "wearable",
|
||||||
XR: 'xr'
|
XR: "xr"
|
||||||
}>;
|
}>;
|
||||||
/**
|
/**
|
||||||
* @deprecated Use `DeviceType` instead
|
* @deprecated Use `DeviceType` instead
|
||||||
@ -223,80 +212,78 @@ export const DeviceType: Readonly<{
|
|||||||
export const Device: typeof DeviceType;
|
export const Device: typeof DeviceType;
|
||||||
|
|
||||||
export const DeviceVendor: Readonly<{
|
export const DeviceVendor: Readonly<{
|
||||||
ACER: 'Acer',
|
ACER: "Acer",
|
||||||
ADVAN: 'Advan',
|
ADVAN: "Advan",
|
||||||
ALCATEL: 'Alcatel',
|
ALCATEL: "Alcatel",
|
||||||
APPLE: 'Apple',
|
APPLE: "Apple",
|
||||||
AMAZON: 'Amazon',
|
AMAZON: "Amazon",
|
||||||
ARCHOS: 'Archos',
|
ARCHOS: "Archos",
|
||||||
ASUS: 'ASUS',
|
ASUS: "ASUS",
|
||||||
ATT: 'AT&T',
|
ATT: "AT&T",
|
||||||
BENQ: 'BenQ',
|
BENQ: "BenQ",
|
||||||
BLACKBERRY: 'BlackBerry',
|
BLACKBERRY: "BlackBerry",
|
||||||
BLU: 'BLU',
|
BLU: "BLU",
|
||||||
CAT: 'Cat',
|
CAT: "Cat",
|
||||||
DELL: 'Dell',
|
DELL: "Dell",
|
||||||
ENERGIZER: 'Energizer',
|
ENERGIZER: "Energizer",
|
||||||
ESSENTIAL: 'Essential',
|
ESSENTIAL: "Essential",
|
||||||
FACEBOOK: 'Facebook',
|
FACEBOOK: "Facebook",
|
||||||
FAIRPHONE: 'Fairphone',
|
FAIRPHONE: "Fairphone",
|
||||||
GEEKSPHONE: 'GeeksPhone',
|
GEEKSPHONE: "GeeksPhone",
|
||||||
GENERIC: 'Generic',
|
GENERIC: "Generic",
|
||||||
GOOGLE: 'Google',
|
GOOGLE: "Google",
|
||||||
HMD: 'HMD',
|
HMD: "HMD",
|
||||||
HP: 'HP',
|
HP: "HP",
|
||||||
HTC: 'HTC',
|
HTC: "HTC",
|
||||||
HUAWEI: 'Huawei',
|
HUAWEI: "Huawei",
|
||||||
IMO: 'IMO',
|
IMO: "IMO",
|
||||||
INFINIX: 'Infinix',
|
INFINIX: "Infinix",
|
||||||
ITEL: 'itel',
|
ITEL: "itel",
|
||||||
JOLLA: 'Jolla',
|
JOLLA: "Jolla",
|
||||||
KOBO: 'Kobo',
|
KOBO: "Kobo",
|
||||||
LAVA: 'Lava',
|
LAVA: "Lava",
|
||||||
LENOVO: 'Lenovo',
|
LENOVO: "Lenovo",
|
||||||
LG: 'LG',
|
LG: "LG",
|
||||||
MEIZU: 'Meizu',
|
MEIZU: "Meizu",
|
||||||
MICROMAX: 'Micromax',
|
MICROMAX: "Micromax",
|
||||||
MICROSOFT: 'Microsoft',
|
MICROSOFT: "Microsoft",
|
||||||
MOTOROLA: 'Motorola',
|
MOTOROLA: "Motorola",
|
||||||
NEXIAN: 'Nexian',
|
NEXIAN: "Nexian",
|
||||||
NINTENDO: 'Nintendo',
|
NINTENDO: "Nintendo",
|
||||||
NOKIA: 'Nokia',
|
NOKIA: "Nokia",
|
||||||
NOTHING: 'Nothing',
|
NOTHING: "Nothing",
|
||||||
NVIDIA: 'Nvidia',
|
NVIDIA: "Nvidia",
|
||||||
ONEPLUS: 'OnePlus',
|
ONEPLUS: "OnePlus",
|
||||||
OPPO: 'OPPO',
|
OPPO: "OPPO",
|
||||||
OUYA: 'Ouya',
|
OUYA: "Ouya",
|
||||||
PALM: 'Palm',
|
PALM: "Palm",
|
||||||
PANASONIC: 'Panasonic',
|
PANASONIC: "Panasonic",
|
||||||
PEBBLE: 'Pebble',
|
PEBBLE: "Pebble",
|
||||||
PHILIPS: 'Philips',
|
PHILIPS: "Philips",
|
||||||
PICO: 'Pico',
|
PICO: "Pico",
|
||||||
POLYTRON: 'Polytron',
|
POLYTRON: "Polytron",
|
||||||
REALME: 'Realme',
|
REALME: "Realme",
|
||||||
RETROID: 'Retroid',
|
RETROID: "Retroid",
|
||||||
RIM: 'RIM',
|
RIM: "RIM",
|
||||||
ROKU: 'Roku',
|
ROKU: "Roku",
|
||||||
SAMSUNG: 'Samsung',
|
SAMSUNG: "Samsung",
|
||||||
SHARP: 'Sharp',
|
SHARP: "Sharp",
|
||||||
SIEMENS: 'Siemens',
|
SIEMENS: "Siemens",
|
||||||
SMARTFREN: 'Smartfren',
|
SMARTFREN: "Smartfren",
|
||||||
SONY: 'Sony',
|
SONY: "Sony",
|
||||||
SPRINT: 'Sprint',
|
SPRINT: "Sprint",
|
||||||
TCL: 'TCL',
|
TCL: "TCL",
|
||||||
TECHNISAT: 'TechniSAT',
|
TECHNISAT: "TechniSAT",
|
||||||
TECNO: 'Tecno',
|
TECNO: "Tecno",
|
||||||
TESLA: 'Tesla',
|
TESLA: "Tesla",
|
||||||
ULEFONE: 'Ulefone',
|
ULEFONE: "Ulefone",
|
||||||
VIVO: 'Vivo',
|
VIVO: "Vivo",
|
||||||
VIZIO: 'Vizio',
|
VIZIO: "Vizio",
|
||||||
VODAFONE: 'Vodafone',
|
VODAFONE: "Vodafone",
|
||||||
XBOX: 'Xbox',
|
XBOX: "Xbox",
|
||||||
XIAOMI: 'Xiaomi',
|
XIAOMI: "Xiaomi",
|
||||||
ZEBRA: 'Zebra',
|
ZEBRA: "Zebra",
|
||||||
ZTE: 'ZTE',
|
ZTE: "ZTE",
|
||||||
|
|
||||||
// TODO : test!
|
|
||||||
}>;
|
}>;
|
||||||
/**
|
/**
|
||||||
* @deprecated Use `DeviceVendor` instead
|
* @deprecated Use `DeviceVendor` instead
|
||||||
@ -304,26 +291,26 @@ export const DeviceVendor: Readonly<{
|
|||||||
export const Vendor: typeof DeviceVendor;
|
export const Vendor: typeof DeviceVendor;
|
||||||
|
|
||||||
export const EngineName: Readonly<{
|
export const EngineName: Readonly<{
|
||||||
AMAYA: 'Amaya',
|
AMAYA: "Amaya",
|
||||||
ARKWEB: 'ArkWeb',
|
ARKWEB: "ArkWeb",
|
||||||
BLINK: 'Blink',
|
BLINK: "Blink",
|
||||||
EDGEHTML: 'EdgeHTML',
|
EDGEHTML: "EdgeHTML",
|
||||||
FLOW: 'Flow',
|
FLOW: "Flow",
|
||||||
GECKO: 'Gecko',
|
GECKO: "Gecko",
|
||||||
GOANNA: 'Goanna',
|
GOANNA: "Goanna",
|
||||||
ICAB: 'iCab',
|
ICAB: "iCab",
|
||||||
KHTML: 'KHTML',
|
KHTML: "KHTML",
|
||||||
LIBWEB: 'LibWeb',
|
LIBWEB: "LibWeb",
|
||||||
LINKS: 'Links',
|
LINKS: "Links",
|
||||||
LYNX: 'Lynx',
|
LYNX: "Lynx",
|
||||||
NETFRONT: 'NetFront',
|
NETFRONT: "NetFront",
|
||||||
NETSURF: 'NetSurf',
|
NETSURF: "NetSurf",
|
||||||
PRESTO: 'Presto',
|
PRESTO: "Presto",
|
||||||
SERVO: 'Servo',
|
SERVO: "Servo",
|
||||||
TASMAN: 'Tasman',
|
TASMAN: "Tasman",
|
||||||
TRIDENT: 'Trident',
|
TRIDENT: "Trident",
|
||||||
W3M: 'w3m',
|
W3M: "w3m",
|
||||||
WEBKIT: 'WebKit'
|
WEBKIT: "WebKit",
|
||||||
}>;
|
}>;
|
||||||
/**
|
/**
|
||||||
* @deprecated Use `EngineName` instead
|
* @deprecated Use `EngineName` instead
|
||||||
@ -331,100 +318,98 @@ export const EngineName: Readonly<{
|
|||||||
export const Engine: typeof EngineName;
|
export const Engine: typeof EngineName;
|
||||||
|
|
||||||
export const OSName: Readonly<{
|
export const OSName: Readonly<{
|
||||||
AIX: 'AIX',
|
AIX: "AIX",
|
||||||
AMIGA_OS: 'Amiga OS',
|
AMIGA_OS: "Amiga OS",
|
||||||
ANDROID: 'Android',
|
ANDROID: "Android",
|
||||||
ANDROID_X86: 'Android-x86',
|
ANDROID_X86: "Android-x86",
|
||||||
ARCAOS: 'ArcaOS',
|
ARCAOS: "ArcaOS",
|
||||||
ARCH: 'Arch',
|
ARCH: "Arch",
|
||||||
BADA: 'Bada',
|
BADA: "Bada",
|
||||||
BEOS: 'BeOS',
|
BEOS: "BeOS",
|
||||||
BLACKBERRY: 'BlackBerry',
|
BLACKBERRY: "BlackBerry",
|
||||||
CENTOS: 'CentOS',
|
CENTOS: "CentOS",
|
||||||
CHROME_OS: 'Chrome OS',
|
CHROME_OS: "Chrome OS",
|
||||||
CHROMECAST: 'Chromecast',
|
CHROMECAST: "Chromecast",
|
||||||
CHROMECAST_ANDROID: 'Chromecast Android',
|
CHROMECAST_ANDROID: "Chromecast Android",
|
||||||
CHROMECAST_FUCHSIA: 'Chromecast Fuchsia',
|
CHROMECAST_FUCHSIA: "Chromecast Fuchsia",
|
||||||
CHROMECAST_LINUX: 'Chromecast Linux',
|
CHROMECAST_LINUX: "Chromecast Linux",
|
||||||
CHROMECAST_SMARTSPEAKER: 'Chromecast SmartSpeaker',
|
CHROMECAST_SMARTSPEAKER: "Chromecast SmartSpeaker",
|
||||||
CONTIKI: 'Contiki',
|
CONTIKI: "Contiki",
|
||||||
DEBIAN: 'Debian',
|
DEBIAN: "Debian",
|
||||||
DEEPIN: 'Deepin',
|
DEEPIN: "Deepin",
|
||||||
DRAGONFLY: 'DragonFly',
|
DRAGONFLY: "DragonFly",
|
||||||
ELEMENTARY_OS: 'elementary OS',
|
ELEMENTARY_OS: "elementary OS",
|
||||||
FEDORA: 'Fedora',
|
FEDORA: "Fedora",
|
||||||
FIREFOX_OS: 'Firefox OS',
|
FIREFOX_OS: "Firefox OS",
|
||||||
FREEBSD: 'FreeBSD',
|
FREEBSD: "FreeBSD",
|
||||||
FUCHSIA: 'Fuchsia',
|
FUCHSIA: "Fuchsia",
|
||||||
GENTOO: 'Gentoo',
|
GENTOO: "Gentoo",
|
||||||
GHOSTBSD: 'GhostBSD',
|
GHOSTBSD: "GhostBSD",
|
||||||
GNU: 'GNU',
|
GNU: "GNU",
|
||||||
HAIKU: 'Haiku',
|
HAIKU: "Haiku",
|
||||||
HARMONYOS: 'HarmonyOS',
|
HARMONYOS: "HarmonyOS",
|
||||||
HP_UX: 'HP-UX',
|
HP_UX: "HP-UX",
|
||||||
HURD: 'Hurd',
|
HURD: "Hurd",
|
||||||
IOS: 'iOS',
|
IOS: "iOS",
|
||||||
JOLI: 'Joli',
|
JOLI: "Joli",
|
||||||
KAIOS: 'KaiOS',
|
KAIOS: "KaiOS",
|
||||||
KNOPPIX: 'Knoppix',
|
KNOPPIX: "Knoppix",
|
||||||
KUBUNTU: 'Kubuntu',
|
KUBUNTU: "Kubuntu",
|
||||||
LINPUS: 'Linpus',
|
LINPUS: "Linpus",
|
||||||
LINSPIRE: 'Linspire',
|
LINSPIRE: "Linspire",
|
||||||
LINUX: 'Linux',
|
LINUX: "Linux",
|
||||||
MACOS: 'macOS',
|
MACOS: "macOS",
|
||||||
MAEMO: 'Maemo',
|
MAEMO: "Maemo",
|
||||||
MAGEIA: 'Mageia',
|
MAGEIA: "Mageia",
|
||||||
MANDRIVA: 'Mandriva',
|
MANDRIVA: "Mandriva",
|
||||||
MANJARO: 'Manjaro',
|
MANJARO: "Manjaro",
|
||||||
MEEGO: 'MeeGo',
|
MEEGO: "MeeGo",
|
||||||
MINIX: 'Minix',
|
MINIX: "Minix",
|
||||||
MINT: 'Mint',
|
MINT: "Mint",
|
||||||
MORPH_OS: 'Morph OS',
|
MORPH_OS: "Morph OS",
|
||||||
NETBSD: 'NetBSD',
|
NETBSD: "NetBSD",
|
||||||
NETRANGE: 'NetRange',
|
NETRANGE: "NetRange",
|
||||||
NETTV: 'NetTV',
|
NETTV: "NetTV",
|
||||||
NINTENDO: 'Nintendo',
|
NINTENDO: "Nintendo",
|
||||||
OPENHARMONY: 'OpenHarmony',
|
OPENHARMONY: "OpenHarmony",
|
||||||
OPENBSD: 'OpenBSD',
|
OPENBSD: "OpenBSD",
|
||||||
OPENVMS: 'OpenVMS',
|
OPENVMS: "OpenVMS",
|
||||||
OS2: 'OS/2',
|
OS2: "OS/2",
|
||||||
PALM: 'Palm',
|
PALM: "Palm",
|
||||||
PC_BSD: 'PC-BSD',
|
PC_BSD: "PC-BSD",
|
||||||
PCLINUXOS: 'PCLinuxOS',
|
PCLINUXOS: "PCLinuxOS",
|
||||||
PICO: 'Pico',
|
PICO: "Pico",
|
||||||
PLAN9: 'Plan9',
|
PLAN9: "Plan9",
|
||||||
PLAYSTATION: 'PlayStation',
|
PLAYSTATION: "PlayStation",
|
||||||
QNX: 'QNX',
|
QNX: "QNX",
|
||||||
RASPBIAN: 'Raspbian',
|
RASPBIAN: "Raspbian",
|
||||||
REDHAT: 'RedHat',
|
REDHAT: "RedHat",
|
||||||
RIM_TABLET_OS: 'RIM Tablet OS',
|
RIM_TABLET_OS: "RIM Tablet OS",
|
||||||
RISC_OS: 'RISC OS',
|
RISC_OS: "RISC OS",
|
||||||
SABAYON: 'Sabayon',
|
SABAYON: "Sabayon",
|
||||||
SAILFISH: 'Sailfish',
|
SAILFISH: "Sailfish",
|
||||||
SERENITYOS: 'SerenityOS',
|
SERENITYOS: "SerenityOS",
|
||||||
SERIES40: 'Series40',
|
SERIES40: "Series40",
|
||||||
SLACKWARE: 'Slackware',
|
SLACKWARE: "Slackware",
|
||||||
SOLARIS: 'Solaris',
|
SOLARIS: "Solaris",
|
||||||
SUSE: 'SUSE',
|
SUSE: "SUSE",
|
||||||
SYMBIAN: 'Symbian',
|
SYMBIAN: "Symbian",
|
||||||
TIZEN: 'Tizen',
|
TIZEN: "Tizen",
|
||||||
UBUNTU: 'Ubuntu',
|
UBUNTU: "Ubuntu",
|
||||||
UBUNTU_TOUCH: 'Ubuntu Touch',
|
UBUNTU_TOUCH: "Ubuntu Touch",
|
||||||
UNIX: 'Unix',
|
UNIX: "Unix",
|
||||||
VECTORLINUX: 'VectorLinux',
|
VECTORLINUX: "VectorLinux",
|
||||||
WATCHOS: 'watchOS',
|
WATCHOS: "watchOS",
|
||||||
WEBOS: 'WebOS',
|
WEBOS: "WebOS",
|
||||||
WINDOWS: 'Windows',
|
WINDOWS: "Windows",
|
||||||
WINDOWS_CE: 'Windows CE',
|
WINDOWS_CE: "Windows CE",
|
||||||
WINDOWS_IOT: 'Windows IoT',
|
WINDOWS_IOT: "Windows IoT",
|
||||||
WINDOWS_MOBILE: 'Windows Mobile',
|
WINDOWS_MOBILE: "Windows Mobile",
|
||||||
WINDOWS_PHONE: 'Windows Phone',
|
WINDOWS_PHONE: "Windows Phone",
|
||||||
WINDOWS_RT: 'Windows RT',
|
WINDOWS_RT: "Windows RT",
|
||||||
XBOX: 'Xbox',
|
XBOX: "Xbox",
|
||||||
XUBUNTU: 'Xubuntu',
|
XUBUNTU: "Xubuntu",
|
||||||
ZENWALK: 'Zenwalk'
|
ZENWALK: "Zenwalk",
|
||||||
|
|
||||||
// TODO : test!
|
|
||||||
}>;
|
}>;
|
||||||
/**
|
/**
|
||||||
* @deprecated Use `OSName` instead
|
* @deprecated Use `OSName` instead
|
||||||
@ -436,7 +421,7 @@ export const OS: typeof OSName;
|
|||||||
*///////////////////////////////
|
*///////////////////////////////
|
||||||
|
|
||||||
export const Extension: Readonly<{
|
export const Extension: Readonly<{
|
||||||
BrowserName: {
|
Browser: {
|
||||||
CLIs: {
|
CLIs: {
|
||||||
CURL: 'curl',
|
CURL: 'curl',
|
||||||
ELINKS: 'ELinks',
|
ELINKS: 'ELinks',
|
||||||
@ -456,9 +441,6 @@ export const Extension: Readonly<{
|
|||||||
AMAZON_BOT: 'Amazonbot',
|
AMAZON_BOT: 'Amazonbot',
|
||||||
AMAZON_CONTXBOT: 'contxbot',
|
AMAZON_CONTXBOT: 'contxbot',
|
||||||
ANTHROPIC_AI: 'anthropic-ai',
|
ANTHROPIC_AI: 'anthropic-ai',
|
||||||
ANTHROPIC_CLAUDE_BOT: 'ClaudeBot',
|
|
||||||
ANTHROPIC_CLAUDE_SEARCHBOT: 'Claude-SearchBot',
|
|
||||||
ANTHROPIC_CLAUDE_WEB: 'Claude-Web',
|
|
||||||
ARCHIVEORG_BOT: 'archive.org_bot',
|
ARCHIVEORG_BOT: 'archive.org_bot',
|
||||||
BAIDU_ADS: 'Baidu-ADS',
|
BAIDU_ADS: 'Baidu-ADS',
|
||||||
BAIDU_SPIDER: 'Baiduspider',
|
BAIDU_SPIDER: 'Baiduspider',
|
||||||
@ -475,6 +457,8 @@ export const Extension: Readonly<{
|
|||||||
BYTEDANCE_SPIDER: 'Bytespider',
|
BYTEDANCE_SPIDER: 'Bytespider',
|
||||||
CC_BOT: 'CCBot',
|
CC_BOT: 'CCBot',
|
||||||
CHATGLM_SPIDER: 'ChatGLM-Spider',
|
CHATGLM_SPIDER: 'ChatGLM-Spider',
|
||||||
|
CLAUDE_WEB: 'Claude-Web',
|
||||||
|
CLAUDE_BOT: 'ClaudeBot',
|
||||||
COCCOC_BOT_WEB: 'coccocbot-web',
|
COCCOC_BOT_WEB: 'coccocbot-web',
|
||||||
COCCOC_BOT_IMAGE: 'coccocbot-image',
|
COCCOC_BOT_IMAGE: 'coccocbot-image',
|
||||||
COHERE_TRAINING_DATA_CRAWLER: 'cohere-training-data-crawler',
|
COHERE_TRAINING_DATA_CRAWLER: 'cohere-training-data-crawler',
|
||||||
@ -589,13 +573,11 @@ export const Extension: Readonly<{
|
|||||||
},
|
},
|
||||||
Fetchers: {
|
Fetchers: {
|
||||||
AHREFS_SITEAUDIT: 'AhrefsSiteAudit',
|
AHREFS_SITEAUDIT: 'AhrefsSiteAudit',
|
||||||
ANTHROPIC_CLAUDE_USER: 'Claude-User',
|
|
||||||
ASANA: 'Asana',
|
ASANA: 'Asana',
|
||||||
BETTER_UPTIME_BOT: 'Better Uptime Bot',
|
BETTER_UPTIME_BOT: 'Better Uptime Bot',
|
||||||
BITLY_BOT: 'bitlybot',
|
BITLY_BOT: 'bitlybot',
|
||||||
BLUESKY: 'Bluesky',
|
BLUESKY: 'Bluesky',
|
||||||
BUFFER_LINKPREVIEWBOT: 'BufferLinkPreviewBot',
|
BUFFER_LINKPREVIEWBOT: 'BufferLinkPreviewBot',
|
||||||
COHERE_AI: 'Cohere-AI',
|
|
||||||
DUCKDUCKGO_ASSISTBOT: 'DuckAssistBot',
|
DUCKDUCKGO_ASSISTBOT: 'DuckAssistBot',
|
||||||
GOOGLE_CHROME_LIGHTHOUSE: 'Chrome-Lighthouse',
|
GOOGLE_CHROME_LIGHTHOUSE: 'Chrome-Lighthouse',
|
||||||
GOOGLE_FEEDFETCHER: 'FeedFetcher-Google',
|
GOOGLE_FEEDFETCHER: 'FeedFetcher-Google',
|
||||||
@ -684,5 +666,4 @@ export const Extension: Readonly<{
|
|||||||
VOLVO: 'Volvo'
|
VOLVO: 'Volvo'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}>;
|
}>;
|
||||||
|
|
@ -441,6 +441,7 @@ const Extension = Object.freeze({
|
|||||||
WGET: 'wget'
|
WGET: 'wget'
|
||||||
},
|
},
|
||||||
Crawlers: {
|
Crawlers: {
|
||||||
|
'360_SPIDER': '360Spider',
|
||||||
AHREFS_BOT: 'AhrefsBot',
|
AHREFS_BOT: 'AhrefsBot',
|
||||||
AI2_BOT: 'AI2Bot',
|
AI2_BOT: 'AI2Bot',
|
||||||
AIHIT_BOT: 'aiHitBot',
|
AIHIT_BOT: 'aiHitBot',
|
||||||
@ -451,9 +452,6 @@ const Extension = Object.freeze({
|
|||||||
AMAZON_BOT: 'Amazonbot',
|
AMAZON_BOT: 'Amazonbot',
|
||||||
AMAZON_CONTXBOT: 'contxbot',
|
AMAZON_CONTXBOT: 'contxbot',
|
||||||
ANTHROPIC_AI: 'anthropic-ai',
|
ANTHROPIC_AI: 'anthropic-ai',
|
||||||
ANTHROPIC_CLAUDE_BOT: 'ClaudeBot',
|
|
||||||
ANTHROPIC_CLAUDE_SEARCHBOT: 'Claude-SearchBot',
|
|
||||||
ANTHROPIC_CLAUDE_WEB: 'Claude-Web',
|
|
||||||
ARCHIVEORG_BOT: 'archive.org_bot',
|
ARCHIVEORG_BOT: 'archive.org_bot',
|
||||||
BAIDU_ADS: 'Baidu-ADS',
|
BAIDU_ADS: 'Baidu-ADS',
|
||||||
BAIDU_SPIDER: 'Baiduspider',
|
BAIDU_SPIDER: 'Baiduspider',
|
||||||
@ -467,9 +465,11 @@ const Extension = Object.freeze({
|
|||||||
BLEX_BOT: 'BLEXBot',
|
BLEX_BOT: 'BLEXBot',
|
||||||
BOTIFY: 'botify',
|
BOTIFY: 'botify',
|
||||||
BRAVE_BOT: 'Bravebot',
|
BRAVE_BOT: 'Bravebot',
|
||||||
BYTEDANCE_BYTESPIDER: 'Bytespider',
|
BYTEDANCE_SPIDER: 'Bytespider',
|
||||||
BYTEDANCE_TIKTOKSPIDER: 'TikTokSpider',
|
CC_BOT: 'CCBot',
|
||||||
COMMON_CRAWL_CCBOT: 'CCBot',
|
CHATGLM_SPIDER: 'ChatGLM-Spider',
|
||||||
|
CLAUDE_WEB: 'Claude-Web',
|
||||||
|
CLAUDE_BOT: 'ClaudeBot',
|
||||||
COCCOC_BOT_WEB: 'coccocbot-web',
|
COCCOC_BOT_WEB: 'coccocbot-web',
|
||||||
COCCOC_BOT_IMAGE: 'coccocbot-image',
|
COCCOC_BOT_IMAGE: 'coccocbot-image',
|
||||||
COHERE_TRAINING_DATA_CRAWLER: 'cohere-training-data-crawler',
|
COHERE_TRAINING_DATA_CRAWLER: 'cohere-training-data-crawler',
|
||||||
@ -491,13 +491,10 @@ const Extension = Object.freeze({
|
|||||||
GOOGLE_ADSBOT: 'AdsBot-Google',
|
GOOGLE_ADSBOT: 'AdsBot-Google',
|
||||||
GOOGLE_ADSBOT_MOBILE: 'Adsbot-Google-Mobile',
|
GOOGLE_ADSBOT_MOBILE: 'Adsbot-Google-Mobile',
|
||||||
GOOGLE_ADSENSE: 'AdSense',
|
GOOGLE_ADSENSE: 'AdSense',
|
||||||
GOOGLE_APIS: 'APIs-Google',
|
|
||||||
GOOGLE_BOT: 'Googlebot',
|
GOOGLE_BOT: 'Googlebot',
|
||||||
GOOGLE_BOT_IMAGE: 'Googlebot-Image',
|
GOOGLE_BOT_IMAGE: 'Googlebot-Image',
|
||||||
GOOGLE_BOT_NEWS: 'Googlebot-News',
|
GOOGLE_BOT_NEWS: 'Googlebot-News',
|
||||||
GOOGLE_BOT_VIDEO: 'Googlebot-Video',
|
GOOGLE_BOT_VIDEO: 'Googlebot-Video',
|
||||||
GOOGLE_CLOUDVERTEXBOT: 'Google-CloudVertexBot',
|
|
||||||
GOOGLE_EXTENDED: 'Google-Extended',
|
|
||||||
GOOGLE_INSPECTIONTOOL: 'Google-InspectionTool',
|
GOOGLE_INSPECTIONTOOL: 'Google-InspectionTool',
|
||||||
GOOGLE_OTHER: 'GoogleOther',
|
GOOGLE_OTHER: 'GoogleOther',
|
||||||
GOOGLE_OTHER_IMAGE: 'GoogleOther-Image',
|
GOOGLE_OTHER_IMAGE: 'GoogleOther-Image',
|
||||||
@ -527,16 +524,16 @@ const Extension = Object.freeze({
|
|||||||
MICROSOFT_ADIDXBOT: 'adidxbot',
|
MICROSOFT_ADIDXBOT: 'adidxbot',
|
||||||
MOJEEK_BOT: 'MojeekBot',
|
MOJEEK_BOT: 'MojeekBot',
|
||||||
MOZ_DOTBOT: 'DotBot',
|
MOZ_DOTBOT: 'DotBot',
|
||||||
|
OMGILI: 'omgili',
|
||||||
|
OMGILI_BOT: 'omgilibot',
|
||||||
ONCRAWL: 'OnCrawl',
|
ONCRAWL: 'OnCrawl',
|
||||||
ONESPOT_SCRAPERBOT: 'Onespot-ScraperBot',
|
ONESPOT_SCRAPERBOT: 'Onespot-ScraperBot',
|
||||||
OPENAI_GPTBOT: 'GPTBot',
|
OPENAI_GPTBOT: 'GPTBot',
|
||||||
OPENAI_SEARCH_BOT: 'OAI-SearchBot',
|
OPENAI_SEARCH: 'OAI-SearchBot',
|
||||||
PERPLEXITY_BOT: 'PerplexityBot',
|
PERPLEXITY_BOT: 'PerplexityBot',
|
||||||
QIHOO_360_SPIDER: '360Spider',
|
|
||||||
QWANT_BOT: 'Qwantbot',
|
QWANT_BOT: 'Qwantbot',
|
||||||
REPLICATE_BOT: 'Replicate-Bot',
|
REPLICATE_BOT: 'Replicate-Bot',
|
||||||
RUNPOD_BOT: 'RunPod-Bot',
|
RUNPOD_BOT: 'RunPod-Bot',
|
||||||
SB_INTUITIONS_BOT: 'SBIntuitionsBot',
|
|
||||||
SEEKPORT_BOT: 'SeekportBot',
|
SEEKPORT_BOT: 'SeekportBot',
|
||||||
SEMRUSH_BOT: 'SemrushBot',
|
SEMRUSH_BOT: 'SemrushBot',
|
||||||
SEMRUSH_BOT_BACKLINK: 'SemrushBot-BA',
|
SEMRUSH_BOT_BACKLINK: 'SemrushBot-BA',
|
||||||
@ -551,48 +548,15 @@ const Extension = Object.freeze({
|
|||||||
TOGETHER_BOT: 'Together-Bot',
|
TOGETHER_BOT: 'Together-Bot',
|
||||||
TURNITIN_BOT: 'TurnitinBot',
|
TURNITIN_BOT: 'TurnitinBot',
|
||||||
TWIN_AGENT: 'TwinAgent',
|
TWIN_AGENT: 'TwinAgent',
|
||||||
VERCEL_V0BOT: 'v0bot',
|
|
||||||
WEBZIO: 'webzio',
|
|
||||||
WEBZIO_EXTENDED: 'Webzio-Extended',
|
|
||||||
WEBZIO_OMGILI: 'omgili',
|
|
||||||
WEBZIO_OMGILI_BOT: 'omgilibot',
|
|
||||||
XAI_BOT: 'xAI-Bot',
|
XAI_BOT: 'xAI-Bot',
|
||||||
|
VERCEL_V0BOT: 'v0bot',
|
||||||
YAHOO_JAPAN: 'Y!J-BRW',
|
YAHOO_JAPAN: 'Y!J-BRW',
|
||||||
YAHOO_SLURP: 'Yahoo! Slurp',
|
YAHOO_SLURP: 'Yahoo! Slurp',
|
||||||
YANDEX_ACCESSIBILITY_BOT: 'YandexAccessibilityBot',
|
|
||||||
YANDEX_ADDITIONAL_BOT: 'YandexAdditionalBot',
|
|
||||||
YANDEX_ADNET: 'YandexAdNet',
|
|
||||||
YANDEX_BLOGS: 'YandexBlogs',
|
|
||||||
YANDEX_BOT: 'YandexBot',
|
YANDEX_BOT: 'YandexBot',
|
||||||
YANDEX_BOT_MIRRORDETECTOR: 'YandexBot MirrorDetector',
|
|
||||||
YANDEX_COMBOT: 'YandexComBot',
|
|
||||||
YANDEX_FAVICONS: 'YandexFavicons',
|
|
||||||
YANDEX_IMAGE_RESIZER: 'YandexImageResizer',
|
|
||||||
YANDEX_IMAGES: 'YandexImages',
|
|
||||||
YANDEX_MARKET: 'YandexMarket',
|
|
||||||
YANDEX_MEDIA: 'YandexMedia',
|
|
||||||
YANDEX_METRIKA: 'YandexMetrika',
|
|
||||||
YANDEX_MOBILE_BOT: 'YandexMobileBot',
|
|
||||||
YANDEX_MOBILE_SCREENSHOT_BOT: 'YandexMobileScreenShotBot',
|
|
||||||
YANDEX_NEWS: 'YandexNews',
|
|
||||||
YANDEX_ONTODB: 'YandexOntoDB',
|
|
||||||
YANDEX_ONTODB_API: 'YandexOntoDBAPI',
|
|
||||||
YANDEX_PARTNER: 'YandexPartner',
|
|
||||||
YANDEX_RCA: 'YandexRCA',
|
|
||||||
YANDEX_RENDERRESOURCES_BOT: 'YandexRenderResourcesBot',
|
|
||||||
YANDEX_SCREENSHOT_BOT: 'YandexScreenshotBot',
|
|
||||||
YANDEX_SPRAV_BOT: 'YandexSpravBot',
|
|
||||||
YANDEX_TRACKER: 'YandexTracker',
|
|
||||||
YANDEX_VERTICALS: 'YandexVerticals',
|
|
||||||
YANDEX_VERTIS: 'YandexVertis',
|
|
||||||
YANDEX_VIDEO: 'YandexVideo',
|
|
||||||
YANDEX_VIDEO_PARSER: 'YandexVideoParser',
|
|
||||||
YANDEX_WEBMASTER: 'YandexWebmaster',
|
|
||||||
YEP_BOT: 'YepBot',
|
YEP_BOT: 'YepBot',
|
||||||
YETI: 'Yeti',
|
YETI: 'Yeti',
|
||||||
YISOU_SPIDER: 'YisouSpider',
|
YISOU_SPIDER: 'YisouSpider',
|
||||||
YOU_BOT: 'YouBot',
|
YOU_BOT: 'YouBot',
|
||||||
ZHIPU_CHATGLM_SPIDER: 'ChatGLM-Spider',
|
|
||||||
ZUM_BOT: 'ZumBot'
|
ZUM_BOT: 'ZumBot'
|
||||||
},
|
},
|
||||||
Emails: {
|
Emails: {
|
||||||
@ -620,18 +584,16 @@ const Extension = Object.freeze({
|
|||||||
},
|
},
|
||||||
Fetchers: {
|
Fetchers: {
|
||||||
AHREFS_SITEAUDIT: 'AhrefsSiteAudit',
|
AHREFS_SITEAUDIT: 'AhrefsSiteAudit',
|
||||||
ANTHROPIC_CLAUDE_USER: 'Claude-User',
|
|
||||||
ASANA: 'Asana',
|
ASANA: 'Asana',
|
||||||
BETTER_UPTIME_BOT: 'Better Uptime Bot',
|
BETTER_UPTIME_BOT: 'Better Uptime Bot',
|
||||||
BITLY_BOT: 'bitlybot',
|
BITLY_BOT: 'bitlybot',
|
||||||
BLUESKY: 'Bluesky',
|
BLUESKY: 'Bluesky',
|
||||||
BUFFER_LINKPREVIEWBOT: 'BufferLinkPreviewBot',
|
BUFFER_LINKPREVIEWBOT: 'BufferLinkPreviewBot',
|
||||||
COHERE_AI: 'Cohere-AI',
|
|
||||||
DUCKDUCKGO_ASSISTBOT: 'DuckAssistBot',
|
DUCKDUCKGO_ASSISTBOT: 'DuckAssistBot',
|
||||||
GOOGLE_CHROME_LIGHTHOUSE: 'Chrome-Lighthouse',
|
GOOGLE_CHROME_LIGHTHOUSE: 'Chrome-Lighthouse',
|
||||||
GOOGLE_FEEDFETCHER: 'FeedFetcher-Google',
|
GOOGLE_FEEDFETCHER: 'FeedFetcher-Google',
|
||||||
GOOGLE_GEMINI_DEEP_RESEARCH: 'Gemini-Deep-Research',
|
GOOGLE_GEMINI_DEEP_RESEARCH: 'Gemini-Deep-Research',
|
||||||
GOOGLE_IMAGEPROXY: 'GoogleImageProxy',
|
GOOGLE_IMAGE_PROXY: 'GoogleImageProxy',
|
||||||
GOOGLE_PAGERENDERER: 'Google-PageRenderer',
|
GOOGLE_PAGERENDERER: 'Google-PageRenderer',
|
||||||
GOOGLE_READ_ALOUD: 'Google-Read-Aloud',
|
GOOGLE_READ_ALOUD: 'Google-Read-Aloud',
|
||||||
GOOGLE_PRODUCER: 'GoogleProducer',
|
GOOGLE_PRODUCER: 'GoogleProducer',
|
||||||
@ -659,15 +621,6 @@ const Extension = Object.freeze({
|
|||||||
VERCEL_BOT: 'Vercelbot',
|
VERCEL_BOT: 'Vercelbot',
|
||||||
VERCEL_FLAGS: 'vercelflags',
|
VERCEL_FLAGS: 'vercelflags',
|
||||||
VERCEL_TRACING: 'verceltracing',
|
VERCEL_TRACING: 'verceltracing',
|
||||||
YANDEX_CALENDAR: 'YandexCalendar',
|
|
||||||
YANDEX_DIRECT: 'YandexDirect',
|
|
||||||
YANDEX_DIRECTDYN: 'YandexDirectDyn',
|
|
||||||
YANDEX_DIRECTFETCHER: 'YaDirectFetcher',
|
|
||||||
YANDEX_FORDOMAIN: 'YandexForDomain',
|
|
||||||
YANDEX_PAGECHECKER: 'YandexPagechecker',
|
|
||||||
YANDEX_SEARCHSHOP: 'YandexSearchShop',
|
|
||||||
YANDEX_SITELINKS: 'YandexSitelinks',
|
|
||||||
YANDEX_USERPROXY: 'YandexUserproxy',
|
|
||||||
WHATSAPP: 'WhatsApp',
|
WHATSAPP: 'WhatsApp',
|
||||||
ZOOMINFO_BOT: 'Zoombot'
|
ZOOMINFO_BOT: 'Zoombot'
|
||||||
},
|
},
|
||||||
|
@ -61,10 +61,9 @@ const Crawlers = Object.freeze({
|
|||||||
// Onespot - https://www.onespot.com/identifying-traffic.html
|
// Onespot - https://www.onespot.com/identifying-traffic.html
|
||||||
// OpenAI's SearchGPT - https://platform.openai.com/docs/bots
|
// OpenAI's SearchGPT - https://platform.openai.com/docs/bots
|
||||||
// PerplexityBot - https://perplexity.ai/perplexitybot
|
// PerplexityBot - https://perplexity.ai/perplexitybot
|
||||||
// SBIntuitionsBot - https://www.sbintuitions.co.jp/bot/
|
|
||||||
// SeznamBot - http://napoveda.seznam.cz/seznambot-intro
|
// SeznamBot - http://napoveda.seznam.cz/seznambot-intro
|
||||||
// YepBot - https://yep.com/yepbot/
|
// YepBot - https://yep.com/yepbot/
|
||||||
/((?:adidx|ahrefs|amazon|bing|brave|cc|contx|coveo|criteo|dot|duckduck(?:go-favicons-)?|exa|facebook|gpt|iask|kagi|kangaroo |linkedin|mj12|mojeek|oai-search|onespot-scraper|perplexity|sbintuitions|semrush|seznam|yep)bot)\/([\w\.-]+)/i,
|
/((?:adidx|ahrefs|amazon|bing|brave|cc|contx|coveo|criteo|dot|duckduck(?:go-favicons-)?|exa|facebook|gpt|iask|kagi|kangaroo |linkedin|mj12|mojeek|oai-search|onespot-scraper|perplexity|semrush|seznam|yep)bot)\/([\w\.-]+)/i,
|
||||||
|
|
||||||
// Algolia Crawler
|
// Algolia Crawler
|
||||||
/(algolia crawler(?: renderscript)?)\/?([\w\.]*)/i,
|
/(algolia crawler(?: renderscript)?)\/?([\w\.]*)/i,
|
||||||
@ -110,7 +109,7 @@ const Crawlers = Object.freeze({
|
|||||||
/(y!?j-(?:asr|br[uw]|dscv|mmp|vsidx|wsc))\/([\w\.]+)/i,
|
/(y!?j-(?:asr|br[uw]|dscv|mmp|vsidx|wsc))\/([\w\.]+)/i,
|
||||||
|
|
||||||
// Yandex Bots - https://yandex.com/bots
|
// Yandex Bots - https://yandex.com/bots
|
||||||
/(yandex(?:(?:mobile)?(?:accessibility|additional|com|renderresources|screenshot|sprav)?bot(?!.+mirror)|image(?:s|resizer)|adnet|blogs|favicons|market|media|metrika|news|ontodb(?:api)?|partner|rca|tracker|turbo|verti(?:cal)?s|webmaster|video(?:parser)?))\/([\w\.]+)/i,
|
/(yandex(?:(?:mobile)?(?:accessibility|additional|renderresources|screenshot|sprav)?bot|image(?:s|resizer)|video(?:parser)?|blogs|adnet|favicons|fordomain|market|media|metrika|news|ontodb(?:api)?|pagechecker|partner|rca|tracker|turbo|vertis|webmaster|antivirus))\/([\w\.]+)/i,
|
||||||
|
|
||||||
// Yeti (Naver)
|
// Yeti (Naver)
|
||||||
/(yeti)\/([\w\.]+)/i,
|
/(yeti)\/([\w\.]+)/i,
|
||||||
@ -120,13 +119,8 @@ const Crawlers = Object.freeze({
|
|||||||
// Freespoke - https://docs.freespoke.com/search/bot/
|
// Freespoke - https://docs.freespoke.com/search/bot/
|
||||||
/((?:aihit|blex|diff|huggingface-|msn|pangu|replicate-|runpod-|timpi|together-|xai-|you|zum)bot|(?:magpie-|velenpublicweb)crawler|(?:chatglm-|line|screaming frog seo |yisou)spider|cotoyogi|firecrawlagent|freespoke|omgili(?:bot)?|openai image downloader|startpageprivateimageproxy|twinagent|webzio-extended)\/?([\w\.]*)/i
|
/((?:aihit|blex|diff|huggingface-|msn|pangu|replicate-|runpod-|timpi|together-|xai-|you|zum)bot|(?:magpie-|velenpublicweb)crawler|(?:chatglm-|line|screaming frog seo |yisou)spider|cotoyogi|firecrawlagent|freespoke|omgili(?:bot)?|openai image downloader|startpageprivateimageproxy|twinagent|webzio-extended)\/?([\w\.]*)/i
|
||||||
],
|
],
|
||||||
[NAME, VERSION, [TYPE, CRAWLER]],
|
|
||||||
|
|
||||||
[
|
[NAME, VERSION, [TYPE, CRAWLER]],
|
||||||
// YandexBot MirrorDetector
|
|
||||||
/(yandexbot\/([\w\.]+); mirrordetector)/i
|
|
||||||
],
|
|
||||||
[[NAME, /\/.+;/ig, ''], VERSION, [TYPE, CRAWLER]],
|
|
||||||
|
|
||||||
[
|
[
|
||||||
// Google Bots
|
// Google Bots
|
||||||
@ -140,8 +134,8 @@ const Crawlers = Object.freeze({
|
|||||||
// TurnitinBot - https://www.turnitin.com/robot/crawlerinfo.html
|
// TurnitinBot - https://www.turnitin.com/robot/crawlerinfo.html
|
||||||
// v0bot - https://vercel.com/docs/bot-management
|
// v0bot - https://vercel.com/docs/bot-management
|
||||||
// Yahoo! Slurp - http://help.yahoo.com/help/us/ysearch/slurp
|
// Yahoo! Slurp - http://help.yahoo.com/help/us/ysearch/slurp
|
||||||
// Botify / Bytespider / DeepSeekBot / Qihoo 360Spider / SeekportBot / TikTokSpider
|
// Botify / Bytespider / DeepSeekBot / Qihoo 360Spider / SeekportBot
|
||||||
/\b((ai2|aspiegel|dataforseo|deepseek|imagesift|petal|seekport|turnitin|v0)bot|360spider-?(image|video)?|baidu-ads|botify|(byte|tiktok)spider|cohere-training-data-crawler|elastic(?=\/s)|marginalia|siteimprove(?=bot|\.com)|teoma|webzio|yahoo! slurp)/i
|
/\b((?:ai2|aspiegel|dataforseo|deepseek|imagesift|petal|seekport|turnitin|v0)bot|360spider-?(?:image|video)?|baidu-ads|botify|bytespider|cohere-training-data-crawler|elastic(?=\/s)|marginalia|siteimprove(?=bot|\.com)|teoma|yahoo! slurp)/i
|
||||||
],
|
],
|
||||||
[NAME, [TYPE, CRAWLER]]
|
[NAME, [TYPE, CRAWLER]]
|
||||||
]
|
]
|
||||||
@ -256,7 +250,7 @@ const Emails = Object.freeze({
|
|||||||
const Fetchers = Object.freeze({
|
const Fetchers = Object.freeze({
|
||||||
browser : [
|
browser : [
|
||||||
[
|
[
|
||||||
// Asana / Bitlybot / Better Uptime / BingPreview / Blueno / Cohere-AI / HubSpot Page Fetcher / kakaotalk-scrap / Mastodon / MicrosoftPreview / Pinterestbot / Redditbot / Rogerbot / SiteAuditBot / Telegrambot / Twitterbot / UptimeRobot
|
// Asana / Bitlybot / Better Uptime / BingPreview / Blueno / HubSpot Page Fetcher / kakaotalk-scrap / Mastodon / MicrosoftPreview / Pinterestbot / Redditbot / Rogerbot / SiteAuditBot / Telegrambot / Twitterbot / UptimeRobot
|
||||||
// AhrefsSiteAudit - https://ahrefs.com/robot/site-audit
|
// AhrefsSiteAudit - https://ahrefs.com/robot/site-audit
|
||||||
// Buffer Link Preview Bot - https://scraper.buffer.com/about/bots/link-preview-bot
|
// Buffer Link Preview Bot - https://scraper.buffer.com/about/bots/link-preview-bot
|
||||||
// ChatGPT-User - https://platform.openai.com/docs/plugins/bot
|
// ChatGPT-User - https://platform.openai.com/docs/plugins/bot
|
||||||
@ -266,7 +260,7 @@ const Fetchers = Object.freeze({
|
|||||||
// Perplexity-User - https://docs.perplexity.ai/guides/bots
|
// Perplexity-User - https://docs.perplexity.ai/guides/bots
|
||||||
// MistralAI-User - https://docs.mistral.ai/robots/
|
// MistralAI-User - https://docs.mistral.ai/robots/
|
||||||
// Yandex Bots - https://yandex.com/bots
|
// Yandex Bots - https://yandex.com/bots
|
||||||
/(asana|ahrefssiteaudit|(?:bing|microsoft)preview|blueno|(?:chatgpt|claude|mistralai|perplexity)-user|cohere-ai|hubspot page fetcher|mastodon|(?:bitly|bufferlinkpreview|discord|duckassist|linkedin|pinterest|reddit|roger|siteaudit|twitter|uptimero|zoom)bot|google-site-verification|iframely|kakaotalk-scrap|meta-externalfetcher|y!?j-dlc|yandex(?:calendar|direct(?:dyn)?|fordomain|pagechecker|searchshop)|yadirectfetcher)\/([\w\.]+)/i,
|
/(asana|ahrefssiteaudit|(?:bing|microsoft)preview|blueno|(?:chatgpt|claude|mistralai|perplexity)-user|hubspot page fetcher|mastodon|(?:bitly|bufferlinkpreview|discord|duckassist|linkedin|pinterest|reddit|roger|siteaudit|twitter|uptimero|zoom)bot|google-site-verification|iframely|kakaotalk-scrap|meta-externalfetcher|y!?j-dlc|yandex(?:calendar|direct(?:dyn)?|searchshop)|yadirectfetcher)\/([\w\.]+)/i,
|
||||||
|
|
||||||
// Bluesky
|
// Bluesky
|
||||||
/(bluesky) cardyb\/([\w\.]+)/i,
|
/(bluesky) cardyb\/([\w\.]+)/i,
|
||||||
@ -283,8 +277,8 @@ const Fetchers = Object.freeze({
|
|||||||
[NAME, VERSION, [TYPE, FETCHER]],
|
[NAME, VERSION, [TYPE, FETCHER]],
|
||||||
|
|
||||||
[
|
[
|
||||||
// Google Bots / Chrome-Lighthouse / Gemini-Deep-Research / Snapchat / TikTokSpider / Vercelbot / Yandex Bots
|
// Google Bots / Chrome-Lighthouse / Cohere / Gemini-Deep-Research / Snapchat / TikTokSpider / Vercelbot / Yandex Bots
|
||||||
/((?:better uptime |telegram|vercel)bot|chrome-lighthouse|feedfetcher-google|gemini-deep-research|google(?:imageproxy|-read-aloud|-pagerenderer|producer)|snap url preview|tiktokspider|vercel(flags|tracing|-(favicon|screenshot)-bot)|yandex(?:sitelinks|userproxy))/i
|
/((?:better uptime |telegram|vercel)bot|chrome-lighthouse|cohere-ai|feedfetcher-google|gemini-deep-research|google(?:imageproxy|-read-aloud|-pagerenderer|producer)|snap url preview|tiktokspider|vercel(flags|tracing|-(favicon|screenshot)-bot)|yandex(?:sitelinks|userproxy))/i
|
||||||
],
|
],
|
||||||
[NAME, [TYPE, FETCHER]],
|
[NAME, [TYPE, FETCHER]],
|
||||||
],
|
],
|
||||||
|
30
src/helpers/ua-parser-helpers.d.ts
vendored
30
src/helpers/ua-parser-helpers.d.ts
vendored
@ -4,12 +4,24 @@
|
|||||||
|
|
||||||
import type { IResult } from "../main/ua-parser";
|
import type { IResult } from "../main/ua-parser";
|
||||||
|
|
||||||
export function getDeviceVendor(model: string): string | undefined;
|
declare function getDeviceVendor(model: string): string | undefined;
|
||||||
export function isAppleSilicon(resultOrUA: IResult | string): boolean;
|
declare function isAppleSilicon(resultOrUA: IResult | string): boolean;
|
||||||
export function isAIBot(resultOrUA: IResult | string): boolean;
|
declare function isAIBot(resultOrUA: IResult | string): boolean;
|
||||||
export function isBot(resultOrUA: IResult | string): boolean;
|
declare function isBot(resultOrUA: IResult | string): boolean;
|
||||||
export function isChromeFamily(resultOrUA: IResult | string): boolean;
|
declare function isChromeFamily(resultOrUA: IResult | string): boolean;
|
||||||
export function isElectron(): boolean;
|
declare function isElectron(): boolean;
|
||||||
export function isFromEU(): boolean;
|
declare function isFromEU(): boolean;
|
||||||
export function isFrozenUA(ua: string): boolean;
|
declare function isFrozenUA(ua: string): boolean;
|
||||||
export function isStandalonePWA(): boolean;
|
declare function isStandalonePWA(): boolean;
|
||||||
|
|
||||||
|
export {
|
||||||
|
getDeviceVendor,
|
||||||
|
isAppleSilicon,
|
||||||
|
isAIBot,
|
||||||
|
isBot,
|
||||||
|
isChromeFamily,
|
||||||
|
isElectron,
|
||||||
|
isFromEU,
|
||||||
|
isFrozenUA,
|
||||||
|
isStandalonePWA
|
||||||
|
}
|
@ -8,7 +8,7 @@
|
|||||||
/*jshint esversion: 6 */
|
/*jshint esversion: 6 */
|
||||||
|
|
||||||
const { UAParser } = require('../main/ua-parser');
|
const { UAParser } = require('../main/ua-parser');
|
||||||
const { CPUArch, OSName, EngineName, Extension } = require('../enums/ua-parser-enums');
|
const { CPU, OS, Engine } = require('../enums/ua-parser-enums');
|
||||||
const { Bots } = require('../extensions/ua-parser-extensions');
|
const { Bots } = require('../extensions/ua-parser-extensions');
|
||||||
const { isFromEU } = require('detect-europe-js');
|
const { isFromEU } = require('detect-europe-js');
|
||||||
const { isFrozenUA } = require('ua-is-frozen');
|
const { isFrozenUA } = require('ua-is-frozen');
|
||||||
@ -20,8 +20,8 @@ const getDeviceVendor = (model) => UAParser(`Mozilla/5.0 (Linux; Android 10; ${m
|
|||||||
|
|
||||||
const isAppleSilicon = (resultOrUA) => {
|
const isAppleSilicon = (resultOrUA) => {
|
||||||
const res = toResult(resultOrUA);
|
const res = toResult(resultOrUA);
|
||||||
if (res.os.is(OSName.MACOS)) {
|
if (res.os.is(OS.MACOS)) {
|
||||||
if (res.cpu.is(CPUArch.ARM)) {
|
if (res.cpu.is(CPU.ARM)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (typeof resultOrUA !== 'string' && typeof window !== 'undefined') {
|
if (typeof resultOrUA !== 'string' && typeof window !== 'undefined') {
|
||||||
@ -41,124 +41,121 @@ const isAppleSilicon = (resultOrUA) => {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Crawler = Extension.BrowserName.Crawlers;
|
|
||||||
const isAIBot = (resultOrUA) => [
|
const isAIBot = (resultOrUA) => [
|
||||||
|
|
||||||
// AI2
|
// AI2
|
||||||
Crawler.AI2_BOT,
|
'ai2bot',
|
||||||
|
|
||||||
// Amazon
|
// Amazon
|
||||||
Crawler.AMAZON_BOT,
|
'amazonbot',
|
||||||
|
|
||||||
// Anthropic
|
// Anthropic
|
||||||
Crawler.ANTHROPIC_AI,
|
'anthropic-ai',
|
||||||
Crawler.ANTHROPIC_CLAUDE_BOT,
|
'claude-web',
|
||||||
Crawler.ANTHROPIC_CLAUDE_SEARCHBOT,
|
'claude-searchbot',
|
||||||
Crawler.ANTHROPIC_CLAUDE_WEB,
|
'claudebot',
|
||||||
|
|
||||||
// Apple
|
// Apple
|
||||||
Crawler.APPLE_BOT,
|
'applebot',
|
||||||
Crawler.APPLE_BOT_EXTENDED,
|
'applebot-extended',
|
||||||
|
|
||||||
// Brave
|
// Brave
|
||||||
Crawler.BRAVE_BOT,
|
'bravebot',
|
||||||
|
|
||||||
// ByteDance
|
// ByteDance
|
||||||
Crawler.BYTEDANCE_BYTESPIDER,
|
'bytespider',
|
||||||
Crawler.BYTEDANCE_TIKTOKSPIDER,
|
'tiktokspider',
|
||||||
|
|
||||||
// Cohere
|
// Cohere
|
||||||
Crawler.COHERE_TRAINING_DATA_CRAWLER,
|
'cohere-training-data-crawler',
|
||||||
|
|
||||||
// Common Crawl
|
// Common Crawl
|
||||||
Crawler.COMMON_CRAWL_CCBOT,
|
'ccbot',
|
||||||
|
|
||||||
// Coveo
|
// Coveo
|
||||||
Crawler.COVEO_BOT,
|
'coveobot',
|
||||||
|
|
||||||
// DataForSeo
|
// DataForSeo
|
||||||
Crawler.DATAFORSEO_BOT,
|
'dataforseobot',
|
||||||
|
|
||||||
// DeepSeek
|
// DeepSeek
|
||||||
Crawler.DEEPSEEK_BOT,
|
'deepseekbot',
|
||||||
|
|
||||||
// Diffbot
|
// Diffbot
|
||||||
Crawler.DIFFBOT,
|
'diffbot',
|
||||||
|
|
||||||
// Google
|
// Google
|
||||||
Crawler.GOOGLE_EXTENDED,
|
'googleother',
|
||||||
Crawler.GOOGLE_OTHER,
|
'googleother-image',
|
||||||
Crawler.GOOGLE_OTHER_IMAGE,
|
'googleother-video',
|
||||||
Crawler.GOOGLE_OTHER_VIDEO,
|
'google-extended',
|
||||||
Crawler.GOOGLE_CLOUDVERTEXBOT,
|
|
||||||
|
|
||||||
// Hive AI
|
// Hive AI
|
||||||
Crawler.HIVE_IMAGESIFTBOT,
|
'imagesiftbot',
|
||||||
|
|
||||||
// Huawei
|
// Huawei
|
||||||
Crawler.HUAWEI_PETALBOT,
|
'petalbot',
|
||||||
Crawler.HUAWEI_PANGUBOT,
|
'pangubot',
|
||||||
|
|
||||||
// Hugging Face
|
// Hugging Face
|
||||||
Crawler.HUGGINGFACE_BOT,
|
'huggingface-bot',
|
||||||
|
|
||||||
// Kangaroo
|
// Kangaroo
|
||||||
Crawler.KANGAROO_BOT,
|
'kangaroo bot',
|
||||||
|
|
||||||
// Mendable.ai
|
// Mendable.ai
|
||||||
Crawler.FIRECRAWL_AGENT,
|
'firecrawlagent',
|
||||||
|
|
||||||
// Meta
|
// Meta
|
||||||
Crawler.META_FACEBOOKBOT,
|
'facebookbot',
|
||||||
Crawler.META_EXTERNALAGENT,
|
'meta-externalagent',
|
||||||
|
|
||||||
// OpenAI
|
// OpenAI
|
||||||
Crawler.OPENAI_GPTBOT,
|
'gptbot',
|
||||||
Crawler.OPENAI_SEARCH_BOT,
|
'oai-searchbot',
|
||||||
|
|
||||||
// Perplexity
|
// Perplexity
|
||||||
Crawler.PERPLEXITY_BOT,
|
'perplexitybot',
|
||||||
|
|
||||||
// Replicate
|
// Replicate
|
||||||
Crawler.REPLICATE_BOT,
|
'replicate-bot',
|
||||||
|
|
||||||
// Runpod
|
// Runpod
|
||||||
Crawler.RUNPOD_BOT,
|
'runpod-bot',
|
||||||
|
|
||||||
// SB Intuitions
|
|
||||||
Crawler.SB_INTUITIONS_BOT,
|
|
||||||
|
|
||||||
// Semrush
|
// Semrush
|
||||||
Crawler.SEMRUSH_BOT_CONTENTSHAKE,
|
'semrushbot-ocob',
|
||||||
|
|
||||||
// Timpi
|
// Timpi
|
||||||
Crawler.TIMPI_BOT,
|
'timpibot',
|
||||||
|
|
||||||
// Together AI
|
// Together AI
|
||||||
Crawler.TOGETHER_BOT,
|
'together-bot',
|
||||||
|
|
||||||
// Velen.io
|
// Velen.io
|
||||||
Crawler.HUNTER_VELENPUBLICWEBCRAWLER,
|
'velenpublicwebcrawler',
|
||||||
|
|
||||||
// Vercel
|
// Vercel
|
||||||
Crawler.VERCEL_V0BOT,
|
'v0bot',
|
||||||
|
|
||||||
// Webz.io
|
// Webz.io
|
||||||
Crawler.WEBZIO_OMGILI,
|
'omgili',
|
||||||
Crawler.WEBZIO_OMGILI_BOT,
|
'omgilibot',
|
||||||
Crawler.WEBZIO_EXTENDED,
|
'webzio-extended',
|
||||||
|
|
||||||
// X
|
// X
|
||||||
Crawler.XAI_BOT,
|
'xai-bot',
|
||||||
|
|
||||||
// You.com
|
// You.com
|
||||||
Crawler.YOU_BOT,
|
'youbot',
|
||||||
|
|
||||||
// Zhipu AI
|
// Zhipu AI
|
||||||
Crawler.ZHIPU_CHATGLM_SPIDER
|
'chatglm-spider',
|
||||||
]
|
|
||||||
.map((s) => s.toLowerCase())
|
// Zyte
|
||||||
.includes(String(toResult(resultOrUA, Bots).browser.name).toLowerCase());
|
'scrapy'
|
||||||
|
|
||||||
|
].includes(String(toResult(resultOrUA, Bots).browser.name).toLowerCase());
|
||||||
|
|
||||||
const isBot = (resultOrUA) => [
|
const isBot = (resultOrUA) => [
|
||||||
'cli',
|
'cli',
|
||||||
@ -167,7 +164,7 @@ const isBot = (resultOrUA) => [
|
|||||||
'library'
|
'library'
|
||||||
].includes(toResult(resultOrUA, Bots).browser.type);
|
].includes(toResult(resultOrUA, Bots).browser.type);
|
||||||
|
|
||||||
const isChromeFamily = (resultOrUA) => toResult(resultOrUA).engine.is(EngineName.BLINK);
|
const isChromeFamily = (resultOrUA) => toResult(resultOrUA).engine.is(Engine.BLINK);
|
||||||
|
|
||||||
const isElectron = () => !!(process?.versions?.hasOwnProperty('electron') || // node.js
|
const isElectron = () => !!(process?.versions?.hasOwnProperty('electron') || // node.js
|
||||||
/ electron\//i.test(navigator?.userAgent)); // browser
|
/ electron\//i.test(navigator?.userAgent)); // browser
|
||||||
|
2
src/main/ua-parser.d.ts
vendored
2
src/main/ua-parser.d.ts
vendored
@ -3,7 +3,7 @@
|
|||||||
// Definitions by: Faisal Salman <https://github.com/faisalman>
|
// Definitions by: Faisal Salman <https://github.com/faisalman>
|
||||||
|
|
||||||
import type { Headers } from "undici";
|
import type { Headers } from "undici";
|
||||||
import { BrowserType, CPUArch, DeviceType, EngineName } from "../enums/ua-parser-enums";
|
import { BrowserType, CPU as CPUArch, Device as DeviceType, Engine as EngineName } from "../enums/ua-parser-enums";
|
||||||
|
|
||||||
declare namespace UAParser {
|
declare namespace UAParser {
|
||||||
|
|
||||||
|
@ -1,242 +0,0 @@
|
|||||||
const UACHTests = [
|
|
||||||
{
|
|
||||||
desc: 'Avast Secure Browser',
|
|
||||||
headers : {
|
|
||||||
'sec-ch-ua': '"Avast Secure Browser";v="131", "Chromium";v="131", "Not_A Brand";v="24"'
|
|
||||||
},
|
|
||||||
expect: {
|
|
||||||
browser : {
|
|
||||||
name : 'Avast Secure Browser',
|
|
||||||
version : '131',
|
|
||||||
major : '131',
|
|
||||||
type : undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: 'Brave',
|
|
||||||
headers : {
|
|
||||||
'sec-ch-ua': '"Not A(Brand";v="8", "Chromium";v="132", "Brave";v="132"'
|
|
||||||
},
|
|
||||||
expect: {
|
|
||||||
browser : {
|
|
||||||
name : 'Brave',
|
|
||||||
version : '132',
|
|
||||||
major : '132',
|
|
||||||
type : undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: 'Chrome',
|
|
||||||
headers : {
|
|
||||||
'sec-ch-ua': '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"'
|
|
||||||
},
|
|
||||||
expect: {
|
|
||||||
browser : {
|
|
||||||
name : 'Chrome',
|
|
||||||
version : '111',
|
|
||||||
major : '111',
|
|
||||||
type : undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: 'Chrome Headless',
|
|
||||||
headers : {
|
|
||||||
'sec-ch-ua': '"Chromium";v="124", "HeadlessChrome";v="124", "Not-A.Brand";v="99"'
|
|
||||||
},
|
|
||||||
expect: {
|
|
||||||
browser : {
|
|
||||||
name : 'Chrome Headless',
|
|
||||||
version : '124',
|
|
||||||
major : '124',
|
|
||||||
type : undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: 'Chrome WebView',
|
|
||||||
headers : {
|
|
||||||
'sec-ch-ua': '"Android WebView";v="123", "Not:A-Brand";v="8", "Chromium";v="123"'
|
|
||||||
},
|
|
||||||
expect: {
|
|
||||||
browser : {
|
|
||||||
name : 'Chrome WebView',
|
|
||||||
version : '123',
|
|
||||||
major : '123',
|
|
||||||
type : undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: 'DuckDuckGo',
|
|
||||||
headers : {
|
|
||||||
'sec-ch-ua': '"DuckDuckGo";v="131", "Chromium";v="131", "Not_A Brand";v="24"'
|
|
||||||
},
|
|
||||||
expect : {
|
|
||||||
browser : {
|
|
||||||
name : 'DuckDuckGo',
|
|
||||||
version : '131',
|
|
||||||
major : '131',
|
|
||||||
type : undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: 'Edge',
|
|
||||||
headers : {
|
|
||||||
'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"'
|
|
||||||
},
|
|
||||||
expect: {
|
|
||||||
browser : {
|
|
||||||
name : 'Edge',
|
|
||||||
version : '120',
|
|
||||||
major : '120',
|
|
||||||
type : undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: 'Edge WebView2',
|
|
||||||
headers : {
|
|
||||||
'sec-ch-ua': '" Not;A Brand";v="99", "Microsoft Edge";v="103", "Chromium";v="103", "Microsoft Edge WebView2";v="104"'
|
|
||||||
},
|
|
||||||
expect: {
|
|
||||||
browser : {
|
|
||||||
name : 'Edge WebView2',
|
|
||||||
version : '104',
|
|
||||||
major : '104',
|
|
||||||
type : undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: 'Huawei Browser',
|
|
||||||
headers : {
|
|
||||||
'sec-ch-ua': '"Not.A/Brand";v="8", "Chromium";v="114", "HuaweiBrowser";v="114"'
|
|
||||||
},
|
|
||||||
expect: {
|
|
||||||
browser : {
|
|
||||||
name : 'Huawei Browser',
|
|
||||||
version : '114',
|
|
||||||
major : '114',
|
|
||||||
type : undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: 'MIUI Browser',
|
|
||||||
headers : {
|
|
||||||
'sec-ch-ua': '"Miui Browser";v="123", "Not:A-Brand";v="8", "Chromium";v="123"'
|
|
||||||
},
|
|
||||||
expect: {
|
|
||||||
browser : {
|
|
||||||
name : 'MIUI Browser',
|
|
||||||
version : '123',
|
|
||||||
major : '123',
|
|
||||||
type : undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: 'Oculus Browser',
|
|
||||||
headers : {
|
|
||||||
'sec-ch-ua': '"Chromium";v="130", "Oculus Browser";v="36", "Not?A_Brand";v="99"'
|
|
||||||
},
|
|
||||||
expect: {
|
|
||||||
browser : {
|
|
||||||
name : 'Oculus Browser',
|
|
||||||
version : '36',
|
|
||||||
major : '36',
|
|
||||||
type : undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: 'Opera',
|
|
||||||
headers : {
|
|
||||||
'sec-ch-ua': '"Opera";v="116", "Chromium";v="131", "Not_A Brand";v="24"'
|
|
||||||
},
|
|
||||||
expect: {
|
|
||||||
browser : {
|
|
||||||
name : 'Opera',
|
|
||||||
version : '116',
|
|
||||||
major : '116',
|
|
||||||
type : undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: 'Opera GX',
|
|
||||||
headers : {
|
|
||||||
'sec-ch-ua': '"Chromium";v="128", "Not;A=Brand";v="24", "Opera GX";v="114"'
|
|
||||||
},
|
|
||||||
expect: {
|
|
||||||
browser : {
|
|
||||||
name : 'Opera GX',
|
|
||||||
version : '114',
|
|
||||||
major : '114',
|
|
||||||
type : undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: 'Opera Mobi',
|
|
||||||
headers : {
|
|
||||||
'sec-ch-ua': '"OperaMobile";v="86", ";Not A Brand";v="99", "Opera";v="115", "Chromium";v="130"'
|
|
||||||
},
|
|
||||||
expect: {
|
|
||||||
browser : {
|
|
||||||
name : 'Opera Mobi',
|
|
||||||
version : '86',
|
|
||||||
major : '86',
|
|
||||||
type : undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: 'Opera Mobi',
|
|
||||||
headers : {
|
|
||||||
'sec-ch-ua': '"Chromium";v="132", "OperaMobile";v="87", "Opera";v="117", " Not A;Brand";v="99"'
|
|
||||||
},
|
|
||||||
expect: {
|
|
||||||
browser : {
|
|
||||||
name : 'Opera Mobi',
|
|
||||||
version : '87',
|
|
||||||
major : '87',
|
|
||||||
type : undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: 'Samsung Internet',
|
|
||||||
headers : {
|
|
||||||
'sec-ch-ua': '"Chromium";v="125", "Not.A/Brand";v="24", "Samsung Internet";v="27.0"'
|
|
||||||
},
|
|
||||||
expect: {
|
|
||||||
browser : {
|
|
||||||
name : 'Samsung Internet',
|
|
||||||
version : '27.0',
|
|
||||||
major : '27',
|
|
||||||
type : undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: 'Yandex',
|
|
||||||
headers : {
|
|
||||||
'sec-ch-ua': '"Chromium";v="130", "YaBrowser";v="24.12", "Not?A_Brand";v="99", "Yowser";v="2.5"'
|
|
||||||
},
|
|
||||||
expect: {
|
|
||||||
browser : {
|
|
||||||
name : 'Yandex',
|
|
||||||
version : '24.12',
|
|
||||||
major : '24',
|
|
||||||
type : undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
module.exports = UACHTests;
|
|
@ -329,16 +329,6 @@
|
|||||||
"type" : "crawler"
|
"type" : "crawler"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"desc" : "Claude-SearchBot",
|
|
||||||
"ua" : "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Claude-SearchBot/1.0; +Claude-SearchBot@anthropic.com)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "Claude-SearchBot",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"desc" : "ClaudeWeb",
|
"desc" : "ClaudeWeb",
|
||||||
"ua" : "Claude-Web/1.0 (web crawler; +https://www.anthropic.com/; bots@anthropic.com)",
|
"ua" : "Claude-Web/1.0 (web crawler; +https://www.anthropic.com/; bots@anthropic.com)",
|
||||||
@ -579,16 +569,6 @@
|
|||||||
"type" : "crawler"
|
"type" : "crawler"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"desc" : "APIs-Google",
|
|
||||||
"ua" : "APIs-Google (+https://developers.google.com/webmasters/APIs-Google.html)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "APIs-Google",
|
|
||||||
"version" : "undefined",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"desc" : "Googlebot-Video",
|
"desc" : "Googlebot-Video",
|
||||||
"ua" : "Googlebot-Video/1.0",
|
"ua" : "Googlebot-Video/1.0",
|
||||||
@ -689,16 +669,6 @@
|
|||||||
"type" : "crawler"
|
"type" : "crawler"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"desc" : "Google-CloudVertexBot",
|
|
||||||
"ua" : "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.7204.183 Mobile Safari/537.36 (compatible; Google-CloudVertexBot; +https://cloud.google.com/enterprise-search)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "Google-CloudVertexBot",
|
|
||||||
"version" : "undefined",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"desc" : "Google-Safety",
|
"desc" : "Google-Safety",
|
||||||
"ua" : "Google-Safety",
|
"ua" : "Google-Safety",
|
||||||
@ -990,16 +960,6 @@
|
|||||||
"type" : "crawler"
|
"type" : "crawler"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"desc" : "SBIntuitionsBot",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; SBIntuitionsBot/0.1;+https://www.sbintuitions.co.jp/bot/)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "SBIntuitionsBot",
|
|
||||||
"version" : "0.1",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"desc" : "SeekportBot",
|
"desc" : "SeekportBot",
|
||||||
"ua" : "Mozilla/5.0 (compatible; SeekportBot; +https://bot.seekport.com)",
|
"ua" : "Mozilla/5.0 (compatible; SeekportBot; +https://bot.seekport.com)",
|
||||||
@ -1110,16 +1070,6 @@
|
|||||||
"type" : "crawler"
|
"type" : "crawler"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"desc" : "TikTokSpider",
|
|
||||||
"ua" : "Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; TikTokSpider; ttspider-feedback@tiktok.com)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "TikTokSpider",
|
|
||||||
"version" : "undefined",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"desc" : "Timpibot",
|
"desc" : "Timpibot",
|
||||||
"ua" : "Timpibot/0.8 (+http://www.timpi.io)",
|
"ua" : "Timpibot/0.8 (+http://www.timpi.io)",
|
||||||
@ -1190,26 +1140,6 @@
|
|||||||
"type" : "crawler"
|
"type" : "crawler"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"desc" : "webzio",
|
|
||||||
"ua" : "webzio (+https://webz.io/bot.html)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "webzio",
|
|
||||||
"version" : "undefined",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "Webzio-Extended",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; Webzio-Extended/1.0; +https://www.webzio.com/bot.html)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "Webzio-Extended",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"desc" : "Yahoo! Japan",
|
"desc" : "Yahoo! Japan",
|
||||||
"ua" : "Y!J-BRW/1.0 (https://www.yahoo-help.jp/app/answers/detail/p/595/a_id/42716)",
|
"ua" : "Y!J-BRW/1.0 (https://www.yahoo-help.jp/app/answers/detail/p/595/a_id/42716)",
|
||||||
@ -1230,46 +1160,6 @@
|
|||||||
"type" : "crawler"
|
"type" : "crawler"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"desc" : "YandexAccessibilityBot",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexAccessibilityBot/3.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexAccessibilityBot",
|
|
||||||
"version" : "3.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexAdditionalBot",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexAdditionalBot/3.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexAdditionalBot",
|
|
||||||
"version" : "3.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexAdNet",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexAdNet/1.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexAdNet",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexBlogs",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexBlogs/0.99; robot; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexBlogs",
|
|
||||||
"version" : "0.99",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"desc" : "YandexBot",
|
"desc" : "YandexBot",
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)",
|
"ua" : "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)",
|
||||||
@ -1280,246 +1170,6 @@
|
|||||||
"type" : "crawler"
|
"type" : "crawler"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"desc" : "YandexBot MirrorDetector",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexBot/3.0; MirrorDetector; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexBot MirrorDetector",
|
|
||||||
"version" : "3.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexComBot",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexComBot/3.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexComBot",
|
|
||||||
"version" : "3.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexFavicons",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexFavicons/1.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexFavicons",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexImageResizer",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexImageResizer/2.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexImageResizer",
|
|
||||||
"version" : "2.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexImages",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexImages/3.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexImages",
|
|
||||||
"version" : "3.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexMarket",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexMarket/1.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexMarket",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexMetrika",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexMetrika/2.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexMetrika",
|
|
||||||
"version" : "2.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexMedia",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexMedia/3.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexMedia",
|
|
||||||
"version" : "3.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexMobileBot",
|
|
||||||
"ua" : "Mozilla/5.0 (iPhone; CPU iPhone OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B411 Safari/600.1.4 (compatible; YandexMobileBot/3.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexMobileBot",
|
|
||||||
"version" : "3.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexMobileScreenShotBot",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexMobileScreenShotBot/1.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexMobileScreenShotBot",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexNews",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexNews/4.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexNews",
|
|
||||||
"version" : "4.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexOntoDB",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexOntoDB/1.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexOntoDB",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexOntoDBAPI",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexOntoDBAPI/1.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexOntoDBAPI",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexPartner",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexPartner/3.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexPartner",
|
|
||||||
"version" : "3.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexRCA",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexRCA/1.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexRCA",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexRenderResourcesBot",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexRenderResourcesBot/1.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexRenderResourcesBot",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexScreenshotBot",
|
|
||||||
"ua" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Safari/537.36 (compatible; YandexScreenshotBot/3.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexScreenshotBot",
|
|
||||||
"version" : "3.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexSpravBot",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexSpravBot/1.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexSpravBot",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexTracker",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexTracker/1.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexTracker",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexVertis",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexVertis/3.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexVertis",
|
|
||||||
"version" : "3.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexVerticals",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexVerticals/1.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexVerticals",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexVideo",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexVideo/3.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexVideo",
|
|
||||||
"version" : "3.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexVideoParser",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexVideoParser/1.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexVideoParser",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexWebmaster",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexWebmaster/2.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexWebmaster",
|
|
||||||
"version" : "2.0",
|
|
||||||
"type" : "crawler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"desc" : "YepBot",
|
"desc" : "YepBot",
|
||||||
"ua" : "Mozilla/5.0 (compatible; YepBot/1.0; +http://yep.com/yepbot/)",
|
"ua" : "Mozilla/5.0 (compatible; YepBot/1.0; +http://yep.com/yepbot/)",
|
||||||
|
@ -99,26 +99,6 @@
|
|||||||
"type" : "fetcher"
|
"type" : "fetcher"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"desc" : "Claude-User",
|
|
||||||
"ua" : "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Claude-User/1.0; +Claude-User@anthropic.com)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "Claude-User",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "fetcher"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "Cohere-AI",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; Cohere-AI/1.0; +https://cohere.com/)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "Cohere-AI",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "fetcher"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"desc" : "DuckAssistBot",
|
"desc" : "DuckAssistBot",
|
||||||
"ua" : "DuckAssistBot/1.2; (+http://duckduckgo.com/duckassistbot.html)",
|
"ua" : "DuckAssistBot/1.2; (+http://duckduckgo.com/duckassistbot.html)",
|
||||||
@ -419,96 +399,6 @@
|
|||||||
"type" : "fetcher"
|
"type" : "fetcher"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"desc" : "YaDirectFetcher",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YaDirectFetcher/1.0; Dyatel; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YaDirectFetcher",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "fetcher"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexCalendar",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexCalendar/1.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexCalendar",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "fetcher"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexDirect",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexDirect/3.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexDirect",
|
|
||||||
"version" : "3.0",
|
|
||||||
"type" : "fetcher"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexDirectDyn",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexDirectDyn/1.0; +http://yandex.com/bots",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexDirectDyn",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "fetcher"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexForDomain",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexForDomain/1.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexForDomain",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "fetcher"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexPagechecker",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexPagechecker/1.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexPagechecker",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "fetcher"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexSearchShop",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexSearchShop/1.0; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexSearchShop",
|
|
||||||
"version" : "1.0",
|
|
||||||
"type" : "fetcher"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexSitelinks",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexSitelinks; Dyatel; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexSitelinks",
|
|
||||||
"version" : "undefined",
|
|
||||||
"type" : "fetcher"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"desc" : "YandexUserproxy",
|
|
||||||
"ua" : "Mozilla/5.0 (compatible; YandexUserproxy; robot; +http://yandex.com/bots)",
|
|
||||||
"expect" :
|
|
||||||
{
|
|
||||||
"name" : "YandexUserproxy",
|
|
||||||
"version" : "undefined",
|
|
||||||
"type" : "fetcher"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"desc" : "Zoombot",
|
"desc" : "Zoombot",
|
||||||
"ua" : "Mozilla/5.0 (compatible; Zoombot/1.0; +https://zoom.us; crawler@domain.com)",
|
"ua" : "Mozilla/5.0 (compatible; Zoombot/1.0; +https://zoom.us; crawler@domain.com)",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { UAParser } from '../../src/main/ua-parser.mjs';
|
import { UAParser } from '../../src/main/ua-parser.mjs';
|
||||||
import { CPUArch, DeviceType, EngineName } from '../../src/enums/ua-parser-enums.mjs';
|
import { CPU, Device, Engine } from '../../src/enums/ua-parser-enums.mjs';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
|
|
||||||
describe('Returns', () => {
|
describe('Returns', () => {
|
||||||
@ -19,8 +19,8 @@ describe('Returns', () => {
|
|||||||
describe('Enums', () => {
|
describe('Enums', () => {
|
||||||
it('Can use enum', () => {
|
it('Can use enum', () => {
|
||||||
const { cpu, device, engine } = UAParser('Mozilla/5.0 (X11; U; Linux armv7l; en-GB; rv:1.9.2a1pre) Gecko/20090928 Firefox/3.5 Maemo Browser 1.4.1.22 RX-51 N900');
|
const { cpu, device, engine } = UAParser('Mozilla/5.0 (X11; U; Linux armv7l; en-GB; rv:1.9.2a1pre) Gecko/20090928 Firefox/3.5 Maemo Browser 1.4.1.22 RX-51 N900');
|
||||||
assert.strictEqual(cpu.is(CPUArch.ARM), true);
|
assert.strictEqual(cpu.is(CPU.ARM), true);
|
||||||
assert.strictEqual(device.is(DeviceType.MOBILE), true);
|
assert.strictEqual(device.is(Device.MOBILE), true);
|
||||||
assert.strictEqual(engine.is(EngineName.GECKO), true);
|
assert.strictEqual(engine.is(Engine.GECKO), true);
|
||||||
});
|
});
|
||||||
});
|
});
|
@ -1,6 +1,5 @@
|
|||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const { UAParser } = require('../../src/main/ua-parser');
|
const { UAParser } = require('../../src/main/ua-parser');
|
||||||
const UACHTests = require('../data/ua-ch/headers');
|
|
||||||
|
|
||||||
describe('Map UA-CH headers', () => {
|
describe('Map UA-CH headers', () => {
|
||||||
|
|
||||||
@ -222,11 +221,232 @@ describe('Map UA-CH headers', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('UA-CH Headers tests', () => {
|
describe('UA-CH Headers tests', () => {
|
||||||
UACHTests.forEach(test => {
|
[
|
||||||
it(`Test for ${test.desc}`, () => {
|
{
|
||||||
const { browser } = UAParser(test.headers).withClientHints();
|
headers : {
|
||||||
assert.deepEqual(browser, test.expect.browser);
|
'sec-ch-ua': '"Avast Secure Browser";v="131", "Chromium";v="131", "Not_A Brand";v="24"'
|
||||||
});
|
},
|
||||||
|
expect: {
|
||||||
|
browser : {
|
||||||
|
name : 'Avast Secure Browser',
|
||||||
|
version : '131',
|
||||||
|
major : '131',
|
||||||
|
type : undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
headers : {
|
||||||
|
'sec-ch-ua': '"Not A(Brand";v="8", "Chromium";v="132", "Brave";v="132"'
|
||||||
|
},
|
||||||
|
expect: {
|
||||||
|
browser : {
|
||||||
|
name : 'Brave',
|
||||||
|
version : '132',
|
||||||
|
major : '132',
|
||||||
|
type : undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
headers : {
|
||||||
|
'sec-ch-ua': '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"'
|
||||||
|
},
|
||||||
|
expect: {
|
||||||
|
browser : {
|
||||||
|
name : 'Chrome',
|
||||||
|
version : '111',
|
||||||
|
major : '111',
|
||||||
|
type : undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
headers : {
|
||||||
|
'sec-ch-ua': '"Chromium";v="124", "HeadlessChrome";v="124", "Not-A.Brand";v="99"'
|
||||||
|
},
|
||||||
|
expect: {
|
||||||
|
browser : {
|
||||||
|
name : 'Chrome Headless',
|
||||||
|
version : '124',
|
||||||
|
major : '124',
|
||||||
|
type : undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
headers : {
|
||||||
|
'sec-ch-ua': '"Android WebView";v="123", "Not:A-Brand";v="8", "Chromium";v="123"'
|
||||||
|
},
|
||||||
|
expect: {
|
||||||
|
browser : {
|
||||||
|
name : 'Chrome WebView',
|
||||||
|
version : '123',
|
||||||
|
major : '123',
|
||||||
|
type : undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
headers : {
|
||||||
|
'sec-ch-ua': '"DuckDuckGo";v="131", "Chromium";v="131", "Not_A Brand";v="24"'
|
||||||
|
},
|
||||||
|
expect : {
|
||||||
|
browser : {
|
||||||
|
name : 'DuckDuckGo',
|
||||||
|
version : '131',
|
||||||
|
major : '131',
|
||||||
|
type : undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
headers : {
|
||||||
|
'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"'
|
||||||
|
},
|
||||||
|
expect: {
|
||||||
|
browser : {
|
||||||
|
name : 'Edge',
|
||||||
|
version : '120',
|
||||||
|
major : '120',
|
||||||
|
type : undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
headers : {
|
||||||
|
'sec-ch-ua': '" Not;A Brand";v="99", "Microsoft Edge";v="103", "Chromium";v="103", "Microsoft Edge WebView2";v="104"'
|
||||||
|
},
|
||||||
|
expect: {
|
||||||
|
browser : {
|
||||||
|
name : 'Edge WebView2',
|
||||||
|
version : '104',
|
||||||
|
major : '104',
|
||||||
|
type : undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
headers : {
|
||||||
|
'sec-ch-ua': '"Not.A/Brand";v="8", "Chromium";v="114", "HuaweiBrowser";v="114"'
|
||||||
|
},
|
||||||
|
expect: {
|
||||||
|
browser : {
|
||||||
|
name : 'Huawei Browser',
|
||||||
|
version : '114',
|
||||||
|
major : '114',
|
||||||
|
type : undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
headers : {
|
||||||
|
'sec-ch-ua': '"Miui Browser";v="123", "Not:A-Brand";v="8", "Chromium";v="123"'
|
||||||
|
},
|
||||||
|
expect: {
|
||||||
|
browser : {
|
||||||
|
name : 'MIUI Browser',
|
||||||
|
version : '123',
|
||||||
|
major : '123',
|
||||||
|
type : undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
headers : {
|
||||||
|
'sec-ch-ua': '"Chromium";v="130", "Oculus Browser";v="36", "Not?A_Brand";v="99"'
|
||||||
|
},
|
||||||
|
expect: {
|
||||||
|
browser : {
|
||||||
|
name : 'Oculus Browser',
|
||||||
|
version : '36',
|
||||||
|
major : '36',
|
||||||
|
type : undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
headers : {
|
||||||
|
'sec-ch-ua': '"Opera";v="116", "Chromium";v="131", "Not_A Brand";v="24"'
|
||||||
|
},
|
||||||
|
expect: {
|
||||||
|
browser : {
|
||||||
|
name : 'Opera',
|
||||||
|
version : '116',
|
||||||
|
major : '116',
|
||||||
|
type : undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
headers : {
|
||||||
|
'sec-ch-ua': '"Chromium";v="128", "Not;A=Brand";v="24", "Opera GX";v="114"'
|
||||||
|
},
|
||||||
|
expect: {
|
||||||
|
browser : {
|
||||||
|
name : 'Opera GX',
|
||||||
|
version : '114',
|
||||||
|
major : '114',
|
||||||
|
type : undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
headers : {
|
||||||
|
'sec-ch-ua': '"OperaMobile";v="86", ";Not A Brand";v="99", "Opera";v="115", "Chromium";v="130"'
|
||||||
|
},
|
||||||
|
expect: {
|
||||||
|
browser : {
|
||||||
|
name : 'Opera Mobi',
|
||||||
|
version : '86',
|
||||||
|
major : '86',
|
||||||
|
type : undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
headers : {
|
||||||
|
'sec-ch-ua': '"Chromium";v="132", "OperaMobile";v="87", "Opera";v="117", " Not A;Brand";v="99"'
|
||||||
|
},
|
||||||
|
expect: {
|
||||||
|
browser : {
|
||||||
|
name : 'Opera Mobi',
|
||||||
|
version : '87',
|
||||||
|
major : '87',
|
||||||
|
type : undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
headers : {
|
||||||
|
'sec-ch-ua': '"Chromium";v="125", "Not.A/Brand";v="24", "Samsung Internet";v="27.0"'
|
||||||
|
},
|
||||||
|
expect: {
|
||||||
|
browser : {
|
||||||
|
name : 'Samsung Internet',
|
||||||
|
version : '27.0',
|
||||||
|
major : '27',
|
||||||
|
type : undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
headers : {
|
||||||
|
'sec-ch-ua': '"Chromium";v="130", "YaBrowser";v="24.12", "Not?A_Brand";v="99", "Yowser";v="2.5"'
|
||||||
|
},
|
||||||
|
expect: {
|
||||||
|
browser : {
|
||||||
|
name : 'Yandex',
|
||||||
|
version : '24.12',
|
||||||
|
major : '24',
|
||||||
|
type : undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
]
|
||||||
|
.forEach(test => {
|
||||||
|
const { browser } = UAParser(test.headers).withClientHints();
|
||||||
|
assert.deepEqual(browser, test.expect.browser);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user