From e6ba3091b4b19e8d85a0a160abc514914cda6e5c Mon Sep 17 00:00:00 2001 From: Tutik Alexsandr Date: Mon, 7 Oct 2024 19:14:19 +0300 Subject: [PATCH] Detect new brands: CPDEVICE, COLORROOM, CMF, E-TACHI, Korax, XPPen and Detect devices for exist brands (#205) feat(sync): Adds detection for Blackbox Exporter bot (matomo-org#7842) --- feat(sync) Detect new brand COLORROOM And Detect devices for exist brands (matomo-org#7848) feat(device) detect brand Hotwav: Hyper 7 Pro feat(device) detect brand Realme: 13 Pro 5G (RMX3988) feat(device) detect brand Vivo: V17 feat(device) detect brand Shivaki: STV-55LED41 feat(device) detect brand OPPO: A3x 5G (PKD130) feat(device) detect brand NUU Mobile: B30 Pro (S6702X) feat(device) detect brand Vivo: Y03t (V2409, V2344), V40 (V2348) feat(device) detect new brand COLORROOM: K10C feat(device) detect brand Google: Pixel 9 Pro, Pixel 9, Pixel 9 Pro Fold feat(device) detect brand Motorola: Moto Razr 50 feat(device) detect brand Condor: Nova 60 feat(device) detect brand EXCEED: EX8S1 feat(device) detect brand ZTE: Fresh 50 (7543N) feat(device) detect brand LT Mobile: S33 feat(device) detect brand Doogee: Blade 10 Ultra, Blade 10 Pro, Blade 10 feat(device) detect brand CUBOT: King Kong ES feat(device) detect brand Huawei: Honor X6b (JDY-LX2) feat(device) detect brand Tecno Mobile: Camon 19 feat(device) detect brand Realme: 12 5G (RMX3992), 13 Pro 5G (RMX3990), Narzo N61 (RMX3933), 13 Pro+ 5G (RMX3921), Narzo 70 5G (RMX3869) feat(device) detect brand Nubia: Focus Pro 5G (Z2351N) feat(device) detect brand Dcode: Cygnal 4 Lite (DS-CL4 Lite) feat(device) detect brand Starwind: SW-LED65UG402, SW-LED43UB400, SW-LED43SB300, SW-LED40SB300, SW-LED32SB304 --- feat(sync) Improves detection for Aloha Browser family (matomo-org#7850) --- feat(sync) Detect new brand E-TACHI And Detect devices for exist brands (matomo-org#7851) feat(device) detect new brand E-TACHI: A5 Slim feat(device) detect brand Nothing Phone: 1 (A015) feat(device) detect brand Xiaomi: 14T Pro (2407FPN8EG) feat(device) detect brand Sharp: Aquos V6 (SH-C03), Aquos V6+ (SH-C04) feat(device) detect brand Dcode: Cypher (DS-CR1) feat(device) detect brand Wiko: Y51 (W-K211-OPE) feat(device) detect brand OnePlus: Pad 2 12.1" WiFi (OPD2403) feat(device) detect brand OPPO: Pad Neo (OPD2303) feat(device) detect brand Hometech: 7 Premium Pro feat(device) detect brand Skyline: 50UST5970 feat(device) detect brand Asano: 50LU8130S 50.0", 50LF7010T 50.0" feat(device) detect brand ZTE: Blade A35 (Z2453) feat(device) detect brand Motorola: Moto X50 Ultra (XT2401-2) feat(device) detect brand VOCAL: V11 feat(device) detect brand Huawei: Honor Magic V3 (FCP-N49) feat(device) detect brand Oukitel: WP39, WP28 S, WP28 E feat(device) detect brand HTC: U Play feat(device) detect brand Nothing Phone: 2a feat(device) detect brand Hammer: Iron Va feat(device) detect brand AllDocube: iPlay 60 Mini Pro feat(device) detect brand Energizer: Energy S550 feat(device) detect brand Tecno Mobile: Spark 30C (TECNO KL5), Spark Go (2022) (TECNO KG5m) feat(device) detect brand Sparx: Ultra 8 feat(device) rename brand Nothing Phone to Nothing and rename device models feat(device) detect brand CMF: Phone 1 (A015) --- feat(sync) Improves detection for client hints fragment (matomo-org#7852) --- feat(sync) Detect new brands: CPDEVICE, Korax, XPPen and Detect devices for exist brands (matomo-org#7855) feat(device) detect brand Google: Pixel 4a (5G) (G025E) feat(device) detect brand OPPO: A3 5G (CPH2693) feat(device) detect new brand CPDEVICE: Apollo 10 Pro feat(device) detect brand OPPO: K12x 5G (CPH2667), A3x (CPH2641) feat(device) detect brand OnePlus: Nord 4 (CPH2661, CPH2663) feat(device) detect brand MobiWire: Smart P24 feat(device) detect brand Vivo: V17 Neo (1907_19) feat(device) detect brand Casper: VIA L40 feat(device) detect brand Huawei: MatePad SE 11 WiFi (AGS6-W09), MatePad SE 11 (AGS6-L09), MatePad T10s (AGS3-AL09) feat(device) detect brand Pico: A8110 feat(device) detect brand Xiaomi: Redmi Note 8 (2021) (biloba) feat(device) detect brand Blu: View 5 (B160V) feat(device) detect brand iHunt: Titan P10000 Pro feat(device) detect brand iTel: Vision 2 feat(device) detect new brand XPPen: Magic Drawing Pad feat(device) detect new brand Korax: Eurobox feat(device) detect brand Xiaomi: Redmi Note 7 (M1901F7G), Redmi 7A (M1903C3EG) feat(device) detect brand Vivo: Y85A, Y85, Y83A, Y71, Y71A feat(device) detect brand Maze Speed: M1582C Max feat(device) detect brand Dragon Touch: Y88X Plus feat(device) detect brand Vorcom: Quartz Pro feat(device) detect brand Lenovo: Vibe K5 (A6020l37), Vibe K5 Plus (A6020a46) feat(device) detect brand Huawei: Nova 5T (Yale-L71A, Yale-L61D), Honor Play 3, Honor 9X Pro, Honor 9X, Honor 8S, Honor 8A, Honor 20, Honor 10I feat(client) remove default engine from Wolvic browser feat(client) added multy browser family for Wolvic browser --- feat(sync) Improves detection for various bots (matomo-org#7857) * Improves detection for generic bots * Adds detection for Inspici * Adds detection for Meta-ExternalAgent * Adds detection for Meta-ExternalFetcher * Fix url for Facebook crawlers * chore: generate indexes --- README.md | 513 ++++---- client-hints.d.ts | 1 + client-hints.js | 111 +- index.js | 78 +- parser/client/browser-families.js | 4 +- parser/client/browser.js | 9 + parser/const/form-factor-mapping.js | 11 + parser/device/brand-short.js | 8 +- parser/helper.js | 2 +- regexes/bots.yml | 36 +- regexes/client-index-hash.yml | 6 + regexes/client/browsers.yml | 2 - regexes/device-index-hash.yml | 237 +++- regexes/device/mobiles.yml | 291 +++-- tests/fixtures/clients/browser.yml | 10 +- tests/fixtures/devices/bots.yml | 68 +- tests/fixtures/devices/car_browser.yml | 18 + tests/fixtures/devices/clienthints.yml | 81 +- tests/fixtures/devices/desktop.yml | 2 +- tests/fixtures/devices/phablet-1.yml | 126 ++ tests/fixtures/devices/podcasting.yml | 4 +- tests/fixtures/devices/smartphone-11.yml | 2 +- tests/fixtures/devices/smartphone-12.yml | 2 +- tests/fixtures/devices/smartphone-17.yml | 2 +- tests/fixtures/devices/smartphone-18.yml | 2 +- tests/fixtures/devices/smartphone-23.yml | 6 +- tests/fixtures/devices/smartphone-24.yml | 2 +- tests/fixtures/devices/smartphone-26.yml | 2 +- tests/fixtures/devices/smartphone-27.yml | 4 +- tests/fixtures/devices/smartphone-32.yml | 4 +- tests/fixtures/devices/smartphone-37.yml | 2 +- tests/fixtures/devices/smartphone-38.yml | 12 +- tests/fixtures/devices/smartphone-4.yml | 2 +- tests/fixtures/devices/smartphone-40.yml | 1527 +++++++++++++++++++++- tests/fixtures/devices/smartphone-5.yml | 6 +- tests/fixtures/devices/smartphone.yml | 2 +- tests/fixtures/devices/tablet-11.yml | 234 ++++ tests/fixtures/devices/tablet-3.yml | 2 +- tests/fixtures/devices/tv-4.yml | 180 +++ tests/fixtures/devices/unknown.yml | 13 + tests/fixtures/devices/wearable.yml | 18 + tests/fixtures/oss.yml | 8 - 42 files changed, 3169 insertions(+), 481 deletions(-) create mode 100644 parser/const/form-factor-mapping.js diff --git a/README.md b/README.md index 4c1460c8..3b4f406e 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # [node-device-detector](https://www.npmjs.com/package/node-device-detector) -_Last update: 09/09/2024_ +_Last update: 07/10/2024_ ## Description @@ -411,7 +411,7 @@ detector.detect (indexes on) x 1,032 ops/sec ±0.61% (94 runs sampled) ### What about tests? -Yes we use tests, total tests ~79.8k +Yes we use tests, total tests ~80.8k ### Get more information about a device (experimental) > This parser is experimental and contains few devices. (1845 devices, alias devices 3912) @@ -597,7 +597,7 @@ Others -##### Support detect brands list (1934): +##### Support detect brands list (1961):
Show details @@ -627,87 +627,89 @@ AXEN | Axioo | AXXA | Axxion | AYA | AYYA | Azeyou Azumi Mobile | Azupik | b2m | Backcell | BAFF | BangOlufsen | Barnes & Noble BARTEC | BASE | BAUHN | BB Mobile | BBK | BDF | BDQ BDsharing | Beafon | Becker | Beeline | Beelink | Beetel | Beista -Beko | Bellphone | Benco | Benesse | BenQ | BenQ-Siemens | BenWee -Benzo | Beyond | Bezkam | BGH | Bigben | BIHEE | BilimLand -Billion | Billow | BioRugged | Bird | Bitel | Bitmore | Bittium -Bkav | Black Bear | Black Box | Black Fox | Blackpcs | Blackview | Blaupunkt -Bleck | BLISS | Blloc | Blow | Blu | Bluboo | Bluebird -Bluedot | Bluegood | BlueSky | Bluewave | BluSlate | BMAX | Bmobile -BMW | BMXC | Bobarry | bogo | Bolva | Bookeen | Boost -Botech | Boway | bq | BrandCode | Brandt | BRAVE | Bravis -BrightSign | Brigmton | Brondi | BROR | BS Mobile | Bubblegum | Bundy -Bush | BuzzTV | BYD | BYYBUO | C Idea | C5 Mobile | CADENA -CAGI | Camfone | Canaima | Canal Digital | Canal+ | Canguro | Capitel -Captiva | Carbon Mobile | Carrefour | Casio | Casper | Cat | Cavion -CCIT | Cecotec | Ceibal | Celcus | Celkon | Cell-C | Cellacom -CellAllure | Cellution | CENTEK | Centric | CEPTER | CG Mobile | CGV -Chainway | Changhong | CHCNAV | Cherry Mobile | Chico Mobile | ChiliGreen | China Mobile -China Telecom | Chuwi | CipherLab | Citycall | CKK Mobile | Claresta | Clarmin -CLAYTON | ClearPHONE | Clementoni | Cloud | Cloudfone | Cloudpad | Clout -Clovertek | CnM | Cobalt | Coby Kyros | Colors | Comio | Compal -Compaq | COMPUMAX | ComTrade Tesla | Conceptum | Concord | ConCorde | Condor -Connectce | Connex | Conquest | Continental Edison | Contixo | COOD-E | Coolpad -Coopers | CORN | Cosmote | Covia | Cowon | COYOTE | CreNova -Crescent | Cricket | Crius Mea | Crony | Crosscall | Crown | Ctroniq -Cube | CUBOT | Cuiud | CVTE | Cwowdefu | Cyrus | D-Link -D-Tech | Daewoo | Danew | DangcapHD | Dany | Daria | DASS -Datalogic | Datamini | Datang | Datawind | Datsun | Dazen | DbPhone -Dbtel | Dcode | DEALDIG | Dell | Denali | Denver | Desay -DeWalt | DEXP | DEYI | DF | DGTEC | DIALN | Dialog -Dicam | Digi | Digicel | DIGICOM | Digidragon | DIGIFORS | Digihome -Digiland | Digit4G | Digma | DIJITSU | DIKOM | DIMO | Dinalink -Dinax | DING DING | DIORA | DISH | Disney | Ditecma | Diva -DiverMax | Divisat | DIXON | DL | DMM | DMOAO | DNS -DoCoMo | Doffler | Dolamee | Dom.ru | Doogee | Doopro | Doov -Dopod | Doppio | DORLAND | Doro | DPA | DRAGON | Dragon Touch -Dreamgate | DreamStar | DreamTab | Droidlogic | Droxio | DSDevices | DSIC -Dtac | Dune HD | DUNNS Mobile | Durabook | Duubee | Dykemann | Dyon -E-Boda | E-Ceros | E-tel | Eagle | EagleSoar | EAS Electric | Easypix +Beko | Bell | Bellphone | Benco | Benesse | BenQ | BenQ-Siemens +BenWee | Benzo | Beyond | Bezkam | BGH | Bigben | BIHEE +BilimLand | Billion | Billow | BioRugged | Bird | Bitel | Bitmore +Bittium | Bkav | Black Bear | Black Box | Black Fox | Blackpcs | Blackview +Blaupunkt | Bleck | BLISS | Blloc | Blow | Blu | Bluboo +Bluebird | Bluedot | Bluegood | BlueSky | Bluewave | BluSlate | BMAX +Bmobile | BMW | BMXC | Bobarry | bogo | Bolva | Bookeen +Boost | Botech | Boway | bq | BrandCode | Brandt | BRAVE +Bravis | BrightSign | Brigmton | Brondi | BROR | BS Mobile | Bubblegum +Bundy | Bush | BuzzTV | BYD | BYJU'S | BYYBUO | C Idea +C5 Mobile | CADENA | CAGI | Camfone | Canaima | Canal Digital | Canal+ +Canguro | Capitel | Captiva | Carbon Mobile | Carrefour | Casio | Casper +Cat | Cavion | CCIT | Cecotec | Ceibal | Celcus | Celkon +Cell-C | Cellacom | CellAllure | Cellution | CENTEK | Centric | CEPTER +CG Mobile | CGV | Chainway | Changhong | CHCNAV | Cherry Mobile | Chico Mobile +ChiliGreen | China Mobile | China Telecom | Chuwi | CipherLab | Citycall | CKK Mobile +Claresta | Clarmin | CLAYTON | ClearPHONE | Clementoni | Cloud | Cloudfone +Cloudpad | Clout | Clovertek | CMF | CnM | Cobalt | Coby Kyros +COLORROOM | Colors | Comio | Compal | Compaq | COMPUMAX | ComTrade Tesla +Conceptum | Concord | ConCorde | Condor | Connectce | Connex | Conquest +Continental Edison | Contixo | COOD-E | Coolpad | Coopers | CORN | Cosmote +Covia | Cowon | COYOTE | CPDEVICE | CreNova | Crescent | Cricket +Crius Mea | Crony | Crosscall | Crown | Ctroniq | Cube | CUBOT +Cuiud | CVTE | Cwowdefu | CX | Cyrus | D-Link | D-Tech +Daewoo | Danew | DangcapHD | Dany | Daria | DASS | Datalogic +Datamini | Datang | Datawind | Datsun | Dazen | DbPhone | Dbtel +Dcode | DEALDIG | Dell | Denali | Denver | Desay | DeWalt +DEXP | DEYI | DF | DGTEC | DIALN | Dialog | Dicam +Digi | Digicel | DIGICOM | Digidragon | DIGIFORS | Digihome | Digiland +Digit4G | Digma | DIJITSU | DIKOM | DIMO | Dinalink | Dinax +DING DING | DIORA | DISH | Disney | Ditecma | Diva | DiverMax +Divisat | DIXON | DL | DMM | DMOAO | DNS | DoCoMo +Doffler | Dolamee | Dom.ru | Doogee | Doopro | Doov | Dopod +Doppio | DORLAND | Doro | DPA | DRAGON | Dragon Touch | Dreamgate +DreamStar | DreamTab | Droidlogic | Droxio | DSDevices | DSIC | Dtac +Dune HD | DUNNS Mobile | Durabook | Duubee | Dykemann | Dyon | E-Boda +E-Ceros | E-TACHI | E-tel | Eagle | EagleSoar | EAS Electric | Easypix EBEN | EBEST | Echo Mobiles | ecom | ECON | ECOO | ECS Edenwood | EE | EFT | EGL | EGOTEK | Einstein | EKINOX -EKO | Eks Mobility | EKT | ELARI | Elecson | Electroneum | ELECTRONIA -Elekta | Elektroland | Element | Elenberg | Elephone | Elevate | Elong Mobile -Eltex | Ematic | Emporia | ENACOM | Energizer | Energy Sistem | Engel -ENIE | Enot | eNOVA | Entity | Envizen | Ephone | Epic -Epik One | Epson | Equator | Ergo | Ericsson | Ericy | Erisson -Essential | Essentielb | eSTAR | ETOE | Eton | eTouch | Etuline -Eurocase | Eurostar | Evercoss | Everest | Everex | Everis | Evertek -Evolio | Evolveo | Evoo | EVPAD | EvroMedia | EWIS | EXCEED -Exmart | ExMobile | EXO | Explay | Express LUCK | ExtraLink | Extrem -Eyemoo | EYU | Ezio | Ezze | F&U | F+ | F150 -F2 Mobile | Facebook | Facetel | Facime | Fairphone | Famoco | Famous -Fantec | FaRao Pro | Farassoo | FarEasTone | Fengxiang | Fenoti | FEONAL -Fero | FFF SmartLife | Figgers | FiGi | FiGO | FiiO | Filimo -FILIX | FinePower | Finlux | FireFly Mobile | FISE | FITCO | Fluo -Fly | FLYCAT | FLYCOAY | FMT | FNB | FNF | Fobem -Fondi | Fonos | FOODO | FORME | Formuler | Forstar | Fortis -FortuneShip | FOSSiBOT | Four Mobile | Fourel | Foxconn | FoxxD | FPT -free | Freetel | FreeYond | Frunsi | Fuego | Fujitsu | Funai -Fusion5 | Future Mobile Technology | Fxtec | G-TiDE | G-Touch | Galactic | Galaxy Innovations -Gamma | Garmin-Asus | Gateway | Gazer | GDL | Geanee | Geant -Gear Mobile | Gemini | General Mobile | Genesis | GEOFOX | Geotel | Geotex -GEOZON | Getnord | GFive | Gfone | Ghia | Ghong | Ghost -Gigabyte | Gigaset | Gini | Ginzzu | Gionee | GIRASOLE | Globex -Globmall | Glofiish | GLONYX | Glory Star | GLX | GOCLEVER | Gocomma -GoGEN | Gol Mobile | GOLDBERG | GoldMaster | GoldStar | Goly | Gome -GoMobile | GOODTEL | Google | Goophone | Gooweel | GOtv | Gplus -Gradiente | Graetz | Grape | Great Asia | Gree | Green Lion | Green Orange -Greentel | Gresso | Gretel | GroBerwert | Grundig | Gtel | GTMEDIA -GTX | Guophone | GVC Pro | H133 | H96 | Hafury | Haier -Haipai | Haixu | Hamlet | Hammer | Handheld | HannSpree | Hanseatic -Hanson | HAOQIN | HAOVM | Hardkernel | Harper | Hartens | Hasee -Hathway | HDC | HeadWolf | HEC | Heimat | Helio | HERO -HexaByte | Hezire | Hi | Hi Nova | Hi-Level | Hiberg | HiBy -High Q | Highscreen | HiGrace | HiHi | HiKing | HiMax | HIPER -Hipstreet | Hiremco | Hisense | Hitachi | Hitech | HKC | HKPro -HLLO | HMD | HOFER | Hoffmann | HOLLEBERG | Homatics | Hometech -Homtom | Honeywell | HongTop | HONKUAHG | Hoozo | Hopeland | Horizon -Horizont | Hosin | Hot Pepper | Hotel | HOTREALS | Hotwav | How -HP | HTC | Huadoo | Huagan | Huavi | Huawei | Hugerock -Humax | Hurricane | Huskee | Hyatta | Hykker | Hyrican | Hytera -Hyundai | Hyve | i-Cherry | I-INN | i-Joy | i-mate | i-mobile -I-Plus | iBall | iBerry | ibowin | iBrit | IconBIT | iData -iDino | iDroid | iGet | iHunt | Ikea | IKI Mobile | iKoMo +EKO | Eks Mobility | EKT | ELARI | ELE-GATE | Elecson | Electroneum +ELECTRONIA | Elekta | Elektroland | Element | Elenberg | Elephone | Elevate +Elong Mobile | Eltex | Ematic | Emporia | ENACOM | Energizer | Energy Sistem +Engel | ENIE | Enot | eNOVA | Entity | Envizen | Ephone +Epic | Epik One | Epson | Equator | Ergo | Ericsson | Ericy +Erisson | Essential | Essentielb | eSTAR | ETOE | Eton | eTouch +Etuline | Eurocase | Eurostar | Evercoss | Everest | Everex | Everis +Evertek | Evolio | Evolveo | Evoo | EVPAD | EvroMedia | EWIS +EXCEED | Exmart | ExMobile | EXO | Explay | Express LUCK | ExtraLink +Extrem | Eyemoo | EYU | Ezio | Ezze | F&U | F+ +F150 | F2 Mobile | Facebook | Facetel | Facime | Fairphone | Famoco +Famous | Fantec | FaRao Pro | Farassoo | FarEasTone | Fengxiang | Fenoti +FEONAL | Fero | FFF SmartLife | Figgers | FiGi | FiGO | FiiO +Filimo | FILIX | FinePower | Finlux | FireFly Mobile | FISE | FITCO +Fluo | Fly | FLYCAT | FLYCOAY | FMT | FNB | FNF +Fobem | Fondi | Fonos | FOODO | FORME | Formuler | Forstar +Fortis | FortuneShip | FOSSiBOT | Four Mobile | Fourel | Foxconn | FoxxD +FPT | free | Freetel | FreeYond | Frunsi | Fuego | Fujitsu +Funai | Fusion5 | Future Mobile Technology | Fxtec | G-PLUS | G-TiDE | G-Touch +Galactic | Galaxy Innovations | Gamma | Garmin-Asus | Gateway | Gazer | GDL +Geanee | Geant | Gear Mobile | Gemini | General Mobile | Genesis | GEOFOX +Geotel | Geotex | GEOZON | Getnord | GFive | Gfone | Ghia +Ghong | Ghost | Gigabyte | Gigaset | Gini | Ginzzu | Gionee +GIRASOLE | Globex | Globmall | GlocalMe | Glofiish | GLONYX | Glory Star +GLX | GOCLEVER | Gocomma | GoGEN | Gol Mobile | GOLDBERG | GoldMaster +GoldStar | Goly | Gome | GoMobile | GOODTEL | Google | Goophone +Gooweel | GOtv | Gplus | Gradiente | Graetz | Grape | Great Asia +Gree | Green Lion | Green Orange | Greentel | Gresso | Gretel | GroBerwert +Grundig | Gtel | GTMEDIA | GTX | Guophone | GVC Pro | H133 +H96 | Hafury | Haier | Haipai | Haixu | Hamlet | Hammer +Handheld | HannSpree | Hanseatic | Hanson | HAOQIN | HAOVM | Hardkernel +Harper | Hartens | Hasee | Hathway | HDC | HeadWolf | HEC +Heimat | Helio | HERO | HexaByte | Hezire | Hi | Hi Nova +Hi-Level | Hiberg | HiBy | High Q | Highscreen | HiGrace | HiHi +HiKing | HiMax | HIPER | Hipstreet | Hiremco | Hisense | Hitachi +Hitech | HKC | HKPro | HLLO | HMD | HOFER | Hoffmann +HOLLEBERG | Homatics | Hometech | Homtom | Honeywell | HongTop | HONKUAHG +Hoozo | Hopeland | Horizon | Horizont | Hosin | Hot Pepper | Hotel +HOTREALS | Hotwav | How | HP | HTC | Huadoo | Huagan +Huavi | Huawei | Hugerock | Humanware | Humax | Hurricane | Huskee +Hyatta | Hykker | Hyrican | Hytera | Hyundai | Hyve | I KALL +i-Cherry | I-INN | i-Joy | i-mate | i-mobile | I-Plus | iBall +iBerry | ibowin | iBrit | IconBIT | iData | iDino | iDroid +iFIT | iGet | iHome Life | iHunt | Ikea | IKI Mobile | iKoMo iKon | iKonia | IKU Mobile | iLA | iLepo | iLife | iMan Imaq | iMars | iMI | IMO Mobile | Imose | Impression | iMuz iNavi | INCAR | Inch | Inco | iNew | Infiniton | Infinix @@ -724,37 +726,38 @@ Jio | Jivi | JKL | Jolla | Joy | JoySurf | JPay JREN | Jumper | Juniper Systems | Just5 | JVC | JXD | K-Lite K-Touch | Kaan | Kaiomy | Kalley | Kanji | Kapsys | Karbonn Kata | KATV1 | Kazam | Kazuna | KDDI | Kempler & Strauss | Kenbo -Kendo | Keneksi | KENSHI | Kenxinda | Khadas | Kiano | kidiby -Kingbox | Kingstar | Kingsun | KINGZONE | Kinstone | Kiowa | Kivi -Klipad | KN Mobile | Kocaso | Kodak | Kogan | Komu | Konka -Konrow | Koobee | Koolnee | Kooper | KOPO | Koridy | Koslam -Kraft | KREZ | KRIP | KRONO | Krüger&Matz | KT-Tech | KUBO -KuGou | Kuliao | Kult | Kumai | Kurio | KVADRA | Kvant -Kydos | Kyocera | Kyowon | Kzen | KZG | L-Max | LAIQ -Land Rover | Landvo | Lanin | Lanix | Lark | Laser | Laurus -Lava | LCT | Le Pan | Leader Phone | Leagoo | Leben | LeBest -Lectrus | Ledstar | LeEco | Leelbox | Leff | Legend | Leke -Lemco | LEMFO | Lemhoov | Lenco | Lenovo | Leotec | Lephone -Lesia | Lexand | Lexibook | LG | Liberton | Lifemaxx | Lime -Lingbo | Lingwin | Linnex | Linsar | Linsay | Listo | LNMBBS -Loewe | Logic | Logic Instrument | Logicom | Logik | LOKMAT | Loview -Lovme | LPX-G | LT Mobile | Lumigon | Lumitel | Lumus | Luna -Luxor | Lville | LW | LYF | LYOTECH LABS | M-Horse | M-Tech -M.T.T. | M3 Mobile | M4tel | MAC AUDIO | Macoox | Mafe | MAG -MAGCH | Magicsee | Magnus | Majestic | Malata | Mango | Manhattan -Mann | Manta Multimedia | Mantra | Mara | Marshal | Mascom | Massgo -Masstel | Master-G | Mastertech | Matco Tools | Matrix | Maunfeld | Maxcom -Maxfone | Maximus | Maxtron | MAXVI | Maxwell | Maxwest | MAXX -Maze | Maze Speed | MBI | MBK | MBOX | MDC Store | MDTV -meanIT | Mecer | Mecool | Mediacom | MediaTek | Medion | MEEG -MEGA VISION | Megacable | MegaFon | Meitu | Meizu | Melrose | MeMobile -Memup | MEO | MESWAO | Meta | Metz | MEU | MicroMax -Microsoft | Microtech | Mightier | Minix | Mint | Mintt | Mio -Mione | mipo | Miray | Mitchell & Brown | Mito | Mitsubishi | Mitsui -MIVO | MIWANG | MIXC | MiXzo | MLAB | MLLED | MLS -MMI | Mobell | Mobicel | MobiIoT | Mobiistar | Mobile Kingdom | Mobiola -Mobistel | MobiWire | Mobo | Mobvoi | Modecom | Mofut | Moondrop -Mosimosi | Motiv | Motorola | Movic | MOVISUN | Movitel | Moxee +Kendo | Keneksi | KENSHI | KENWOOD | Kenxinda | Khadas | Kiano +kidiby | Kingbox | Kingstar | Kingsun | KINGZONE | Kinstone | Kiowa +Kivi | Klipad | KN Mobile | Kocaso | Kodak | Kogan | Komu +Konka | Konrow | Koobee | Koolnee | Kooper | KOPO | Korax +Koridy | Koslam | Kraft | KREZ | KRIP | KRONO | Krüger&Matz +KT-Tech | KUBO | KuGou | Kuliao | Kult | Kumai | Kurio +KVADRA | Kvant | Kydos | Kyocera | Kyowon | Kzen | KZG +L-Max | LAIQ | Land Rover | Landvo | Lanin | Lanix | Lark +Laser | Laurus | Lava | LCT | Le Pan | Leader Phone | Leagoo +Leben | LeBest | Lectrus | Ledstar | LeEco | Leelbox | Leff +Legend | Leke | Lemco | LEMFO | Lemhoov | Lenco | Lenovo +Leotec | Lephone | Lesia | Lexand | Lexibook | LG | Liberton +Lifemaxx | Lime | Lingbo | Lingwin | Linnex | Linsar | Linsay +Listo | LNMBBS | Loewe | Logic | Logic Instrument | Logicom | Logik +Logitech | LOKMAT | LongTV | Loview | Lovme | LPX-G | LT Mobile +Lumigon | Lumitel | Lumus | Luna | Luxor | Lville | LW +LYF | LYOTECH LABS | M-Horse | M-KOPA | M-Tech | M.T.T. | M3 Mobile +M4tel | MAC AUDIO | Macoox | Mafe | MAG | MAGCH | Magicsee +Magnus | Majestic | Malata | Mango | Manhattan | Mann | Manta Multimedia +Mantra | Mara | Marshal | Mascom | Massgo | Masstel | Master-G +Mastertech | Matco Tools | Matrix | Maunfeld | Maxcom | Maxfone | Maximus +Maxtron | MAXVI | Maxwell | Maxwest | MAXX | Maze | Maze Speed +MBI | MBK | MBOX | MDC Store | MDTV | meanIT | Mecer +Mecool | Mediacom | MediaTek | Medion | MEEG | MEGA VISION | Megacable +MegaFon | Meitu | Meizu | Melrose | MeMobile | Memup | MEO +MESWAO | Meta | Metz | MEU | MicroMax | Microsoft | Microtech +Mightier | Minix | Mint | Mintt | Mio | Mione | mipo +Miray | Mitchell & Brown | Mito | Mitsubishi | Mitsui | MIVO | MIWANG +MIXC | MiXzo | MLAB | MLLED | MLS | MMI | Mobell +Mobicel | MobiIoT | Mobiistar | Mobile Kingdom | Mobiola | Mobistel | MobiWire +Mobo | Mobvoi | Mode Mobile | Modecom | Mofut | Moondrop | Mosimosi +Motiv | Motorola | Motorola Solutions | Movic | MOVISUN | Movitel | Moxee mPhone | Mpman | MSI | MStar | MTC | MTN | Multilaser MultiPOS | MwalimuPlus | MYFON | MyGica | MygPad | Mymaga | MyMobile MyPhone (PH) | myPhone (PL) | Myria | Myros | Mystery | MyTab | MyWigo @@ -768,119 +771,120 @@ NEXT | Next & NextStar | Nextbit | NextBook | NextTab | NG Optics | NGM NGpon | Nikon | NINETEC | NINETOLOGY | Nintendo | nJoy | NOA Noain | Nobby | Noblex | NOBUX | noDROPOUT | NOGA | Nokia Nomi | Nomu | Noontec | Nordfrost | Nordmende | NORMANDE | NorthTech -Nos | Nothing Phone | Nous | Novacom | Novex | Novey | NoviSea +Nos | Nothing | Nous | Novacom | Novex | Novey | NoviSea NOVO | NTT West | NuAns | Nubia | NUU Mobile | NuVision | Nuvo Nvidia | NYX Mobile | O+ | O2 | Oale | Oangcc | OASYS Obabox | Ober | Obi | OCEANIC | Odotpad | Odys | Oilsky -OINOM | Ok | Okapia | Oking | OKSI | OKWU | Olax -Olkya | Ollee | OLTO | Olympia | OMIX | Onda | OneClick -OneLern | OnePlus | Onida | Onix | Onkyo | ONN | ONVO -ONYX BOOX | Ookee | Ooredoo | OpelMobile | Openbox | Ophone | OPPO -Opsson | Optoma | Orange | Orange Pi | Orava | Orbic | Orbita -Orbsmart | Ordissimo | Orion | OSCAL | OTTO | OUJIA | Ouki -Oukitel | OUYA | Overmax | Ovvi | öwn | Owwo | OX TAB -OYSIN | Oysters | Oyyu | OzoneHD | P-UP | Pacific Research Alliance | Packard Bell -Padpro | PAGRAER | Paladin | Palm | Panacom | Panasonic | Panavox -Pano | Panodic | Panoramic | Pantech | PAPYRE | Parrot Mobile | Partner Mobile -PC Smart | PCBOX | PCD | PCD Argentina | PEAQ | Pelitt | Pendoo -Penta | Pentagram | Perfeo | Phicomm | Philco | Philips | Phonemax -phoneOne | Pico | PINE | Pioneer | Pioneer Computers | PiPO | PIRANHA -Pixela | Pixelphone | PIXPRO | Pixus | Planet Computers | Platoon | Play Now -Ployer | Plum | PlusStyle | Pluzz | PocketBook | POCO | Point Mobile -Point of View | Polar | PolarLine | Polaroid | Polestar | PolyPad | Polytron -Pomp | Poppox | POPTEL | Porsche | Portfolio | Positivo | Positivo BGH -PPTV | Premier | Premio | Prestigio | PRIME | Primepad | Primux -Pritom | Prixton | PROFiLO | Proline | Prology | ProScan | PROSONIC -Protruly | ProVision | PULID | Punos | Purism | PVBox | Q-Box -Q-Touch | Q.Bell | QFX | Qilive | QIN | QLink | QMobile -Qnet Mobile | QTECH | Qtek | Quantum | Quatro | Qubo | Quechua -Quest | Quipus | Qumo | Qware | QWATT | R-TV | Rakuten -Ramos | Raspberry | Ravoz | Raylandz | Razer | RCA Tablets | Reach -Readboy | Realme | RED | Redbean | Redfox | RedLine | Redway -Reeder | REGAL | RelNAT | Relndoo | Remdun | Renova | rephone -Retroid Pocket | Revo | Revomovil | Rhino | Ricoh | Rikomagic | RIM -Ringing Bells | Rinno | Ritmix | Ritzviva | Riviera | Rivo | Rizzen -ROADMAX | Roadrover | Roam Cat | ROCH | Rocket | ROiK | Rokit -Roku | Rombica | Ross&Moor | Rover | RoverPad | Royole | RoyQueen -RT Project | RTK | RugGear | RuggeTech | Ruggex | Ruio | Runbo -Rupa | Ryte | S-Color | S-TELL | S2Tel | Saba | Safaricom -Sagem | Sagemcom | Saiet | SAILF | Salora | Samsung | Samtech -Samtron | Sanei | Sankey | Sansui | Santin | SANY | Sanyo -Savio | Sber | SCBC | Schneider | Schok | Scoole | Scosmos -Seatel | SEBBE | Seeken | SEEWO | SEG | Sega | SEHMAX -Selecline | Selenga | Selevision | Selfix | SEMP TCL | Sencor | Sendo -Senkatel | SENNA | Senseit | Senwa | SERVO | Seuic | Sewoo -SFR | SGIN | Shanling | Sharp | Shift Phones | Shivaki | Shtrikh-M -Shuttle | Sico | Siemens | Sigma | Silelis | Silent Circle | Silva Schneider -Simbans | simfer | Simply | Singtech | Siragon | Sirin Labs | Siswoo -SK Broadband | SKG | SKK Mobile | Sky | Skyline | SkyStream | Skytech -Skyworth | Smadl | Smailo | Smart | Smart Electronic | Smart Kassel | Smartab -SmartBook | SMARTEC | Smartex | Smartfren | Smartisan | Smarty | Smooth Mobile -Smotreshka | SMT Telecom | SMUX | SNAMI | SobieTech | Soda | Softbank -Soho Style | Solas | SOLE | SOLO | Solone | Sonim | SONOS -Sony | Sony Ericsson | SOSH | SoulLink | Soundmax | Soyes | Spark -Sparx | SPC | Spectralink | Spectrum | Spice | Sprint | SPURT -SQOOL | SSKY | Star | Starlight | Starmobile | Starway | Starwind -STF Mobile | STG Telecom | STK | Stonex | Storex | StrawBerry | Stream -STRONG | Stylo | Subor | Sugar | Sumvision | Sunmax | Sunmi -Sunny | Sunstech | SunVan | Sunvell | SUNWIND | Super General | SuperBOX -SuperSonic | SuperTab | Supra | Supraim | Surfans | Surge | Suzuki -Sveon | Swipe | SWISSMOBILITY | Swisstone | Switel | SWOFY | Syco -SYH | Sylvania | Symphony | Syrox | System76 | T-Mobile | T96 -TADAAM | TAG Tech | Taiga System | Takara | Talius | Tambo | Tanix -TAUBE | TB Touch | TCL | TD Systems | TD Tech | TeachTouch | Technicolor -Technika | TechniSat | Technopc | TECHNOSAT | TechnoTrend | TechPad | TechSmart -Techstorm | Techwood | Teclast | Tecno Mobile | TecToy | TEENO | Teknosa -Tele2 | Telefunken | Telego | Telenor | Telia | Telit | Telkom -Telly | Telma | TeloSystems | Telpo | TENPLUS | Teracube | Tesco -Tesla | TETC | Tetratab | teXet | ThL | Thomson | Thuraya -TIANYU | Tibuta | Tigers | Time2 | Timovi | TIMvision | Tinai -Tinmo | TiPhone | Tivax | TiVo | TJC | TJD | TOKYO -Tolino | Tone | TOOGO | Tooky | Top House | TopDevice | TOPDON -Topelotek | Toplux | TOPSHOWS | Topsion | Topway | Torex | Torque -TOSCIDO | Toshiba | Touch Plus | Touchmate | TOX | TPS | Transpeed -TrekStor | Trevi | TriaPlay | Trident | Trifone | Trio | Tronsmart -True | True Slim | Tsinghua Tongfang | TTEC | TTfone | TTK-TV | TuCEL -Tunisie Telecom | Turbo | Turbo-X | TurboKids | TurboPad | Türk Telekom | Turkcell -Tuvio | TVC | TwinMOS | TWM | Twoe | TWZ | TYD -Tymes | U-Magic | U.S. Cellular | UD | UE | UGINE | Ugoos -Uhans | Uhappy | Ulefone | Umax | UMIDIGI | Unblock Tech | Uniden -Unihertz | Unimax | Uniqcell | Uniscope | Unistrong | Unitech | United Group -UNIWA | Unknown | Unnecto | Unnion Technologies | UNNO | Unonu | Unowhy -UOOGOU | Urovo | UTime | UTOK | UTStarcom | UZ Mobile | V-Gen -V-HOME | V-HOPE | v-mobile | VAIO | VALE | VALEM | VALTECH -VANGUARD | Vankyo | VANWIN | Vargo | Vastking | VAVA | VC -VDVD | Vega | Vekta | Venso | Venstar | Venturer | VEON -Verico | Verizon | Vernee | Verssed | Versus | Vertex | Vertu -Verykool | Vesta | Vestel | VETAS | Vexia | VGO TEL | ViBox -Victurio | VIDA | Videocon | Videoweb | ViewSonic | VIIPOO | VIKUSHA -VILLAON | VIMOQ | Vinabox | Vinga | Vinsoc | Vios | Viper -Vipro | Virzo | Vision Technology | Vision Touch | Visual Land | Vitelcom | Vityaz -Viumee | Vivax | VIVIBright | VIVIMAGE | Vivo | VIWA | Vizio -Vizmo | VK Mobile | VKworld | VNPT Technology | VOCAL | Vodacom | Vodafone -VOGA | Völfen | VOLIA | VOLKANO | Volla | Volt | Vonino -Vontar | Vorago | Vorcom | Vorke | Vormor | Vortex | Voto -VOX | Voxtel | Voyo | Vsmart | Vsun | VUCATIMES | Vue Micro -Vulcan | VVETIME | W&O | WAF | Wainyok | Walker | Walton -Waltter | Wanmukang | WANSA | WE | We. by Loewe. | Web TV | Webfleet -WeChip | Wecool | Weelikeit | Weiimi | Weimei | WellcoM | WELLINGTON -Western Digital | Westpoint | Wexler | White Mobile | Whoop | Wieppo | Wigor -Wiko | Wileyfox | Winds | Wink | Winmax | Winnovo | Winstar -Wintouch | Wiseasy | WIWA | WizarPos | Wizz | Wolder | Wolfgang -Wolki | WONDER | Wonu | Woo | Wortmann | Woxter | WOZIFAN -WS | X-AGE | X-BO | X-Mobile | X-TIGI | X-View | X.Vision -X88 | X96 | X96Q | Xcell | XCOM | Xcruiser | XElectron -XGEM | XGIMI | Xgody | Xiaodu | Xiaolajiao | Xiaomi | Xion -Xolo | Xoro | XREAL | Xshitou | Xsmart | Xtouch | Xtratech -Xwave | XY Auto | Yandex | Yarvik | YASIN | YELLYOUTH | YEPEN -Yes | Yestel | Yezz | Yoka TV | Yooz | Yota | YOTOPT -Youin | Youwei | Ytone | Yu | YU Fly | Yuandao | YUHO -YUMKEM | YUNDOO | Yuno | YunSong | Yusun | Yxtel | Z-Kai -Zaith | Zamolxe | Zatec | Zealot | Zeblaze | Zebra | Zeeker -Zeemi | Zen | Zenek | Zentality | Zfiner | ZH&K | Zidoo -ZIFRO | Zigo | ZIK | Zinox | Ziox | Zonda | Zonko -Zoom | ZoomSmart | Zopo | ZTE | Zuum | Zync | ZYQ -Zyrex | ZZB +OINOM | Ok | Okapi | Okapia | Oking | OKSI | OKWU +Olax | Olkya | Ollee | OLTO | Olympia | OMIX | Onda +OneClick | OneLern | OnePlus | Onida | Onix | Onkyo | ONN +ONVO | ONYX BOOX | Ookee | Ooredoo | OpelMobile | Openbox | Ophone +OPPO | Opsson | Optoma | Orange | Orange Pi | Orava | Orbic +Orbita | Orbsmart | Ordissimo | Orion | OSCAL | OTTO | OUJIA +Ouki | Oukitel | OUYA | Overmax | Ovvi | öwn | Owwo +OX TAB | OYSIN | Oysters | Oyyu | OzoneHD | P-UP | Pacific Research Alliance +Packard Bell | Padpro | PAGRAER | Paladin | Palm | Panacom | Panasonic +Panavox | Pano | Panodic | Panoramic | Pantech | PAPYRE | Parrot Mobile +Partner Mobile | PC Smart | PCBOX | PCD | PCD Argentina | PEAQ | Pelitt +Pendoo | Penta | Pentagram | Perfeo | Phicomm | Philco | Philips +Phonemax | phoneOne | Pico | PINE | Pioneer | Pioneer Computers | PiPO +PIRANHA | Pixela | Pixelphone | PIXPRO | Pixus | Planet Computers | Platoon +Play Now | Ployer | Plum | PlusStyle | Pluzz | PocketBook | POCO +Point Mobile | Point of View | Polar | PolarLine | Polaroid | Polestar | PolyPad +Polytron | Pomp | Poppox | POPTEL | Porsche | Portfolio | Positivo +Positivo BGH | PPTV | Premier | Premio | Prestigio | PRIME | Primepad +Primux | Pritom | Prixton | PROFiLO | Proline | Prology | ProScan +PROSONIC | Protruly | ProVision | PULID | Punos | Purism | PVBox +Q-Box | Q-Touch | Q.Bell | QFX | Qilive | QIN | QLink +QMobile | Qnet Mobile | QTECH | Qtek | Quantum | Quatro | Qubo +Quechua | Quest | Quipus | Qumo | Qware | QWATT | R-TV +Rakuten | Ramos | Raspberry | Ravoz | Raylandz | Razer | RCA Tablets +RCT | Reach | Readboy | Realix | Realme | RED | Redbean +Redfox | RedLine | Redway | Reeder | REGAL | RelNAT | Relndoo +Remdun | Renova | rephone | Retroid Pocket | Revo | Revomovil | Rhino +Ricoh | Rikomagic | RIM | Ringing Bells | Rinno | Ritmix | Ritzviva +Riviera | Rivo | Rizzen | ROADMAX | Roadrover | Roam Cat | ROCH +Rocket | ROiK | Rokit | Roku | Rombica | Ross&Moor | Rover +RoverPad | Royole | RoyQueen | RT Project | RTK | RugGear | RuggeTech +Ruggex | Ruio | Runbo | Rupa | Ryte | S-Color | S-TELL +S2Tel | Saba | Safaricom | Sagem | Sagemcom | Saiet | SAILF +Salora | Samsung | Samtech | Samtron | Sanei | Sankey | Sansui +Santin | SANY | Sanyo | Savio | Sber | SCBC | Schneider +Schok | Scoole | Scosmos | Seatel | SEBBE | Seeken | SEEWO +SEG | Sega | SEHMAX | Selecline | Selenga | Selevision | Selfix +SEMP TCL | Sencor | Sendo | Senkatel | SENNA | Senseit | Senwa +SERVO | Seuic | Sewoo | SFR | SGIN | Shanling | Sharp +Shift Phones | Shivaki | Shtrikh-M | Shuttle | Sico | Siemens | Sigma +Silelis | Silent Circle | Silva Schneider | Simbans | simfer | Simply | Singtech +Siragon | Sirin Labs | Siswoo | SK Broadband | SKG | SKK Mobile | Sky +Skyline | SkyStream | Skytech | Skyworth | Smadl | Smailo | Smart +Smart Electronic | Smart Kassel | Smartab | SmartBook | SMARTEC | Smartex | Smartfren +Smartisan | Smarty | Smooth Mobile | Smotreshka | SMT Telecom | SMUX | SNAMI +SobieTech | Soda | Softbank | Soho Style | Solas | SOLE | SOLO +Solone | Sonim | SONOS | Sony | Sony Ericsson | SOSH | SoulLink +Soundmax | Soyes | Spark | Sparx | SPC | Spectralink | Spectrum +Spice | Sprint | SPURT | SQOOL | SSKY | Star | Starlight +Starmobile | Starway | Starwind | STF Mobile | STG Telecom | STK | Stonex +Storex | StrawBerry | Stream | STRONG | Stylo | Subor | Sugar +Sumvision | Sunmax | Sunmi | Sunny | Sunstech | SunVan | Sunvell +SUNWIND | Super General | SuperBOX | SuperSonic | SuperTab | Supra | Supraim +Surfans | Surge | Suzuki | Sveon | Swipe | SWISSMOBILITY | Swisstone +Switel | SWOFY | Syco | SYH | Sylvania | Symphony | Syrox +System76 | T-Mobile | T96 | TADAAM | TAG Tech | Taiga System | Takara +Talius | Tambo | Tanix | TAUBE | TB Touch | TCL | TD Systems +TD Tech | TeachTouch | Technicolor | Technika | TechniSat | Technopc | TECHNOSAT +TechnoTrend | TechPad | TechSmart | Techstorm | Techwood | Teclast | Tecno Mobile +TecToy | TEENO | Teknosa | Tele2 | Telefunken | Telego | Telenor +Telia | Telit | Telkom | Telly | Telma | TeloSystems | Telpo +TENPLUS | Teracube | Tesco | Tesla | TETC | Tetratab | teXet +ThL | Thomson | Thuraya | TIANYU | Tibuta | Tigers | Time2 +Timovi | TIMvision | Tinai | Tinmo | TiPhone | Tivax | TiVo +TJC | TJD | TOKYO | Tolino | Tone | TOOGO | Tooky +Top House | TopDevice | TOPDON | Topelotek | Toplux | TOPSHOWS | Topsion +Topway | Torex | Torque | TOSCIDO | Toshiba | Touch Plus | Touchmate +TOX | TPS | Transpeed | TrekStor | Trevi | TriaPlay | Trident +Trifone | Trimble | Trio | Tronsmart | True | True Slim | Tsinghua Tongfang +TTEC | TTfone | TTK-TV | TuCEL | Tunisie Telecom | Turbo | Turbo-X +TurboKids | TurboPad | Türk Telekom | Turkcell | Tuvio | TVC | TwinMOS +TWM | Twoe | TWZ | TYD | Tymes | U-Magic | U.S. Cellular +UD | UE | UGINE | Ugoos | Uhans | Uhappy | Ulefone +Umax | UMIDIGI | Unblock Tech | Uniden | Unihertz | Unimax | Uniqcell +Uniscope | Unistrong | Unitech | United Group | UNIWA | Unknown | Unnecto +Unnion Technologies | UNNO | Unonu | Unowhy | UOOGOU | Urovo | UTime +UTOK | UTStarcom | UZ Mobile | V-Gen | V-HOME | V-HOPE | v-mobile +VAIO | VALE | VALEM | VALTECH | VANGUARD | Vankyo | VANWIN +Vargo | Vastking | VAVA | VC | VDVD | Vega | Veidoo +Vekta | Venso | Venstar | Venturer | VEON | Verico | Verizon +Vernee | Verssed | Versus | Vertex | Vertu | Verykool | Vesta +Vestel | VETAS | Vexia | VGO TEL | ViBox | Victurio | VIDA +Videocon | Videoweb | ViewSonic | VIIPOO | VIKUSHA | VILLAON | VIMOQ +Vinabox | Vinga | Vinsoc | Vios | Viper | Vipro | Virzo +Vision Technology | Vision Touch | Visual Land | Vitelcom | Vityaz | Viumee | Vivax +VIVIBright | VIVIMAGE | Vivo | VIWA | Vizio | Vizmo | VK Mobile +VKworld | VNPT Technology | VOCAL | Vodacom | Vodafone | VOGA | Völfen +VOLIA | VOLKANO | Volla | Volt | Vonino | Vontar | Vorago +Vorcom | Vorke | Vormor | Vortex | Voto | VOX | Voxtel +Voyo | Vsmart | Vsun | VUCATIMES | Vue Micro | Vulcan | VVETIME +W&O | WAF | Wainyok | Walker | Walton | Waltter | Wanmukang +WANSA | WE | We. by Loewe. | Web TV | Webfleet | WeChip | Wecool +Weelikeit | Weiimi | Weimei | WellcoM | WELLINGTON | Western Digital | Westpoint +Wexler | White Mobile | Whoop | Wieppo | Wigor | Wiko | Wileyfox +Winds | Wink | Winmax | Winnovo | Winstar | Wintouch | Wiseasy +WIWA | WizarPos | Wizz | Wolder | Wolfgang | Wolki | WONDER +Wonu | Woo | Wortmann | Woxter | WOZIFAN | WS | X-AGE +X-BO | X-Mobile | X-TIGI | X-View | X.Vision | X88 | X96 +X96Q | Xcell | XCOM | Xcruiser | XElectron | XGEM | XGIMI +Xgody | Xiaodu | Xiaolajiao | Xiaomi | Xion | Xolo | Xoro +XPPen | XREAL | Xshitou | Xsmart | Xtouch | Xtratech | Xwave +XY Auto | Yandex | Yarvik | YASIN | YELLYOUTH | YEPEN | Yes +Yestel | Yezz | Yoka TV | Yooz | Yota | YOTOPT | Youin +Youwei | Ytone | Yu | YU Fly | Yuandao | YUHO | YUMKEM +YUNDOO | Yuno | YunSong | Yusun | Yxtel | Z-Kai | Zaith +Zamolxe | Zatec | Zealot | Zeblaze | Zebra | Zeeker | Zeemi +Zen | Zenek | Zentality | Zfiner | ZH&K | Zidoo | ZIFRO +Zigo | ZIK | Zinox | Ziox | Zonda | Zonko | Zoom +ZoomSmart | Zopo | ZTE | Zuum | Zync | ZYQ | Zyrex +ZZB
@@ -911,7 +915,7 @@ Zyrex | ZZB -##### Support detect browsers list (670): +##### Support detect browsers list (673):
Show details @@ -984,36 +988,37 @@ Pale Moon | Palm Blazer | Palm Pre | Palm WebPro | Palmscape | Pawxy | Peach Bro Peeps dBrowser | Perfect Browser | Perk | Phantom Browser | Phantom.me | Phoenix | Phoenix Browser Photon | Pi Browser | PICO Browser | Pintar Browser | PirateBrowser | PlayFree Browser | Pluma PocketBook Browser | Polaris | Polarity | PolyBrowser | Polypane | Presearch | Prism -Privacy Browser | Privacy Explorer Fast Safe | PrivacyWall | Private Internet Browser | PronHub Browser | Proxy Browser | ProxyFox -Proxyium | ProxyMax | Proxynet | PSI Secure Browser | Puffin | Puffin Web Browser | Pure Lite Browser -Pure Mini Browser | Qazweb | Qiyu | QJY TV Browser | Qmamu | QQ Browser | QQ Browser Lite -QQ Browser Mini | QtWeb | QtWebEngine | Quark | Quick Browser | Quick Search TV | QupZilla -Qutebrowser | Qwant Mobile | Rabbit Private Browser | Raise Fast Browser | Rakuten Browser | Rakuten Web Search | Raspbian Chromium -RCA Tor Explorer | Realme Browser | Rekonq | Reqwireless WebViewer | Roccat | RockMelt | Roku Browser -Safari | Safari Technology Preview | Safe Exam Browser | Sailfish Browser | SalamWeb | Samsung Browser | Samsung Browser Lite -Savannah Browser | SavySoda | SberBrowser | Secure Browser | Secure Private Browser | SecureX | Seewo Browser -SEMC-Browser | Seraphic Sraf | Seznam Browser | SFive | Sharkee Browser | Shiira | Sidekick -SilverMob US | SimpleBrowser | SiteKiosk | Sizzy | Skye | Skyfire | SkyLeap -Sleipnir | SlimBoat | Slimjet | Smart Browser | Smart Lenovo Browser | Smart Search & Web Browser | Smooz -Snowshoe | Sogou Explorer | Sogou Mobile Browser | Sony Small Browser | SOTI Surf | Soul Browser | Soundy Browser -SP Browser | Spark | Spectre Browser | Splash | Sputnik Browser | Stampy Browser | Stargon -START Internet Browser | Stealth Browser | Steam In-Game Overlay | Streamy | Sunflower Browser | Sunrise | Super Fast Browser -SuperBird | SuperFast Browser | surf | Surf Browser | Surfy Browser | Sushi Browser | Sweet Browser -Swiftfox | Swiftweasel | SX Browser | T-Browser | t-online.de Browser | T+Browser | TalkTo -Tao Browser | tararia | TenFourFox | Tenta Browser | Tesla Browser | Thor | Tint Browser -Tizen Browser | ToGate | Tor Browser | Total Browser | TQ Browser | TrueLocation Browser | TUC Mini Browser -Tungsten | TUSK | TV Bro | TV-Browser Internet | TweakStyle | U Browser | UBrowser -UC Browser | UC Browser HD | UC Browser Mini | UC Browser Turbo | Ui Browser Mini | Ume Browser | UPhone Browser -UR Browser | Uzbl | Vast Browser | vBrowser | VD Browser | Veera | Vegas Browser -Venus Browser | Vertex Surf | Vewd Browser | Via | Viasat Browser | VibeMate | Vision Mobile Browser -Vivaldi | Vivid Browser Mini | vivo Browser | VMS Mosaic | VMware AirWatch | Vonkeror | Vuhuv -w3m | Waterfox | Wave Browser | Wavebox | Wear Internet Browser | Web Browser & Explorer | Web Explorer -WebDiscover | Webian Shell | WebPositive | Weltweitimnetz Browser | WeTab Browser | Wexond | Whale Browser -Wolvic | World Browser | wOSBrowser | Wukong Browser | Wyzo | X Browser Lite | X-VPN -xBrowser | XBrowser Mini | xBrowser Pro Super Fast | Xiino | XnBrowse | XNX Browser | Xooloo Internet -xStand | XtremeCast | Xvast | Yaani Browser | YAGI | Yahoo! Japan Browser | Yandex Browser -Yandex Browser Corp | Yandex Browser Lite | Yo Browser | Yolo Browser | YouBrowser | YouCare | Yuzu Browser -Zetakey | Zirco Browser | Zordo Browser | ZTE Browser | Zvu +Privacy Browser | Privacy Explorer Fast Safe | Privacy Pioneer Browser | PrivacyWall | Private Internet Browser | PronHub Browser | Proxy Browser +ProxyFox | Proxyium | ProxyMax | Proxynet | PSI Secure Browser | Puffin Cloud Browser | Puffin Incognito Browser +Puffin Secure Browser | Puffin Web Browser | Pure Lite Browser | Pure Mini Browser | Qazweb | Qiyu | QJY TV Browser +Qmamu | QQ Browser | QQ Browser Lite | QQ Browser Mini | QtWeb | QtWebEngine | Quark +Quick Browser | Quick Search TV | QupZilla | Qutebrowser | Qwant Mobile | Rabbit Private Browser | Raise Fast Browser +Rakuten Browser | Rakuten Web Search | Raspbian Chromium | RCA Tor Explorer | Realme Browser | Rekonq | Reqwireless WebViewer +Roccat | RockMelt | Roku Browser | Safari | Safari Technology Preview | Safe Exam Browser | Sailfish Browser +SalamWeb | Samsung Browser | Samsung Browser Lite | Savannah Browser | SavySoda | SberBrowser | Secure Browser +Secure Private Browser | SecureX | Seewo Browser | SEMC-Browser | Seraphic Sraf | Seznam Browser | SFive +Sharkee Browser | Shiira | Sidekick | SilverMob US | SimpleBrowser | SiteKiosk | Sizzy +Skye | Skyfire | SkyLeap | Sleipnir | SlimBoat | Slimjet | Smart Browser +Smart Lenovo Browser | Smart Search & Web Browser | Smooz | Snowshoe | Sogou Explorer | Sogou Mobile Browser | Sony Small Browser +SOTI Surf | Soul Browser | Soundy Browser | SP Browser | Spark | Spectre Browser | Splash +Sputnik Browser | Stampy Browser | Stargon | START Internet Browser | Stealth Browser | Steam In-Game Overlay | Streamy +Sunflower Browser | Sunrise | Super Fast Browser | SuperBird | SuperFast Browser | surf | Surf Browser +Surfy Browser | Sushi Browser | Sweet Browser | Swiftfox | Swiftweasel | SX Browser | T-Browser +t-online.de Browser | T+Browser | TalkTo | Tao Browser | tararia | TenFourFox | Tenta Browser +Tesla Browser | Thor | Tint Browser | Tizen Browser | ToGate | Tor Browser | Total Browser +TQ Browser | TrueLocation Browser | TUC Mini Browser | Tungsten | TUSK | TV Bro | TV-Browser Internet +TweakStyle | U Browser | UBrowser | UC Browser | UC Browser HD | UC Browser Mini | UC Browser Turbo +Ui Browser Mini | Ume Browser | UPhone Browser | UR Browser | Uzbl | Vast Browser | vBrowser +VD Browser | Veera | Vegas Browser | Venus Browser | Vertex Surf | Vewd Browser | Via +Viasat Browser | VibeMate | Vision Mobile Browser | Vivaldi | Vivid Browser Mini | vivo Browser | VMS Mosaic +VMware AirWatch | Vonkeror | Vuhuv | w3m | Waterfox | Wave Browser | Wavebox +Wear Internet Browser | Web Browser & Explorer | Web Explorer | WebDiscover | Webian Shell | WebPositive | Weltweitimnetz Browser +WeTab Browser | Wexond | Whale Browser | Wolvic | World Browser | wOSBrowser | Wukong Browser +Wyzo | X Browser Lite | X-VPN | xBrowser | XBrowser Mini | xBrowser Pro Super Fast | Xiino +XnBrowse | XNX Browser | Xooloo Internet | xStand | XtremeCast | Xvast | Yaani Browser +YAGI | Yahoo! Japan Browser | Yandex Browser | Yandex Browser Corp | Yandex Browser Lite | Yo Browser | Yolo Browser +YouBrowser | YouCare | Yuzu Browser | Zetakey | Zirco Browser | Zordo Browser | ZTE Browser +Zvu
diff --git a/client-hints.d.ts b/client-hints.d.ts index bad2671c..a00b852c 100644 --- a/client-hints.d.ts +++ b/client-hints.d.ts @@ -37,6 +37,7 @@ export interface ResultDevicePropClientHints { export interface ResultClientHints { upgradeHeader: boolean; + formFactors?: string[]; meta?: ResultMetaClientHints; prefers?: ResultPrefersClientHints; os: ResultOsPropClientHints; diff --git a/client-hints.js b/client-hints.js index 5079ecbb..8cde11aa 100644 --- a/client-hints.js +++ b/client-hints.js @@ -46,6 +46,7 @@ const CH_UA_FORM_FACTORS = 'sec-ch-ua-form-factors'; 'sec-ch-ua-platform-version', 'sec-ch-viewport-height', 'sec-ch-viewport-width', + 'sec-ch-ua-from-factors', 'sec-ch-width', 'ua', 'ua-arch', @@ -107,48 +108,48 @@ class ClientHints { * @param {ResultClientHints|JSONObject} result * @private */ - __parseHints(hints, result) { + #parseHints(hints, result) { for (let key in hints) { let value = hints[key]; - let lowerCaseKey = key.toLowerCase().replace('_', '-'); + const lowerCaseKey = key.toLowerCase().replace('_', '-'); switch (lowerCaseKey) { case 'http-sec-ch-ua-arch': case 'sec-ch-ua-arch': case 'arch': case 'architecture': - result.os.platform = helper.trimChars(value, '"'); + result.os.platform = this.#trim(value); break; case 'http-sec-ch-ua-bitness': case 'sec-ch-ua-bitness': case 'bitness': - result.os.bitness = helper.trimChars(value, '"'); + result.os.bitness = this.#trim(value); break; case 'http-sec-ch-ua-mobile': case 'sec-ch-ua-mobile': case 'mobile': - result.isMobile = true === value || '1' === value || '?1' === value; + result.isMobile = this.#bool(value); break; case 'http-sec-ch-ua-model': case 'sec-ch-ua-model': case 'model': - result.device.model = helper.trimChars(value, '"'); + result.device.model = this.#trim(value); break; case 'http-sec-ch-ua-full-version': case 'sec-ch-ua-full-version': case 'uafullversion': result.upgradeHeader = true; - result.client.version = helper.trimChars(value, '"'); + result.client.version = this.#trim(value); break; case 'http-sec-ch-ua-platform': case 'sec-ch-ua-platform': case 'platform': - result.os.name = helper.trimChars(value, '"'); + result.os.name = this.#trim(value); break; case 'http-sec-ch-ua-platform-version': case 'sec-ch-ua-platform-version': case 'platformversion': - result.os.version = helper.trimChars(value, '"'); + result.os.version = this.#trim(value); break; case 'brands': if (result.client.brands.length > 0) { @@ -168,48 +169,88 @@ class ClientHints { // eslint-disable-next-line no-fallthrough case 'http-sec-ch-ua-full-version-list': case 'sec-ch-ua-full-version-list': - let pattern = new RegExp('"([^"]+)"; ?v="([^"]+)"(?:, )?', 'gi'); - let items = []; - let matches = null; - while (matches = pattern.exec(value)) { - let brand = matches[1]; - let skip = brand.indexOf('Not;A') !== -1 || brand.indexOf('Not A;') !== -1 || brand.indexOf('Not.A') !== -1; - if (skip) { - continue; - } - items.push({ brand, version: helper.trimChars(matches[2], '"') }); - } + const items = this.#parseFullVersionList(value); if (items.length > 0) { result.client.brands = items; } break; case 'x-requested-with': case 'http-x-requested-with': - result.app = value; - if (value.toLowerCase() === 'xmlhttprequest') { - result.app = ''; - } + result.app = this.#parseApp(value) break; case 'formfactors': - result.formFactors = value.map(val => val.toLowerCase()); - break; case 'http-sec-ch-ua-form-factors': case 'sec-ch-ua-form-factors': - let matchFactors = /"([a-z]+)"/i.exec(value.toLowerCase()); - if (matchFactors && matchFactors[1]) { - result.formFactors = matchFactors[1]; - } + result.formFactors = this.#parseFormFactor(value); break; } } } + /** + * @param {boolean|string} value + * @return {boolean} + */ + #bool(value) { + return true === value || '1' === value || '?1' === value; + } + + /** + * @param {string} value + * @return {string} + */ + #trim(value) { + return helper.trimChars(value, '"'); + } + + /** + * @param {string} value + * @return {string} + */ + #parseApp(value) { + return value.toLowerCase() === 'xmlhttprequest' ? '' : value; + } + + /** + * @param {string} value + * @return {[]} + */ + #parseFullVersionList(value) { + const skipBrands = ['Not;A', 'Not A;', 'Not.A']; + const pattern = new RegExp('"([^"]+)"; ?v="([^"]+)"(?:, )?', 'gi'); + const items = []; + + let matches = null; + while ((matches = pattern.exec(value)) !== null) { + const brand = matches[1]; + if (skipBrands.some(item => brand.includes(item))) { + continue; + } + items.push({ brand, version: helper.trimChars(matches[2], '"') }); + } + return items; + } + /** + * @param {string|string[]} value + * @return {string[]} + */ + #parseFormFactor(value) { + if (Array.isArray(value)) { + return value.map(val => val.toLowerCase()); + } + + const matches = value.toLowerCase().match(/"([a-z]+)"/gi); + return matches!== null ? matches.map(formFactor => { + return helper.trimChars(formFactor, '"') + }): []; + } + /** * @param {JSONObject|{}} meta * @param {ResultClientHints} result * @private */ - __parseMeta(meta, result) { + #parseMeta(meta, result) { for (let key in meta) { let value = meta[key]; let lowerCaseKey = key.toLowerCase(); @@ -242,7 +283,7 @@ class ClientHints { * @return {ResultClientHints|JSONObject|{}} * @private */ - __blank() { + #blank() { return { upgradeHeader: false, isMobile: false, @@ -269,9 +310,9 @@ class ClientHints { * @return {ResultClientHints} */ parse(hints, meta = {}) { - let result = this.__blank() - this.__parseHints(hints, result); - this.__parseMeta(meta, result); + let result = this.#blank() + this.#parseHints(hints, result); + this.#parseMeta(meta, result); return result; } diff --git a/index.js b/index.js index cb07526c..b0d09bb9 100755 --- a/index.js +++ b/index.js @@ -1,5 +1,5 @@ const helper = require('./parser/helper'); -const {attr} = helper; +const { attr } = helper; // device parsers const MobileParser = require('./parser/device/mobile'); @@ -40,6 +40,7 @@ const APPLE_OS_LIST = require('./parser/const/apple-os'); const DESKTOP_OS_LIST = require('./parser/const/desktop-os'); const DEVICE_PARSER_LIST = require('./parser/const/device-parser'); const CLIENT_PARSER_LIST = require('./parser/const/client-parser'); +const FORM_FACTORS_MAPPING = require('./parser/const/form-factor-mapping'); const MOBILE_BROWSER_LIST = require('./parser/client/browser-short-mobile'); const { hasUserAgentClientHintsFragment, hasDeviceModelByClientHints } = require('./parser/helper'); const VENDOR_FRAGMENT_PARSER = 'VendorFragment'; @@ -490,6 +491,23 @@ class DeviceDetector { let clientFamily = attr(clientData, 'family', ''); let deviceType = attr(deviceData, 'type', ''); + + // client hint detect device type + if ( + deviceType === '' && + clientHints && + clientHints.device && + clientHints.device.model && + clientHints.formFactors.length + ) { + for(const [type, deviceTypeName] of Object.entries(FORM_FACTORS_MAPPING)) { + if (clientHints.formFactors.includes(type)) { + deviceType = '' + deviceTypeName; + break; + } + } + } + /** * All devices containing VR fragment are assumed to be a wearable */ @@ -505,11 +523,9 @@ class DeviceDetector { * a detected browser, but can still be detected. So we check the useragent for Chrome instead. */ if (deviceType === '' && osFamily === 'Android' && helper.matchUserAgent('Chrome/[.0-9]*', userAgent)) { - if (helper.matchUserAgent('(Mobile|eliboM)', userAgent) !== null) { - deviceType = DEVICE_TYPE.SMARTPHONE; - } else{ - deviceType = DEVICE_TYPE.TABLET; - } + deviceType = helper.matchUserAgent('(Mobile|eliboM)', userAgent) + ? DEVICE_TYPE.SMARTPHONE + : DEVICE_TYPE.TABLET; } /** @@ -578,33 +594,32 @@ class DeviceDetector { */ if ( deviceType === '' && - (osName === 'Windows RT' || - (osName === 'Windows' && helper.versionCompare(osVersion, '8') >= 0)) && + (osName === 'Windows RT' || (osName === 'Windows' && helper.versionCompare(osVersion, '8') >= 0)) && helper.hasTouchFragment(userAgent) ) { deviceType = DEVICE_TYPE.TABLET; } - /** - * All devices running Puffin Secure Browser that contain letter 'D' are assumed to be desktops - */ - if (deviceType === '' && helper.hasPuffinDesktopFragment(userAgent)) { - deviceType = DEVICE_TYPE.DESKTOP; - } - - /** - * All devices running Puffin Web Browser that contain letter 'P' are assumed to be smartphones - */ - if (deviceType === '' && helper.hasPuffinSmartphoneFragment(userAgent)) { - deviceType = DEVICE_TYPE.SMARTPHONE; - } - /** - * All devices running Puffin Web Browser that contain letter 'T' are assumed to be tablets - */ - if (deviceType === '' && helper.hasPuffinTabletFragment(userAgent)) { - deviceType = DEVICE_TYPE.TABLET; + if (deviceType === '' && /Puffin\/\d/i.test(userAgent)) { + /** + * All devices running Puffin Secure Browser that contain letter 'D' are assumed to be desktops + */ + if (helper.hasPuffinDesktopFragment(userAgent)) { + deviceType = DEVICE_TYPE.DESKTOP; + } + /** + * All devices running Puffin Web Browser that contain letter 'P' are assumed to be smartphones + */ + if (helper.hasPuffinSmartphoneFragment(userAgent)) { + deviceType = DEVICE_TYPE.SMARTPHONE; + } + /** + * All devices running Puffin Web Browser that contain letter 'T' are assumed to be tablets + */ + if (helper.hasPuffinTabletFragment(userAgent)) { + deviceType = DEVICE_TYPE.TABLET; + } } - /** * All devices running Opera TV Store are assumed to be a tv */ @@ -699,8 +714,8 @@ class DeviceDetector { if (deviceModel !== '' && helper.hasUserAgentClientHintsFragment(userAgent)) { const osHints = attr(clientHints, 'os', {}); const osVersion = attr(osHints, 'version', ''); - return userAgent.replace(/(Android 10[.\d]*; K)/, - `Android ${osVersion !== '' ? osVersion: '10'}; ${deviceModel}` + return userAgent.replace(/(Android (?:10[.\d]*; K|1[1-5]))/, + `Android ${osVersion !== '' ? osVersion : '10'}; ${deviceModel}` ); } @@ -733,7 +748,8 @@ class DeviceDetector { trusted: null }; - if (!helper.hasDeviceModelByClientHints(clientHints) && helper.hasUserAgentClientHintsFragment(ua)) { + // skip all parse is client-hints useragent and model not exist + if (!helper.hasDeviceModelByClientHints(clientHints) && helper.hasUserAgentClientHintsFragment(userAgent)) { return Object.assign({}, result); } @@ -769,7 +785,7 @@ class DeviceDetector { } } - // client hints + // client hints get model raw if (result.model === '' && helper.hasDeviceModelByClientHints(clientHints)) { result.model = clientHints.device.model; } diff --git a/parser/client/browser-families.js b/parser/client/browser-families.js index ef919666..0aa408ff 100644 --- a/parser/client/browser-families.js +++ b/parser/client/browser-families.js @@ -36,14 +36,14 @@ module.exports = { 'K4', 'WK', 'T3', 'K5', 'MU', '9P', 'K6', 'VR', 'N9', 'M9', 'F9', '0P', '0A', 'JR', 'D3', 'TK', 'BP', '2F', '2M', 'K7', '1N', '8A', 'H7', 'X3', 'T4', 'X4', '5O', - '8C', '3M', '6I', '2P', 'PU', '7I', 'X5', + '8C', '3M', '6I', '2P', 'PU', '7I', 'X5', 'AL', ], 'Firefox': [ 'FF', 'BI', 'BF', 'BH', 'BN', 'C0', 'CU', 'EI', 'F1', 'FB', 'FE', 'AX', 'FM', 'FR', 'FY', 'GZ', 'I4', 'IF', 'IW', 'LH', 'LY', 'MB', 'MN', 'MO', 'MY', 'OA', 'OS', 'PI', 'PX', 'QA', 'S5', 'SX', 'TF', 'TO', 'WF', 'ZV', - 'FP', 'AD', 'WL', '2I', 'P9', 'KJ', 'WY', 'VK', 'W5', + 'FP', 'AD', '2I', 'P9', 'KJ', 'WY', 'VK', 'W5', '7C', 'N7', 'W7', '8P', ], 'Internet Explorer': ['IE', 'CZ', 'BZ', 'IM', 'PS', '3A', '4A', 'RN'], diff --git a/parser/client/browser.js b/parser/client/browser.js index 76157d09..cea4e68a 100755 --- a/parser/client/browser.js +++ b/parser/client/browser.js @@ -189,6 +189,15 @@ class Browser extends ClientAbstractParser { engineVersion = ''; } + if ('Wolvic' === name) { + if ('Blink' === engine) { + family = 'Chrome'; + } + if ('Gecko' === engine) { + family = 'Firefox'; + } + } + if (name === '') { return null; } diff --git a/parser/const/form-factor-mapping.js b/parser/const/form-factor-mapping.js new file mode 100644 index 00000000..6fedf7d4 --- /dev/null +++ b/parser/const/form-factor-mapping.js @@ -0,0 +1,11 @@ +const DEVICE_TYPE = require('./device-type'); + +module.exports = { + 'automotive' : DEVICE_TYPE.CAR_BROWSER, + 'xr' : DEVICE_TYPE.WEARABLE, + 'watch' : DEVICE_TYPE.WEARABLE, + 'mobile' : DEVICE_TYPE.SMARTPHONE, + 'tablet' : DEVICE_TYPE.TABLET, + 'desktop' : DEVICE_TYPE.DESKTOP, + 'eink' : DEVICE_TYPE.TABLET, +}; \ No newline at end of file diff --git a/parser/device/brand-short.js b/parser/device/brand-short.js index f39bed11..6ffd7d24 100755 --- a/parser/device/brand-short.js +++ b/parser/device/brand-short.js @@ -237,6 +237,7 @@ module.exports = { 'G3': 'CG Mobile', '37': 'CGV', 'CP': 'Captiva', + 'CPD': 'CPDEVICE', 'CF': 'Carrefour', 'CA1': 'Carbon Mobile', 'CS': 'Casio', @@ -299,6 +300,7 @@ module.exports = { 'CON': 'Conceptum', 'CED': 'Continental Edison', '9C': 'Colors', + 'COL': 'COLORROOM', 'CO': 'Coolpad', 'COO': 'Coopers', 'CDE': 'COOD-E', @@ -314,6 +316,7 @@ module.exports = { 'CX': 'Crescent', 'CK': 'Cricket', 'CM': 'Crius Mea', + 'CMF': 'CMF', '0C': 'Crony', 'C1': 'Crosscall', '4W': 'Crown', @@ -420,6 +423,7 @@ module.exports = { 'ENI': 'ENIE', '2E': 'E-Ceros', 'E8': 'E-tel', + 'ETH': 'E-TACHI', 'EAS': 'EAS Electric', 'EP': 'Easypix', 'EQ': 'Eagle', @@ -883,6 +887,7 @@ module.exports = { 'KR': 'Koridy', 'XK': 'Koslam', 'K2': 'KRONO', + 'KRX': 'Korax', 'KE': 'Krüger&Matz', '5K': 'KREZ', 'WK': 'KRIP', @@ -1167,7 +1172,7 @@ module.exports = { 'NRD': 'Nordfrost', 'NOR': 'NORMANDE', '7N': 'NorthTech', - 'NOT': 'Nothing Phone', + 'NOT': 'Nothing', '5N': 'Nos', 'NO': 'Nous', 'NQ': 'Novex', @@ -1885,6 +1890,7 @@ module.exports = { 'XN': 'Xion', 'XO': 'Xolo', 'XR': 'Xoro', + 'XPP': 'XPPen', 'XRL': 'XREAL', 'XS': 'Xshitou', 'XSM': 'Xsmart', diff --git a/parser/helper.js b/parser/helper.js index c8aca6d8..b6342c05 100755 --- a/parser/helper.js +++ b/parser/helper.js @@ -240,7 +240,7 @@ function hasDesktopFragment(userAgent) { * @return {boolean} */ function hasUserAgentClientHintsFragment(userAgent) { - return /Android 10[.\d]*; K(?: Build\/|[;)])/i.test(userAgent); + return /Android (?:10[.\d]*; K(?: Build\/|[;)])|1[1-5]\)) AppleWebKit/i.test(userAgent); } /** diff --git a/regexes/bots.yml b/regexes/bots.yml index e0a1efd4..20089fa2 100644 --- a/regexes/bots.yml +++ b/regexes/bots.yml @@ -249,6 +249,14 @@ name: 'Microsoft Corporation' url: 'http://www.microsoft.com' +- regex: 'Blackbox Exporter' + name: 'Blackbox Exporter' + category: 'Site Monitor' + url: 'https://github.com/prometheus/blackbox_exporter' + producer: + name: 'Prometheus' + url: 'https://prometheus.io/' + - regex: 'Blekkobot' name: 'Blekkobot' category: 'Search bot' @@ -586,7 +594,23 @@ - regex: 'facebook(?:catalog|externalhit|externalua|platform|scraper)' name: 'Facebook Crawler' category: 'Social Media Agent' - url: 'https://developers.facebook.com/docs/sharing/webmasters/crawler/' + url: 'https://developers.facebook.com/docs/sharing/webmasters/web-crawlers' + producer: + name: 'Meta Platforms, Inc.' + url: 'https://www.meta.com/' + +- regex: 'meta-externalagent' + name: 'Meta-ExternalAgent' + category: 'Crawler' + url: 'https://developers.facebook.com/docs/sharing/webmasters/web-crawlers' + producer: + name: 'Meta Platforms, Inc.' + url: 'https://www.meta.com/' + +- regex: 'meta-externalfetcher' + name: 'Meta-ExternalFetcher' + category: 'Social Media Agent' + url: 'https://developers.facebook.com/docs/sharing/webmasters/web-crawlers' producer: name: 'Meta Platforms, Inc.' url: 'https://www.meta.com/' @@ -4814,8 +4838,16 @@ name: 'Immutable, SNC' url: 'https://ohdear.app/' +- regex: 'Inspici' + name: 'Inspici' + category: 'Crawler' + url: 'https://www.inspici.com/' + producer: + name: 'Inspici, LLC' + url: 'https://www.inspici.com/' + # Generic bots -- regex: 'nuhk|grub-client|Download Demon|SearchExpress|Microsoft URL Control|borg|altavista|dataminr\.com|teoma|oegp|http%20client|htdig|mogimogi|larbin|scrubby|searchsight|semanticdiscovery|snappy|vortex(?!(?: Build|Plus| CM62| HD65))|zeal(?!ot)|dataparksearch|findlinks|BrowserMob|URL2PNG|ZooShot|GomezA|Google SketchUp|Read%20Later|7Siters|centuryb\.o\.t9|InterNaetBoten|EasyBib AutoCite|Bidtellect|tomnomnom/meg|cortex|Re-re Studio|adreview|AHC/|NameOfAgent|Request-Promise|ALittle Client|Hello,? world|wp_is_mobile|0xAbyssalDoesntExist|Anarchy99|^revolt|nvd0rz|xfa1|Hakai|gbrmss|fuck-your-hp|IDBTE4M CODE87|Antoine|Insomania|Hells-Net|b3astmode|Linux Gnu \(cow\)|Test Certificate Info|iplabel|Magellan|TheSafex?Internetx?Search|Searcherx?web|kirkland-signature|LinkChain|survey-security-dot-txt|infrawatch|Time/|r00ts3c-owned-you|nvdorz|Root Slut|NiggaBalls|BotPoke|GlobalWebSearch|xx032_bo9vs83_2a|sslshed|geckotrail|Wordup|^xenu|^(?:chrome|firefox|Abcd|Dark|KvshClient|Node.js|Report Runner|url|Zeus|ZmEu)$' +- regex: 'nuhk|grub-client|Download Demon|SearchExpress|Microsoft URL Control|borg|altavista|dataminr\.com|teoma|oegp|http%20client|htdig|mogimogi|larbin|scrubby|searchsight|semanticdiscovery|snappy|vortex(?!(?: Build|Plus| CM62| HD65))|zeal(?!ot)|dataparksearch|findlinks|BrowserMob|URL2PNG|ZooShot|GomezA|Google SketchUp|Read%20Later|7Siters|centuryb\.o\.t9|InterNaetBoten|EasyBib AutoCite|Bidtellect|tomnomnom/meg|cortex|Re-re Studio|adreview|AHC/|NameOfAgent|Request-Promise|ALittle Client|Hello,? world|wp_is_mobile|0xAbyssalDoesntExist|Anarchy99|^revolt|nvd0rz|xfa1|Hakai|gbrmss|fuck-your-hp|IDBTE4M CODE87|Antoine|Insomania|Hells-Net|b3astmode|Linux Gnu \(cow\)|Test Certificate Info|iplabel|Magellan|TheSafex?Internetx?Search|Searcherx?web|kirkland-signature|LinkChain|survey-security-dot-txt|infrawatch|Time/|r00ts3c-owned-you|nvdorz|Root Slut|NiggaBalls|BotPoke|GlobalWebSearch|xx032_bo9vs83_2a|sslshed|geckotrail|Wordup|Keydrop|^xenu|^(?:chrome|firefox|Abcd|Dark|KvshClient|Node.js|Report Runner|url|Zeus|ZmEu)$' name: 'Generic Bot' # Generic detections diff --git a/regexes/client-index-hash.yml b/regexes/client-index-hash.yml index 5d95a810..867a337e 100644 --- a/regexes/client-index-hash.yml +++ b/regexes/client-index-hash.yml @@ -7586,6 +7586,9 @@ d982257: 2157fd44: - [] - - 84 +64a180b9: + - - 473 + - [] 4b379dc7: - - 473 - [] @@ -9781,3 +9784,6 @@ e0bc6d3: 98ec041: - - 91 - [] +29571d94: + - - 226 + - [] diff --git a/regexes/client/browsers.yml b/regexes/client/browsers.yml index 351117be..77cd1ada 100644 --- a/regexes/client/browsers.yml +++ b/regexes/client/browsers.yml @@ -1354,8 +1354,6 @@ - regex: 'Wolvic/(\d+\.[.\d]+)' name: 'Wolvic' version: '$1' - engine: - default: 'Gecko' # Firefox Reality (https://mixedreality.mozilla.org/firefox-reality/) - regex: 'Mobile VR.+Firefox' diff --git a/regexes/device-index-hash.yml b/regexes/device-index-hash.yml index 058b7151..64710b36 100644 --- a/regexes/device-index-hash.yml +++ b/regexes/device-index-hash.yml @@ -238,6 +238,8 @@ tb8163p3_bsp: - XY dilink5.0 for byd auto: - BYD +apollo10 pro: + - CPD pixel 3: - GO m2006c3lg: @@ -1690,6 +1692,20 @@ iphone12,5: - AP iphone12,8: - AP +redmi note 13: + - XI +tecno mobile li6: + - TB +tecno mobile li9: + - TB +fcp-n49: + - HU +fcp-an10: + - HU +biloba: + - XI +m1901f7g: + - XI gi-626: - A5 5039d_ru: @@ -38502,8 +38518,6 @@ lra-an00: - HU gbd-nx9: - HU -fcp-an10: - - HU elp-nx9: - HU xq-ec54: @@ -39095,6 +39109,177 @@ xt2363-2: - MR xt2343-1: - MR +hyper 7 pro: + - HV +rmx3988: + - RE +v17 sd665: + - VV +pkd130: + - OP +v2409: + - VV +v2344: + - VV +v2348: + - VV +s6702x: + - NL +pixel 9 pro: + - GO +motorola razr 50: + - MR +ds-cl4 lite: + - DCO +nova60: + - C5 +zte 7543n: + - ZT +z2351n: + - '57' +lt s33: + - QL +tecno mobile ch6i: + - TB +rmx3992: + - RE +rmx3990: + - RE +rmx3933: + - RE +rmx3921: + - RE +rmx3869: + - RE +pixel 9: + - GO +pixel 9 pro fold: + - GO +jdy-lx2: + - HU +kingkong_es: + - CB +blade10 ultra: + - DO +blade10 pro: + - DO +blade10: + - DO +a5slim: + - ETH +a015: + - CMF +2407fpn8eg: + - XI +sh-c03: + - SH +ds-cr1: + - DCO +w-k211-ope: + - WI +sh-c04: + - SH +z2453: + - ZT +xt2401-2: + - MR +vocal v11: + - VOC +wp39: + - OE +wp28 s: + - OE +wp28 e: + - OE +u play: + - HT +ultra 8: + - SPX +tecno kl5: + - TB +tecno camon i4: + - TB +phone (2a): + - NOT +iron va: + - HAM +energizer energy s550: + - ED + - OB + - E1 +asus_ai2401_e: + - AU +doogee s35: + - DO +doogee n50: + - DO +doogee n40 pro: + - DO +g025e: + - GO +cph2693: + - OP +cph2667: + - OP +cph2661: + - 'ON' + - OP +cph2663: + - 'ON' + - OP +cph2641: + - OP +smart_p24: + - 6W +'1907_19': + - VV +blackview a55 pro: + - B2 +b160v: + - BU +ihunt titan p10000 pro: + - IH + - UZ +itel vision 2: + - IZ +yale-l71a: + - HU +yale-l61d: + - HU +honor play 3: + - HU +honor 9x pro: + - HU +honor 9x: + - HU +honor 8s: + - HU +honor 8a: + - HU +honor 20: + - HU +honor 10i: + - HU +y85a: + - VV +y85: + - VV +y83a: + - VV +y71: + - VV +y71a: + - VV +nokia 8.3: + - NK +m1903c3eg: + - XI +m1582c_max: + - YM +a6020l37: + - LE +a6020a46: + - LE gs55-6: - GS gs57-6: @@ -48441,6 +48626,32 @@ inoipad 64gb wi-fi+3g: - I4 a15_eea: - OAN +k10c: + - COL +ex8s1: + - EF +opd2403: + - 'ON' +opd2303: + - OP +7_premium_pro: + - H0 +iplay60_mini_pro: + - 3A +via l40: + - R4 +ags6-w09: + - HU +ags6-l09: + - HU +ags3-al09: + - HU +y88x__plus: + - DJ +quartzpro: + - 8U +magicdrawingpad: + - XPP jdn-al00: - HU ags2-al00hn: @@ -60650,6 +60861,26 @@ h96 mini h8: - 9Z h96plus: - 9Z +stv-55led41: + - '78' +sw-led65ug402: + - '45' +sw-led43ub400: + - '45' +sw-led43sb300: + - '45' +sw-led40sb300: + - '45' +sw-led32sb304: + - '45' +50ust5970: + - SKY +50lu8130s: + - 8A +50lf7010t: + - 8A +korax-eurobox: + - KRX bb2 pro: - 0M kii pro: @@ -61307,3 +61538,5 @@ glass 1: - GO pico neo 3 os5.9.5.0 like quest: - QP +a8110: + - QP diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index 9ddd2881..80b6e5e3 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -243,11 +243,11 @@ Cherry Mobile: # HTC (htc.com) HTC: - regex: 'HTC|Sprint (?:APA|ATP)|ADR(?!910L)[a-z0-9]+|NexusHD2|Amaze[ _]4G(?:[);/ ]|$)|(Desire|Sensation|Evo ?3D|IncredibleS|Wildfire|Butterfly)[ _]?([^;/)]+)(?: Build|\))|(Amaze[ _]4G|(?