device_detector 1.0.2 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +49 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +5 -6
  5. data/CHANGELOG.md +11 -0
  6. data/README.md +8 -7
  7. data/Rakefile +7 -4
  8. data/device_detector.gemspec +1 -0
  9. data/lib/device_detector/bot.rb +2 -2
  10. data/lib/device_detector/browser.rb +364 -0
  11. data/lib/device_detector/client.rb +11 -2
  12. data/lib/device_detector/device.rb +1168 -22
  13. data/lib/device_detector/memory_cache.rb +5 -5
  14. data/lib/device_detector/metadata_extractor.rb +7 -8
  15. data/lib/device_detector/model_extractor.rb +3 -3
  16. data/lib/device_detector/name_extractor.rb +2 -2
  17. data/lib/device_detector/os.rb +148 -116
  18. data/lib/device_detector/parser.rb +22 -9
  19. data/lib/device_detector/version.rb +1 -1
  20. data/lib/device_detector/version_extractor.rb +10 -2
  21. data/lib/device_detector.rb +73 -40
  22. data/regexes/bots.yml +909 -59
  23. data/regexes/client/browser_engine.yml +14 -2
  24. data/regexes/client/browsers.yml +1356 -241
  25. data/regexes/client/feed_readers.yml +10 -10
  26. data/regexes/client/libraries.yml +75 -1
  27. data/regexes/client/mediaplayers.yml +39 -3
  28. data/regexes/client/mobile_apps.yml +524 -45
  29. data/regexes/client/pim.yml +55 -2
  30. data/regexes/device/cameras.yml +6 -6
  31. data/regexes/device/car_browsers.yml +23 -3
  32. data/regexes/device/consoles.yml +9 -3
  33. data/regexes/device/mobiles.yml +16903 -3199
  34. data/regexes/device/notebooks.yml +114 -0
  35. data/regexes/device/portable_media_player.yml +20 -3
  36. data/regexes/device/shell_tv.yml +117 -0
  37. data/regexes/device/televisions.yml +440 -35
  38. data/regexes/oss.yml +603 -165
  39. data/regexes/vendorfragments.yml +6 -2
  40. data/spec/device_detector/concrete_user_agent_spec.rb +38 -51
  41. data/spec/device_detector/detector_fixtures_spec.rb +36 -37
  42. data/spec/device_detector/device_spec.rb +52 -56
  43. data/spec/device_detector/memory_cache_spec.rb +19 -19
  44. data/spec/device_detector/model_extractor_spec.rb +3 -3
  45. data/spec/device_detector/version_extractor_spec.rb +5 -6
  46. data/spec/device_detector_spec.rb +26 -26
  47. data/spec/fixtures/client/browser.yml +2617 -555
  48. data/spec/fixtures/client/feed_reader.yml +34 -52
  49. data/spec/fixtures/client/library.yml +129 -38
  50. data/spec/fixtures/client/mediaplayer.yml +59 -28
  51. data/spec/fixtures/client/mobile_app.yml +589 -20
  52. data/spec/fixtures/client/pim.yml +92 -19
  53. data/spec/fixtures/detector/bots.yml +1749 -458
  54. data/spec/fixtures/detector/camera.yml +30 -24
  55. data/spec/fixtures/detector/car_browser.yml +199 -3
  56. data/spec/fixtures/detector/console.yml +107 -45
  57. data/spec/fixtures/detector/desktop.yml +3216 -758
  58. data/spec/fixtures/detector/feature_phone.yml +935 -181
  59. data/spec/fixtures/detector/feed_reader.yml +181 -193
  60. data/spec/fixtures/detector/mediaplayer.yml +157 -60
  61. data/spec/fixtures/detector/mobile_apps.yml +914 -136
  62. data/spec/fixtures/detector/peripheral.yml +271 -0
  63. data/spec/fixtures/detector/phablet.yml +5593 -1533
  64. data/spec/fixtures/detector/portable_media_player.yml +398 -32
  65. data/spec/fixtures/detector/smart_display.yml +183 -9
  66. data/spec/fixtures/detector/smart_speaker.yml +60 -0
  67. data/spec/fixtures/detector/smartphone-1.yml +3930 -4239
  68. data/spec/fixtures/detector/smartphone-10.yml +3985 -7366
  69. data/spec/fixtures/detector/smartphone-11.yml +5083 -3784
  70. data/spec/fixtures/detector/smartphone-12.yml +8989 -0
  71. data/spec/fixtures/detector/smartphone-13.yml +9412 -0
  72. data/spec/fixtures/detector/smartphone-14.yml +9477 -0
  73. data/spec/fixtures/detector/smartphone-15.yml +9281 -0
  74. data/spec/fixtures/detector/smartphone-16.yml +9678 -0
  75. data/spec/fixtures/detector/smartphone-17.yml +9965 -0
  76. data/spec/fixtures/detector/smartphone-18.yml +9806 -0
  77. data/spec/fixtures/detector/smartphone-19.yml +9965 -0
  78. data/spec/fixtures/detector/smartphone-2.yml +6670 -4375
  79. data/spec/fixtures/detector/smartphone-20.yml +9710 -0
  80. data/spec/fixtures/detector/smartphone-21.yml +8693 -0
  81. data/spec/fixtures/detector/smartphone-22.yml +10178 -0
  82. data/spec/fixtures/detector/smartphone-23.yml +9453 -0
  83. data/spec/fixtures/detector/smartphone-24.yml +9843 -0
  84. data/spec/fixtures/detector/smartphone-25.yml +9703 -0
  85. data/spec/fixtures/detector/smartphone-26.yml +10007 -0
  86. data/spec/fixtures/detector/smartphone-27.yml +4927 -0
  87. data/spec/fixtures/detector/smartphone-3.yml +4656 -4711
  88. data/spec/fixtures/detector/smartphone-4.yml +3518 -4479
  89. data/spec/fixtures/detector/smartphone-5.yml +3805 -4803
  90. data/spec/fixtures/detector/smartphone-6.yml +3745 -4693
  91. data/spec/fixtures/detector/smartphone-7.yml +3721 -4645
  92. data/spec/fixtures/detector/smartphone-8.yml +4564 -4699
  93. data/spec/fixtures/detector/smartphone-9.yml +3897 -4888
  94. data/spec/fixtures/detector/smartphone.yml +3154 -4141
  95. data/spec/fixtures/detector/tablet-1.yml +4742 -4576
  96. data/spec/fixtures/detector/tablet-2.yml +3803 -4731
  97. data/spec/fixtures/detector/tablet-3.yml +6210 -2309
  98. data/spec/fixtures/detector/tablet-4.yml +9062 -0
  99. data/spec/fixtures/detector/tablet-5.yml +9273 -0
  100. data/spec/fixtures/detector/tablet-6.yml +4588 -0
  101. data/spec/fixtures/detector/tablet.yml +3629 -4613
  102. data/spec/fixtures/detector/tv-1.yml +2501 -0
  103. data/spec/fixtures/detector/tv.yml +8856 -2064
  104. data/spec/fixtures/detector/unknown.yml +412 -587
  105. data/spec/fixtures/detector/wearable.yml +915 -0
  106. data/spec/fixtures/device/camera.yml +4 -3
  107. data/spec/fixtures/device/car_browser.yml +9 -2
  108. data/spec/fixtures/device/console.yml +15 -14
  109. data/spec/fixtures/device/notebook.yml +7 -0
  110. data/spec/fixtures/parser/oss.yml +1392 -21
  111. data/spec/fixtures/parser/vendorfragments.yml +57 -51
  112. metadata +70 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: b954941fa6ffb4b5963131549ef4887c7624a234
4
- data.tar.gz: 153de5187d3654b3c7126f3af606364d434ba14d
2
+ SHA256:
3
+ metadata.gz: 8ea5b9d7804056caa36b9a4df7053133f56c8d41110c3bdc35197c096d33042a
4
+ data.tar.gz: 071f6c768d94b56a5bba6247ac004e645f0a7ba0f5d17906c47e77162a00552a
5
5
  SHA512:
6
- metadata.gz: 7dc3c1599e1296ddc0f32b9cdafc3480a2ce50145222500b2d446a79eab0c282d1658d5bbf2a704bb4966293bbcef4fc2e7e84ccd09905c49a397c6fbbe8665f
7
- data.tar.gz: f68295aa71c62c14e3e2bb204fa8186e91447d1e640d536315ea711bc922de63190b2c737b665da768e2c0fb682d4f3037f4182ec869f2f55fecfa93f1836b28
6
+ metadata.gz: c09d1b88bbe8df4b114eec92dfe02ab053d1eb1cc14bd53fddfd837c2e65f83cecce7c6e22389663c0056d504b6aa4f6f294f8592deab183fe84ec26021eb908
7
+ data.tar.gz: 34d195f2dfbc72d65ade35cda223bde3fafe9d69d4b9f6afd2d8a318a5ce6342fe45422f993e384096d7bfa68a738091e9107f21a0b9f16c7cc54995cebde775
data/.rubocop.yml ADDED
@@ -0,0 +1,49 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.6
3
+ Exclude:
4
+ - 'db/schema.rb'
5
+ - 'Gemfile'
6
+ - 'bin/'
7
+ Style/Documentation:
8
+ Enabled: false
9
+ Style/EmptyMethod:
10
+ EnforcedStyle: expanded
11
+ Style/HashEachMethods:
12
+ Enabled: true
13
+ Style/HashTransformKeys:
14
+ Enabled: true
15
+ Style/HashTransformValues:
16
+ Enabled: true
17
+ Style/RedundantRegexpCharacterClass:
18
+ Enabled: true
19
+ Style/RedundantRegexpEscape:
20
+ Enabled: true
21
+ Style/StructInheritance:
22
+ Enabled: false
23
+ Style/ExponentialNotation:
24
+ Enabled: true
25
+ Style/SlicingWithRange:
26
+ Enabled: true
27
+ Layout/EmptyLinesAroundAttributeAccessor:
28
+ Enabled: true
29
+ Layout/LineLength:
30
+ Max: 100
31
+ Layout/SpaceAroundMethodCallOperator:
32
+ Enabled: true
33
+ Metrics/MethodLength:
34
+ Max: 15
35
+ Metrics/BlockLength:
36
+ Exclude:
37
+ - 'Rakefile'
38
+ - '**/*.rake'
39
+ - 'spec/**/*.rb'
40
+ Lint/DeprecatedOpenSSLConstant:
41
+ Enabled: true
42
+ Lint/MixedRegexpCaptureTypes:
43
+ Enabled: true
44
+ Lint/RedundantCopDisableDirective:
45
+ Enabled: false
46
+ Lint/RaiseException:
47
+ Enabled: true
48
+ Lint/StructNewOverride:
49
+ Enabled: true
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.6.6
data/.travis.yml CHANGED
@@ -1,15 +1,14 @@
1
1
  language: ruby
2
- sudo: false
3
- dist: precise
2
+ dist: bionic
4
3
  rvm:
5
- - 2.4.4
6
- - 2.5.0
7
- - 2.6.2
4
+ - 2.4
5
+ - 2.5
6
+ - 2.6
8
7
  before_install:
9
8
  - gem update --system
10
9
  - gem --version
11
10
  - gem update bundler
12
- - bundler --version
11
+ - bundle --version
13
12
  cache: bundler
14
13
  script:
15
14
  bundle exec rake test
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Change Log
2
2
 
3
+ ## [1.0.5]
4
+ - Updated detection rules from upstream on 2020-10-06
5
+
6
+ ## [1.0.4]
7
+ - Updated detection rules from upstream on 2020-06-23
8
+ - [Issue #69](https://github.com/podigee/device_detector/issues/69): Performance: RegExp definitions are only loaded once.
9
+ - [Issue #74](https://github.com/podigee/device_detector/issues/74): Development: Added Rubocop
10
+
11
+ ## [1.0.3]
12
+ - Updated detection rules from upstream on 2019-12-09
13
+
3
14
  ## [1.0.2]
4
15
  - Updated detection rules from upstream on 2019-08-05
5
16
 
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # DeviceDetector
2
2
 
3
- ![Podigee DeviceDetector Travisci Badge](https://travis-ci.org/podigee/device_detector.svg)
3
+ [![Build Status](https://travis-ci.org/podigee/device_detector.svg?branch=develop)](https://travis-ci.org/podigee/device_detector)
4
4
 
5
5
  DeviceDetector is a precise and fast user agent parser and device detector written in Ruby, backed by the largest and most up-to-date user agent database.
6
6
 
@@ -47,8 +47,9 @@ client.os_full_version # => '8'
47
47
 
48
48
  # For many devices, you can also query the device name (usually the model name)
49
49
  client.device_name # => 'iPhone 5'
50
- # Device types can be one of the following: desktop, smartphone, tablet, console,
51
- # portable media player, tv, car browser, camera
50
+ # Device types can be one of the following: desktop, smartphone, tablet,
51
+ # feature phone, console, tv, car browser, smart display, camera,
52
+ # portable media player, phablet, smart speaker, wearable, peripheral
52
53
  client.device_type # => 'smartphone'
53
54
  ```
54
55
 
@@ -134,19 +135,19 @@ useragent 4.450000 0.000000 4.450000 ( 4.452741)
134
135
 
135
136
  ## Detectable clients, bots and devices
136
137
 
137
- Updated on 2019-08-06
138
+ Updated on 2021-10-28
138
139
 
139
140
  ### Bots
140
141
 
141
- 360Spider, Aboundexbot, Acoon, AddThis.com, ADMantX, aHrefs Bot, Alexa Crawler, Alexa Site Audit, Amorank Spider, Analytics SEO Crawler, ApacheBench, Applebot, Arachni, archive.org bot, Ask Jeeves, Backlink-Check.de, BacklinkCrawler, Baidu Spider, BazQux Reader, BingBot, BitlyBot, Blekkobot, BLEXBot Crawler, Bloglovin, Blogtrottr, Bountii Bot, Browsershots, BUbiNG, Butterfly Robot, CareerBot, Castro 2, Catchpoint, ccBot crawler, Charlotte, Cliqzbot, CloudFlare Always Online, CloudFlare AMP Fetcher, Collectd, CommaFeed, CSS Certificate Spider, C?c C?c Bot, Datadog Agent, Dataprovider, Daum, Dazoobot, Discobot, Domain Re-Animator Bot, DotBot, DuckDuckGo Bot, Easou Spider, EMail Exractor, EmailWolf, evc-batch, ExaBot, ExactSeek Crawler, Ezooms, Facebook External Hit, Feed Wrangler, Feedbin, FeedBurner, Feedly, Feedspot, Fever, Findxbot, Flipboard, Generic Bot, Genieo Web filter, Gigablast, Gigabot, Gluten Free Crawler, Gmail Image Proxy, Goo, Google PageSpeed Insights, Google Partner Monitoring, Google Search Console, Google Structured Data Testing Tool, Googlebot, Grapeshot, Heritrix, Heureka Feed, HTTPMon, HubPages, HubSpot, ICC-Crawler, ichiro, IIS Site Analysis, Inktomi Slurp, IP-Guide Crawler, IPS Agent, Kouio, Larbin web crawler, Let's Encrypt Validation, Lighthouse, Linkdex Bot, LinkedIn Bot, LTX71, Lycos, Magpie-Crawler, MagpieRSS, Mail.Ru Bot, masscan, Mastodon Bot, Meanpath Bot, MetaInspector, MetaJobBot, Mixrank Bot, MJ12 Bot, Mnogosearch, MojeekBot, Monitor.Us, Munin, Nagios check_http, NalezenCzBot, Netcraft Survey Bot, netEstate, NetLyzer FastProbe, NetResearchServer, Netvibes, NewsBlur, NewsGator, NLCrawler, Nmap, Nutch-based Bot, Octopus, Omgili bot, Openindex Spider, OpenLinkProfiler, OpenWebSpider, Orange Bot, Outbrain, PagePeeker, PaperLiBot, Phantomas, PHP Server Monitor, Picsearch bot, Pingdom Bot, Pinterest, PocketParser, Pompos, PritTorrent, QuerySeekerSpider, Quora Link Preview, Qwantify, Rainmeter, RamblerMail Image Proxy, Reddit Bot, Riddler, Rogerbot, ROI Hunter, RSSRadio Bot, SafeDNSBot, Scooter, ScoutJet, Scrapy, Screaming Frog SEO Spider, ScreenerBot, Semrush Bot, Sensika Bot, Sentry Bot, SEOENGBot, SEOkicks-Robot, Seoscanners.net, Server Density, Seznam Bot, Seznam Email Proxy, Seznam Zbozi.cz, ShopAlike, ShopWiki, SilverReader, SimplePie, SISTRIX Crawler, Site24x7 Website Monitoring, SiteSucker, Sixy.ch, Skype URI Preview, Slackbot, Snapchat Proxy, Sogou Spider, Soso Spider, Sparkler, Speedy, Spinn3r, Spotify, Sputnik Bot, sqlmap, SSL Labs, StatusCake, Superfeedr Bot, Survey Bot, Tarmot Gezgin, TelegramBot, TinEye Crawler, Tiny Tiny RSS, TLSProbe, Trendiction Bot, TurnitinBot, TweetedTimes Bot, Tweetmeme Bot, Twitterbot, UkrNet Mail Proxy, UniversalFeedParser, Uptime Robot, Uptimebot, URLAppendBot, Vagabondo, Visual Site Mapper Crawler, VK Share Button, W3C CSS Validator, W3C I18N Checker, W3C Link Checker, W3C Markup Validation Service, W3C MobileOK Checker, W3C Unified Validator, Wappalyzer, WebbCrawler, WebPageTest, WebSitePulse, WebThumbnail, WeSEE:Search, Willow Internet Crawler, WordPress, Wotbox, YaCy, Yahoo Gemini, Yahoo! Cache System, Yahoo! Link Preview, Yahoo! Slurp, Yandex Bot, Yeti/Naverbot, Yottaa Site Monitor, Youdao Bot, Yourls, Yunyun Bot, Zao, zgrab, Zookabot, ZumBot
142
+ 360Spider, Aboundexbot, Acoon, Adbeat, AddThis.com, ADMantX, ADmantX Service Fetcher, Adsbot, aHrefs Bot, Alexa Crawler, Alexa Site Audit, Amazon Bot, Amazon Route53 Health Check, Amorank Spider, Analytics SEO Crawler, ApacheBench, Applebot, AppSignalBot, Arachni, archive.org bot, ArchiveBox, Ask Jeeves, AspiegelBot, Awario, Backlink-Check.de, BacklinkCrawler, Baidu Spider, Barkrowler, BazQux Reader, BDCbot, Better Uptime Bot, BingBot, BitlyBot, Blekkobot, BLEXBot Crawler, Bloglovin, Blogtrottr, BoardReader, BoardReader Blog Indexer, Bountii Bot, BrandVerity, Browsershots, BUbiNG, Buck, BuiltWith, Butterfly Robot, Bytespider, CareerBot, Castro 2, Catchpoint, CATExplorador, ccBot crawler, CensysInspect, Charlotte, Choosito, Cliqzbot, CloudFlare Always Online, CloudFlare AMP Fetcher, Cloudflare Diagnostics, Cocolyzebot, Collectd, colly, CommaFeed, Comscore, ContentKing, Cookiebot, CSS Certificate Spider, Cốc Cốc Bot, Datadog Agent, DataForSeoBot, datagnionbot, Datanyze, Dataprovider, DataXu, Daum, Dazoobot, Discobot, Domain Re-Animator Bot, Domains Project, DotBot, Dotcom Monitor, DuckDuckGo Bot, Easou Spider, eCairn-Grabber, EMail Exractor, EmailWolf, Embedly, evc-batch, ExaBot, ExactSeek Crawler, Expanse, eZ Publish Link Validator, Ezooms, Facebook External Hit, Feed Wrangler, Feedbin, FeedBurner, Feedly, Feedspot, Fever, Findxbot, Flipboard, FreshRSS, GDNP, Generic Bot, Genieo Web filter, Gigablast, Gigabot, Gluten Free Crawler, Gmail Image Proxy, Gobuster, Goo, Google Cloud Scheduler, Google Favicon, Google PageSpeed Insights, Google Partner Monitoring, Google Search Console, Google Stackdriver Monitoring, Google StoreBot, Google Structured Data Testing Tool, Googlebot, Gowikibot, Grammarly, Grapeshot, GTmetrix, Hatena Favicon, Heart Rails Capture, Heritrix, Heureka Feed, HTTPMon, httpx, HuaweiWebCatBot, HubPages, HubSpot, ICC-Crawler, ichiro, IDG/IT, IIS Site Analysis, Inktomi Slurp, inoreader, IP-Guide Crawler, IPS Agent, JungleKeyThumbnail, K6, Kaspersky, KomodiaBot, Kouio, l9tcpid, Larbin web crawler, LCC, Let's Encrypt Validation, Lighthouse, Linkdex Bot, LinkedIn Bot, LinkpadBot, LinkPreview, LTX71, LumtelBot, Lycos, Magpie-Crawler, MagpieRSS, Mail.Ru Bot, masscan, Mastodon Bot, Meanpath Bot, Mediatoolkit Bot, MegaIndex, MetaInspector, MetaJobBot, MicroAdBot, Mixrank Bot, MJ12 Bot, Mnogosearch, MojeekBot, Monitor.Us, MTRobot, Munin, MuscatFerret, Nagios check_http, NalezenCzBot, nbertaupete95, Neevabot, Netcraft Survey Bot, netEstate, NetLyzer FastProbe, NetResearchServer, NetSystemsResearch, Netvibes, NewsBlur, NewsGator, Nimbostratus Bot, NLCrawler, Nmap, Notify Ninja, Nutch-based Bot, Nuzzel, oBot, Octopus, Odnoklassniki Bot, Omgili bot, Openindex Spider, OpenLinkProfiler, OpenWebSpider, Orange Bot, Outbrain, PagePeeker, PageThing, PaperLiBot, parse.ly, Petal Bot, Phantomas, PHP Server Monitor, Picsearch bot, PingAdmin.Ru, Pingdom Bot, Pinterest, PiplBot, Plukkie, PocketParser, Pompos, PritTorrent, Project Resonance, PRTG Network Monitor, QuerySeekerSpider, Quora Bot, Quora Link Preview, Qwantify, Rainmeter, RamblerMail Image Proxy, Reddit Bot, Riddler, Robozilla, RocketMonitorBot, Rogerbot, ROI Hunter, RSSRadio Bot, Ryowl, SabsimBot, SafeDNSBot, Scooter, ScoutJet, Scrapy, Screaming Frog SEO Spider, ScreenerBot, Seekport, Semantic Scholar Bot, Semrush Bot, Sensika Bot, Sentry Bot, Seobility, SEOENGBot, SEOkicks, SEOkicks-Robot, seolyt, Seoscanners.net, Serendeputy Bot, serpstatbot, Server Density, Seznam Bot, Seznam Email Proxy, Seznam Zbozi.cz, ShopAlike, Shopify Partner, ShopWiki, SilverReader, SimplePie, SISTRIX Crawler, SISTRIX Optimizer, Site24x7 Website Monitoring, Siteimprove, SitemapParser-VIPnytt, SiteSucker, Sixy.ch, Skype URI Preview, Slackbot, SMTBot, Snapchat Proxy, Sogou Spider, Soso Spider, Sparkler, Speedy, Spinn3r, Spotify, Sprinklr, Sputnik Bot, Sputnik Favicon Bot, Sputnik Image Bot, sqlmap, SSL Labs, Startpagina Linkchecker, StatusCake, Superfeedr Bot, SurdotlyBot, Survey Bot, Tarmot Gezgin, TelegramBot, The Knowledge AI, theoldreader, ThinkChaos, TinEye Crawler, Tiny Tiny RSS, TLSProbe, TraceMyFile, Trendiction Bot, Turnitin, TurnitinBot, TweetedTimes Bot, Tweetmeme Bot, Twingly Recon, Twitterbot, UkrNet Mail Proxy, UniversalFeedParser, Uptime Robot, Uptimebot, URLAppendBot, Vagabondo, Velen Public Web Crawler, Vercel Bot, VeryHip, Visual Site Mapper Crawler, VK Share Button, W3C CSS Validator, W3C I18N Checker, W3C Link Checker, W3C Markup Validation Service, W3C MobileOK Checker, W3C Unified Validator, Wappalyzer, WebbCrawler, WebDataStats, Weborama, WebPageTest, WebSitePulse, WebThumbnail, WellKnownBot, WeSEE:Search, WeViKaBot, WhatCMS, WikiDo, Willow Internet Crawler, WooRank, WordPress, Wotbox, XenForo, YaCy, Yahoo Gemini, Yahoo! Cache System, Yahoo! Japan BRW, Yahoo! Link Preview, Yahoo! Mail Proxy, Yahoo! Slurp, YaK, Yandex Bot, Yeti/Naverbot, Yottaa Site Monitor, Youdao Bot, Yourls, Yunyun Bot, Zao, Ze List, zgrab, Zookabot, ZoominfoBot, ZumBot
142
143
 
143
144
  ### Clients
144
145
 
145
- 360 Browser, 360 Phone Browser, ABrowse, aiohttp, Airmail, Akregator, Aloha Browser, Amaya, Amiga Aweb, Amiga Voyager, Amigo, Android Browser, AndroidDownloadManager, ANT Fresco, AntennaPod, ANTGalio, AOL Shield, Apple News, Apple PubSub, Arora, Atomic Web Browser, Audacious, Avant Browser, Avast Secure Browser, B-Line, Baidu Browser, Baidu Spark, Banshee, Barca, BashPodder, Beaker Browser, Beonex, BeyondPod, BlackBerry Browser, Boxee, bPod, Brave, Breaker, BriskBard, BrowseX, Bunjalloo, Camino, Castro, Castro 2, Charon, Cheshire, Chrome, Chrome Frame, Chrome Mobile, Chrome Mobile iOS, ChromePlus, Chromium, Clementine, Coast, Coc Coc, CometBird, Comodo Dragon, Conkeror, CoolNovo, Cunaguaro, curl, Cyberfox, DAVdroid, dbrowser, Deepnet Explorer, Deezer, Dillo, DoggCatcher, Dolphin, Dooble, Dorado, Downcast, Element Browser, Elinks, Epic, Espial TV Browser, Facebook, Facebook Messenger, Faraday, FeedDemon, Feeddler RSS Reader, FeedR, Fennec, Firebird, Firefox, Firefox Focus, Firefox Mobile, Firefox Rocket, Fireweb, Fireweb Navigator, Flock, Fluid, FlyCast, Foobar2000, Galeon, GNOME Web, Go-http-client, Google Earth, Google HTTP Java Client, Google Play Newsstand, Google Plus, gPodder, Guzzle (PHP HTTP Client), Headless Chrome, HotJava, HTTP_Request2, HTTPie, IBrowse, iCab, iCab Mobile, iCatcher, IceDragon, Iceweasel, IE Mobile, Instacast, Internet Explorer, Iridium, Iron, Isivioo, iTunes, Jasmine, Java, JetBrains Omea Reader, Jig Browser, K-meleon, Kapiko, Kazehakase, Kindle Browser, Kodi, Konqueror, Kylo, LG Browser, libdnf, Liebao, Liferea, Line, Links, Lotus Notes, LuaKit, Lunascape, Lynx, MailBar, Maxthon, Mechanize, MediaMonkey, Mercury, MicroB, Microsoft Edge, Microsoft Outlook, Midori, Miro, MIUI Browser, Mobile Safari, Mobile Silk, NCSA Mosaic, NetFront, NetFront Life, NetNewsWire, NetPositive, Netscape, NetSurf, Newsbeuter, NewsBlur, NewsBlur Mobile App, NexPlayer, Nightingale, Nokia Browser, Nokia OSS Browser, Nokia Ovi Browser, NTENT Browser, Obigo, Odyssey Web Browser, Off By One, OkHttp, OmniWeb, ONE Browser, Openwave Mobile Browser, Opera, Opera Mini, Opera Mobile, Opera Next, Opera Touch, Oppo Browser, Oregano, Otter Browser, Outlook Express, Overcast, Pale Moon, Palm Blazer, Palm Pre, Palm WebPro, Palmscape, Perl, Phoenix, Pinterest, Player FM, Pocket Casts, Podcast & Radio Addict, Podcast Republic, Podcasts, Podcat, Podcatcher Deluxe, Podkicker, Polaris, Polarity, Postbox, PritTorrent, Puffin, Pulp, Python Requests, Python urllib, QQ Browser, QuickTime, QupZilla, Qutebrowser, Qwant Mobile, ReadKit, Reeder, Rekonq, RockMelt, RSS Bandit, RSS Junkie, RSSOwl, RSSRadio, Safari, Sailfish Browser, Samsung Browser, SEMC-Browser, Seraphic Sraf, Shiira, Sina Weibo, Skyfire, Sleipnir, Snowshoe, Sogou Explorer, Songbird, Stagefright, Streamy, Stringer, SubStream, Sunrise, SuperBird, Swiftfox, TenFourFox, Tenta Browser, The Bat!, Thunderbird, Tizen Browser, TweakStyle, UC Browser, urlgrabber (yum), Vision Mobile Browser, Vivaldi, VLC, Waterfox, WebPositive, WeChat, WeTab Browser, Wget, WhatsApp, Winamp, Windows Media Player, wOSBrowser, WWW-Mechanize, XBMC, Xiino, Yahoo! Japan, Yandex Browser, Yelp Mobile, YouTube
146
+ 115 Browser, 1Password, 2345 Browser, 2tch, 360 Browser, 360 Phone Browser, 7654 Browser, 7Star, ABrowse, Aha Radio 2, aiohttp, Airmail, Akka HTTP, Akregator, Alexa Media Player, AliExpress, Aloha Browser, Aloha Browser Lite, Amaya, Amiga Aweb, Amiga Voyager, Amigo, Android Browser, AndroidDownloadManager, ANT Fresco, AntennaPod, ANTGalio, AOL Desktop, AOL Shield, Apple News, Apple PubSub, Arctic Fox, Aria2, Arora, Arvin, Atom, Atomic Web Browser, Audacious, Avant Browser, Avast Secure Browser, AVG Secure Browser, Avira Scout, AwoX, B-Line, Baidu Box App, Baidu Browser, Baidu Spark, Banshee, Barca, Basecamp, BashPodder, Basilisk, BathyScaphe, BB2C, Beaker Browser, Beamrise, Beonex, BetBull, BeyondPod, Binance, BingWebApp, Bitsboard, Biyubi, BlackBerry Browser, BlackHawk, Blitz, Blue Browser, Blue Proxy, Borealis Navigator, Boxee, bPod, Brave, Breaker, BriskBard, BrowseX, Browzar, Bunjalloo, Byffox, Camino, CastBox, Castro, Castro 2, CCleaner, Centaury, CGN, Charon, Chedot, Cheetah Browser, Cheshire, Chim Lac, ChMate, Chrome, Chrome Frame, Chrome Mobile, Chrome Mobile iOS, Chrome Webview, ChromePlus, Chromium, Chromium GOST, Ciisaa, Clementine, Clovia, CM Browser, COAF SMART Citizen, Coast, Coc Coc, Colibri, CometBird, Comodo Dragon, Conkeror, CoolBrowser, CoolNovo, Copied, Cornowser, COS Browser, Covenant Eyes, Craving Explorer, Crazy Browser, CrosswalkApp, Crusta, Cunaguaro, curl, Cyberfox, DAVdroid, dbrowser, Deepnet Explorer, Deezer, deg-degan, Deledao, Delta Browser, DeskBrowse, DevCasts, DeviantArt, Dillo, DingTalk, Discord, DoggCatcher, Dolphin, Dooble, Dorado, Dot Browser, douban App, Downcast, DuckDuckGo Privacy Browser, Ecosia, Edge WebView, Element Browser, Elements Browser, Elinks, Embarcadero URI Client, Epic, Espial TV Browser, EUI Browser, Evernote, Evolve Podcast, eZ Browser, Facebook, Facebook Messenger, Facebook Messenger Lite, Falkon, Faraday, Faux Browser, FeedDemon, Feeddler RSS Reader, FeedR, Fennec, Firebird, Firefox, Firefox Focus, Firefox Mobile, Firefox Mobile iOS, Firefox Reality, Firefox Rocket, Fireweb, Fireweb Navigator, Flast, Flipboard App, Flock, Flow, Fluid, FlyCast, Foobar2000, foobar2000, Franz, FreeU, Gaana, Galeon, Ghostery Privacy Browser, GinxDroid Browser, Glass Browser, GNOME Web, Go-http-client, GoBrowser, GOG Galaxy, Google Earth, Google Fiber TV, Google Go, Google HTTP Java Client, Google Play Newsstand, Google Plus, Google Podcasts, Google Search App, gPodder, GRequests, Guzzle (PHP HTTP Client), gvfs, HasBrowser, Hawk Turbo Browser, Headless Chrome, Helio, HeyTapBrowser, hola! Browser, HotJava, HP Smart, HTC Streaming Player, HTTP_Request2, HTTPie, Huawei Browser, IBrowse, iCab, iCab Mobile, iCatcher, IceCat, IceDragon, Iceweasel, IE Mobile, Instacast, Instagram App, Instapaper, Internet Explorer, Iridium, Iron, Iron Mobile, Isivioo, iTunes, Jakarta Commons HttpClient, JaneStyle, JaneView, Japan Browser, Jasmine, Java, JavaFX, JetBrains Omea Reader, Jig Browser, Jig Browser Plus, Jio Browser, K-meleon, K.Browser, KakaoTalk, Kapiko, Kazehakase, Keeper Password Manager, Kik, Kindle Browser, Kinza, Kiwi, Kode Browser, Kodi, Konqueror, Kylo, LG Browser, libdnf, LieBaoFast, Liferea, Light, Line, LinkedIn, Links, Live5ch, Lolifox, Lotus Notes, Lovense Browser, LuaKit, Lulumi, Lunascape, Lunascape Lite, Lynx, Maelstrom, MailBar, Mailspring, Mandarin, MAUI WAP Browser, Maxthon, mCent, Mechanize, MediaMonkey, Meizu Browser, Mercury, MicroB, Microsoft Edge, Microsoft Office $1, Microsoft Office Mobile, Microsoft OneDrive, Microsoft Outlook, Midori, Mikrotik Fetch, Minimo, Mint Browser, Miro, MIUI Browser, Mobicip, Mobile Safari, Mobile Silk, Monument Browser, MPlayer, mpv, Music Player Daemon, MxNitro, My World, Mypal, Naver, Navigateur Web, NCSA Mosaic, Netflix, NetFront, NetFront Life, NetNewsWire, NetPositive, Netscape, NetSurf, NewsArticle App, Newsbeuter, NewsBlur, NewsBlur Mobile App, NexPlayer, NFS Browser, Nightingale, Node Fetch, Nokia Browser, Nokia OSS Browser, Nokia Ovi Browser, Notion, Nox Browser, NPR One, NTENT Browser, NTV Mobil, Obigo, OceanHero, Oculus Browser, Odin, Odnoklassniki, Odyssey Web Browser, Off By One, OfferUp, OhHai Browser, OkHttp, OmniWeb, ONE Browser, Opal Travel, OpenFin, Openwave Mobile Browser, Opera, Opera Devices, Opera GX, Opera Mini, Opera Mini iOS, Opera Mobile, Opera Neon, Opera Next, Opera Touch, Oppo Browser, Orca, Ordissimo, Oregano, Origin In-Game Overlay, Origyn Web Browser, Otter Browser, Outlook Express, Overcast, Pale Moon, Palm Blazer, Palm Pre, Palm WebPro, Palmscape, Pandora, Papers, Perfect Browser, Perl, Perl REST::Client, Phantom Browser, Phoenix, Phoenix Browser, Pic Collage, Pinterest, Player FM, PlayFree Browser, Pocket Casts, Podbean, Podcast & Radio Addict, Podcast Republic, Podcaster, Podcasts, Podcat, Podcatcher Deluxe, Podimo, Podkicker$1, Polaris, Polarity, PolyBrowser, Polypane, Postbox, Postman Desktop, PritTorrent, PrivacyWall, Procast, Puffin, Pulp, Python Requests, Python urllib, Qazweb, QQ Browser, QQ Browser Lite, QQ Browser Mini, QtWebEngine, Quark, QuickCast, QuickTime, QuiteRSS, QupZilla, Qutebrowser, Qwant Mobile, RadioPublic, Raindrop.io, Rambox Pro, ReactorNetty, ReadKit, Realme Browser, Reeder, Rekonq, REST Client for Ruby, RestSharp, Roblox, RoboForm, Rocket Chat, RockMelt, RSS Bandit, RSS Junkie, RSSOwl, RSSRadio, Safari, Safe Exam Browser, Sailfish Browser, SalamWeb, Samsung Browser, ScalaJ HTTP, SeaMonkey, Secure Browser, Seewo Browser, SEMC-Browser, Seraphic Sraf, Seznam Browser, SFive, Shiira, Shopee, ShowMe, SimpleBrowser, Sina Weibo, Siri, Sizzy, Skyeng Teachers, Skyfire, Skype for Business, Slack, Sleipnir, Slimjet, Smart Lenovo Browser, Smooz, Snapchat, Snowshoe, Sogou Explorer, Sogou Mobile Browser, SogouSearch App, Songbird, SONOS, Sony Media Go, SP Browser, Splash, SPORT1, Sputnik Browser, Stagefright, Stampy Browser, Stargon, START Internet Browser, Steam In-Game Overlay, Streamlabs OBS, Streamy, Strimio, Stringer, SubStream, Sunrise, Super Fast Browser, SuperBird, surf, Swiftfox, Swoot, T-Browser, t-online.de Browser, Tao Browser, Teams, TenFourFox, Tenta Browser, The Bat!, The Wall Street Journal, Thunder, Thunderbird, tieba, TikTok, Tizen Browser, ToGate, TopBuzz, TuneIn Radio, TuneIn Radio Pro, Tungsten, TV Bro, TVirl, TweakStyle, twinkle, Twitter, U-Cursos, UBrowser, UC Browser, UC Browser HD, UC Browser Mini, UC Browser Turbo, Unibox, UnityPlayer, UR Browser, urlgrabber (yum), uTorrent, Uzbl, Venus Browser, Viber, Vision Mobile Browser, Vivaldi, vivo Browser, VLC, VMware AirWatch, Vuhuv, Waterfox, Wattpad, Wear Internet Browser, Web Explorer, WebPositive, WeChat, WeChat Share Extension, WeTab Browser, Wget, WH Questions, Whale Browser, WhatsApp, Whisper, Winamp, Windows Media Player, WinHttp WinHttpRequest, Wirtschafts Woche, wOSBrowser, WWW-Mechanize, XBMC, Xiino, xStand, Xvast, Yaani Browser, Yahoo! Japan, Yahoo! Japan Browser, YakYak, Yandex, Yandex Browser, Yandex Browser Lite, Yelp Mobile, Yolo Browser, YouTube, Zalo, Zetakey, Zoho Chat, Zvu
146
147
 
147
148
  ### Devices
148
149
 
149
- 3Q, 4Good, Acer, Advan, Advance, AGM, Ainol, Airness, Airties, Aiwa, Akai, Alcatel, AllCall, Allview, Altech UEC, altron, Amazon, AMGOO, Amoi, ANS, Apple, Archos, Arian Space, Ark, Arnova, ARRIS, Ask, Assistant, Asus, Audiovox, AVH, Avvio, Axxion, Azumi Mobile, BangOlufsen, Barnes & Noble, Becker, Beeline, Beetel, BenQ, BenQ-Siemens, BGH, Bird, Bitel, Black Fox, Blackview, Blaupunkt, Blu, Bluboo, Bluegood, Bmobile, bogo, Boway, bq, Bravis, Brondi, Bush, CAGI, Capitel, Captiva, Carrefour, Casio, Cat, Celkon, Changhong, Cherry Mobile, China Mobile, CnM, Coby Kyros, Comio, Compal, ComTrade Tesla, Concord, ConCorde, Condor, Coolpad, Cowon, CreNova, Crescent, Cricket, Crius Mea, Crosscall, Cube, CUBOT, Cyrus, Danew, Datang, Datsun, Dbtel, Dell, Denver, Desay, DEXP, Dialog, Dicam, Digi, Digicel, Digiland, Digma, DMM, DNS, DoCoMo, Doogee, Doov, Dopod, Doro, Dune HD, E-Boda, E-tel, Easypix, EBEST, Echo Mobiles, ECS, EE, EKO, Eks Mobility, Elenberg, Elephone, Energizer, Energy Sistem, Ergo, Ericsson, Ericy, Essential, Essentielb, Eton, eTouch, Evercoss, Evertek, Evolio, Evolveo, EvroMedia, Explay, Extrem, Ezio, Ezze, Fairphone, FiGO, FinePower, Fly, FNB, Fondi, Forstar, Foxconn, Freetel, Fujitsu, G-TiDE, Garmin-Asus, Gemini, Geotel, Ghia, Gigabyte, Gigaset, Ginzzu, Gionee, GOCLEVER, Goly, GoMobile, Google, Gradiente, Grape, Grundig, Hafury, Haier, HannSpree, Hasee, Hi-Level, Hisense, Homtom, Hoozo, Hosin, HP, HTC, Huawei, Humax, Hyundai, i-Joy, i-mate, i-mobile, iBall, iBerry, IconBIT, iHunt, Ikea, iKoMo, IMO Mobile, Impression, iNew, Infinix, InFocus, Inkti, InnJoo, Innostream, Inoi, INQ, Intek, Intex, Inverto, iOcean, iPro, Irbis, iRola, iTel, iView, JAY-Tech, Jiayu, Jolla, Just5, K-Touch, Kalley, Karbonn, Kazam, KDDI, Kempler & Strauss, Keneksi, Kiano, Kingsun, Kocaso, Kodak, Kogan, Komu, Konka, Konrow, Koobee, KOPO, Koridy, KRONO, Kr�ger&Matz, KT-Tech, Kumai, Kyocera, LAIQ, Land Rover, Landvo, Lanix, Lark, Lava, LCT, Le Pan, Leagoo, Ledstar, LeEco, Lemhoov, Lenco, Lenovo, Leotec, Lexand, Lexibook, LG, Lingwin, Loewe, Logicom, LYF, M.T.T., M4tel, Majestic, Manta Multimedia, Maxwest, Maze, Mecer, Mediacom, MediaTek, Medion, MEEG, MegaFon, Meizu, Memup, Metz, MEU, MicroMax, Microsoft, Mio, Miray, Mitsubishi, MIXC, MLLED, Mobiistar, Mobiola, Mobistel, Modecom, Mofut, Motorola, Movic, Mpman, MSI, MTC, MTN, MyPhone, Myria, MyWigo, Navon, NEC, Neffos, Netgear, NeuImage, Newgen, NEXBOX, Nexian, Nextbit, NextBook, NGM, Nikon, Nintendo, NOA, Noain, Noblex, Nokia, Nomi, Nous, NUU Mobile, Nvidia, NYX Mobile, O+, O2, Obi, Odys, Onda, OnePlus, OPPO, Opsson, Orange, Ouki, OUYA, Overmax, Oysters, Palm, Panacom, Panasonic, Pantech, PCBOX, PCD, PCD Argentina, PEAQ, Pentagram, Philips, phoneOne, Pioneer, Pixus, Ployer, Plum, Point of View, Polaroid, PolyPad, Polytron, Pomp, Positivo, PPTV, Prestigio, Primepad, ProScan, PULID, Q-Touch, Qilive, QMobile, Qtek, Quantum, Quechua, R-TV, Ramos, RCA Tablets, Readboy, Rikomagic, RIM, Riviera, Rokit, Roku, Rover, RT Project, Safaricom, Sagem, Samsung, Sanei, Santin BiTBiZ, Sanyo, Savio, Sega, Selevision, Selfix, Sencor, Sendo, Senseit, Senwa, SFR, Sharp, Shuttle, Siemens, Sigma, Silent Circle, Simbans, Sky, Skyworth, Smart, Smartfren, Smartisan, Softbank, Sonim, Sony, Spice, Star, Starway, STF Mobile, STK, Stonex, Storex, Sumvision, SunVan, SuperSonic, Supra, SWISSMOBILITY, Symphony, T-Mobile, TB Touch, TCL, TechniSat, TechnoTrend, TechPad, Teclast, Tecno Mobile, Telefunken, Telego, Telenor, Telit, Tesco, Tesla, teXet, ThL, Thomson, TIANYU, Timovi, TiPhone, Tolino, Top House, Toplux, Toshiba, Touchmate, TrekStor, Trevi, True, Tunisie Telecom, Turbo-X, TVC, U.S. Cellular, Uhappy, Ulefone, UMIDIGI, Unimax, Uniscope, Unknown, Unnecto, Unonu, Unowhy, UTStarcom, Vastking, Verizon, Vernee, Vertex, Vertu, Verykool, Vestel, Videocon, Videoweb, ViewSonic, Vinsoc, Vitelcom, Vivo, Vizio, VK Mobile, Vodafone, Vonino, Vorago, Voto, Voxtel, Vulcan, Walton, Weimei, WellcoM, Wexler, Wiko, Wileyfox, Wink, Wolder, Wolfgang, Wonu, Woo, Woxter, X-TIGI, X-View, Xiaomi, Xion, Xolo, Yandex, Yarvik, Yes, Yezz, Ytone, Yu, Yuandao, Yusun, Zeemi, Zen, Zenek, Zonda, Zopo, ZTE, Zuum, Zync, ZYQ, �wn
150
+ 2E, 360, 3GNET, 3GO, 3Q, 4Good, 4ife, 7 Mobile, 8848, A1, Accent, Ace, Acer, Acteck, Adronix, Advan, Advance, AfriOne, AG Mobile, AGM, Ainol, Airness, AIRON, Airties, AIS, Aiuto, Aiwa, Akai, AKIRA, Alba, Alcatel, Alcor, ALDI NORD, ALDI SÜD, Alfawise, Aligator, AllCall, AllDocube, Allview, Allwinner, Altech UEC, Altice, altron, Amazon, AMCV, AMGOO, Amigoo, Amoi, Andowl, Anker, Anry, ANS, AOC, AOpen, Aoson, AOYODKG, Apple, Archos, Arian Space, Ark, ArmPhone, Arnova, ARRIS, Artel, Artizlee, Asano, Asanzo, Ask, Aspera, Assistant, Astro, Asus, AT&T, Atom, Atvio, Audiovox, AURIS, Avenzo, AVH, Avvio, Axioo, Axxion, Azumi Mobile, BangOlufsen, Barnes & Noble, BB Mobile, BBK, BDF, Becker, Beeline, Beelink, Beetel, Bellphone, BenQ, BenQ-Siemens, Benzo, Beyond, Bezkam, BGH, Bigben, BIHEE, BilimLand, Billion, BioRugged, Bird, Bitel, Bitmore, Bkav, Black Bear, Black Fox, Blackview, Blaupunkt, Bleck, Blloc, Blow, Blu, Bluboo, Bluebird, Bluedot, Bluegood, Bluewave, BMAX, Bmobile, Bobarry, bogo, Boway, bq, Brandt, Bravis, BrightSign, Brondi, BS Mobile, Bundy, Bush, CAGI, Camfone, Canal Digital, Capitel, Captiva, Carrefour, Casio, Casper, Cat, Cavion, Celcus, Celkon, Cell-C, CellAllure, Centric, CG Mobile, CGV, Changhong, Cherry Mobile, CHIA, Chico Mobile, China Mobile, Chuwi, Claresta, Clarmin, Clementoni, Cloudfone, Cloudpad, Clout, CnM, Cobalt, Coby Kyros, Colors, Comio, Compal, ComTrade Tesla, Concord, ConCorde, Condor, Connectce, Connex, Conquest, Contixo, Coolpad, CORN, Cosmote, Covia, Cowon, CreNova, Crescent, Cricket, Crius Mea, Crony, Crosscall, Cube, CUBOT, CVTE, Cyrus, Daewoo, Danew, Datalogic, Datamini, Datang, Datawind, Datsun, Dbtel, Dell, Denver, Desay, DeWalt, DEXP, Dialog, Dicam, Digi, Digicel, DIGIFORS, Digihome, Digiland, Digma, DING DING, Ditecma, Diva, Divisat, DIXON, DMM, DNS, DoCoMo, Doffler, Dolamee, Doogee, Doopro, Doov, Dopod, Doro, Dragon Touch, Droxio, Dune HD, E-Boda, E-Ceros, E-tel, Eagle, Easypix, EBEST, Echo Mobiles, ECON, ECS, EE, Einstein, EKO, Eks Mobility, EKT, ELARI, Electroneum, ELECTRONIA, Elekta, Element, Elenberg, Elephone, Eltex, Energizer, Energy Sistem, Engel, Enot, Epik One, Ergo, Ericsson, Ericy, Erisson, Essential, Essentielb, eSTAR, Eton, eTouch, Etuline, Eurostar, Evercoss, Evertek, Evolio, Evolveo, EvroMedia, EWIS, EXCEED, Exmart, ExMobile, EXO, Explay, Extrem, Ezio, Ezze, F&U, F150, F2 Mobile, Facebook, Fairphone, Famoco, Fantec, FaRao Pro, FarEasTone, Fengxiang, Fero, FiGO, FinePower, Finlux, FireFly Mobile, FISE, Fly, FLYCAT, FMT, FNB, FNF, Fondi, Fonos, FORME, Formuler, Forstar, Fortis, Four Mobile, Fourel, Foxconn, Freetel, Fuego, Fujitsu, G-TiDE, G-Touch, Galaxy Innovations, Garmin-Asus, Gemini, General Mobile, Genesis, GEOFOX, Geotel, Geotex, GFive, Ghia, Ghong, Gigabyte, Gigaset, Gini, Ginzzu, Gionee, Globex, GLX, GOCLEVER, GoGEN, Gol Mobile, Goly, Gome, GoMobile, Google, Goophone, Gooweel, Gradiente, Grape, Gree, Greentel, Gresso, Gretel, Grundig, Hafury, Haier, HannSpree, Hardkernel, Hasee, Helio, Hezire, Hi, Hi-Level, High Q, Highscreen, HiMax, Hipstreet, Hisense, Hitachi, Hitech, Hoffmann, Hometech, Homtom, Honeywell, Hoozo, Horizon, Hosin, Hotel, Hotwav, How, HP, HTC, Huadoo, Huawei, Humax, Hurricane, Huskee, Hyundai, Hyve, i-Cherry, i-Joy, i-mate, i-mobile, iBall, iBerry, iBrit, IconBIT, iDroid, iGet, iHunt, Ikea, IKI Mobile, iKoMo, IKU Mobile, iLA, iLife, iMan, iMars, IMO Mobile, Impression, INCAR, Inch, Inco, iNew, Infinix, InFocus, InfoKit, Inkti, InnJoo, Innos, Innostream, Inoi, INQ, Insignia, Intek, Intex, Invens, Inverto, Invin, iOcean, iOutdoor, iPro, iQ&T, IQM, Irbis, Iris, iRola, iRulu, iSWAG, IT, iTel, iTruck, IUNI, iVA, iView, iVooMi, ivvi, iZotron, JAY-Tech, Jeka, Jesy, JFone, Jiake, Jiayu, Jinga, Jivi, JKL, Jolla, Just5, JVC, K-Touch, Kaan, Kaiomy, Kalley, Kanji, Karbonn, Kata, KATV1, Kazam, KDDI, Kempler & Strauss, Keneksi, Kenxinda, Kiano, Kingsun, KINGZONE, Kiowa, Kivi, Klipad, Kocaso, Kodak, Kogan, Komu, Konka, Konrow, Koobee, Koolnee, Kooper, KOPO, Koridy, KREZ, KRONO, Krüger&Matz, KT-Tech, KUBO, Kuliao, Kult, Kumai, Kurio, Kvant, Kyocera, Kyowon, Kzen, L-Max, LAIQ, Land Rover, Landvo, Lanix, Lark, Laurus, Lava, LCT, Le Pan, Leader Phone, Leagoo, Leben, Ledstar, LeEco, Leff, Lemhoov, Lenco, Lenovo, Leotec, Lephone, Lesia, Lexand, Lexibook, LG, Lifemaxx, Lingwin, Linnex, Linsar, Loewe, Logic, Logicom, Loview, LT Mobile, Lumigon, Lumus, Luna, Luxor, LYF, M-Horse, M-Tech, M.T.T., M4tel, MAC AUDIO, Macoox, Magnus, Majestic, Malata, Manhattan, Mann, Manta Multimedia, Mantra, Mara, Masstel, Matrix, Maxcom, Maximus, Maxtron, MAXVI, Maxwest, Maze, Maze Speed, MDC Store, meanIT, Mecer, Mecool, Mediacom, MediaTek, Medion, MEEG, MegaFon, Meitu, Meizu, Melrose, Memup, Metz, MEU, MicroMax, Microsoft, Minix, Mintt, Mio, Miray, Mito, Mitsubishi, MIVO, MIXC, MiXzo, MLLED, MLS, Mobicel, Mobiistar, Mobiola, Mobistel, MobiWire, Mobo, Modecom, Mofut, Motorola, Movic, mPhone, Mpman, MSI, MStar, MTC, MTN, Multilaser, MYFON, Mymaga, MyPhone, Myria, Myros, Mystery, MyTab, MyWigo, Nabi, Naomi Phone, National, Navcity, Navitech, Navitel, Navon, NEC, Necnot, Neffos, Neomi, Netgear, NeuImage, New Balance, Newgen, Newland, Newman, Newsday, NewsMy, NEXBOX, Nexian, NEXON, Nextbit, NextBook, NextTab, NG Optics, NGM, Nikon, Nintendo, NOA, Noain, Nobby, Noblex, NOBUX, Nokia, Nomi, Nomu, Nordmende, NorthTech, Nos, Nous, Novex, NuAns, Nubia, NUU Mobile, Nuvo, Nvidia, NYX Mobile, O+, O2, Oale, OASYS, Obi, Odys, OINOM, Ok, Okapia, OKWU, Onda, OnePlus, Onix, ONN, ONYX BOOX, OpelMobile, Openbox, OPPO, Opsson, Orange, Orbic, Ordissimo, Ouki, Oukitel, OUYA, Overmax, Ovvi, Owwo, Oysters, Oyyu, OzoneHD, P-UP, Packard Bell, Palm, Panacom, Panasonic, Pantech, PCBOX, PCD, PCD Argentina, PEAQ, Pendoo, Pentagram, Perfeo, Phicomm, Philco, Philips, Phonemax, phoneOne, Pico, Pioneer, PiPO, Pixela, Pixelphone, Pixus, Planet Computers, Ployer, Plum, Pluzz, PocketBook, POCO, Point of View, Polaroid, PolyPad, Polytron, Pomp, Poppox, Positivo, Positivo BGH, PPTV, Premio, Prestigio, Primepad, Primux, Prixton, PROFiLO, Proline, ProScan, Protruly, ProVision, PULID, Q-Touch, Q.Bell, Qilive, QMobile, Qnet Mobile, Qtek, Quantum, Qubo, Quechua, Qumo, R-TV, Rakuten, Ramos, Raspberry, Ravoz, Razer, RCA Tablets, Reach, Readboy, Realme, RED, Reeder, REGAL, Revo, Rikomagic, RIM, Rinno, Ritmix, Ritzviva, Riviera, Rivo, Roadrover, Rokit, Roku, Rombica, Ross&Moor, Rover, RoverPad, RoyQueen, RT Project, RugGear, Ruio, Runbo, Ryte, S-TELL, Saba, Safaricom, Sagem, Salora, Samsung, Sanei, Sansui, Santin, Sanyo, Savio, SCBC, Schneider, Seatel, Seeken, SEG, Sega, Selenga, Selevision, Selfix, SEMP TCL, Sencor, Sendo, Senkatel, Senseit, Senwa, Seuic, SFR, Sharp, Shift Phones, Shtrikh-M, Shuttle, Sico, Siemens, Sigma, Silelis, Silent Circle, Simbans, Simply, Singtech, Siragon, Sirin labs, SKG, Sky, Skyworth, Smadl, Smailo, Smart, Smart Electronic, Smartab, SmartBook, SMARTEC, Smartfren, Smartisan, Smotreshka, Softbank, SOLE, SOLO, Solone, Sonim, SONOS, Sony, Soundmax, Soyes, Spark, SPC, Spectralink, Spectrum, Spice, Sprint, SQOOL, Star, Starlight, Starmobile, Starway, Starwind, STF Mobile, STG Telecom, STK, Stonex, Storex, StrawBerry, Stylo, Subor, Sugar, Sumvision, Sunny, Sunstech, SunVan, Sunvell, SuperSonic, SuperTab, Supra, Suzuki, Swipe, SWISSMOBILITY, Swisstone, SWTV, Symphony, Syrox, T-Mobile, Takara, Tambo, Tanix, TB Touch, TCL, TD Systems, Technicolor, Technika, TechniSat, TechnoTrend, TechPad, Techwood, Teclast, Tecno Mobile, TEENO, Teknosa, Tele2, Telefunken, Telego, Telenor, Telia, Telit, Tesco, Tesla, Tetratab, teXet, ThL, Thomson, Thuraya, TIANYU, Time2, Timovi, Tinai, Tinmo, TiPhone, TOKYO, Tolino, Tone, Tooky, Top House, Toplux, Topway, Torex, Toshiba, Touchmate, Transpeed, TrekStor, Trevi, Trifone, Trio, Tronsmart, True, True Slim, TTEC, Tunisie Telecom, Turbo, Turbo-X, TurboKids, TurboPad, TVC, TWM, Twoe, TWZ, Tymes, U.S. Cellular, Ugoos, Uhans, Uhappy, Ulefone, Umax, UMIDIGI, Unihertz, Unimax, Uniscope, UNIWA, Unknown, Unnecto, Unonu, Unowhy, UTime, UTOK, UTStarcom, UZ Mobile, v-mobile, VAIO, Vargo, Vastking, VAVA, VC, Vega, Venso, Verico, Verizon, Vernee, Vertex, Vertu, Verykool, Vesta, Vestel, Vexia, VGO TEL, Videocon, Videoweb, ViewSonic, Vinga, Vinsoc, Vipro, Vision Touch, Vitelcom, Viumee, Vivax, Vivo, VIWA, Vizio, VK Mobile, VKworld, Vodacom, Vodafone, Vonino, Vontar, Vorago, Vorke, Voto, VOX, Voxtel, Voyo, Vsmart, Vsun, Vulcan, VVETIME, Walton, WE, Weimei, WellcoM, WELLINGTON, Western Digital, Westpoint, Wexler, Wieppo, Wigor, Wiko, Wileyfox, Winds, Wink, Winmax, Winnovo, Wintouch, Wiseasy, WIWA, Wizz, Wolder, Wolfgang, Wonu, Woo, Wortmann, Woxter, X-BO, X-TIGI, X-View, X.Vision, XGIMI, Xgody, Xiaolajiao, Xiaomi, Xion, Xolo, Xoro, Xshitou, Xtouch, Xtratech, Yandex, Yarvik, YASIN, Yes, Yezz, Yoka TV, Yota, Ytone, Yu, Yuandao, YUHO, Yuno, Yusun, Yxtel, Zaith, Zatec, Zebra, Zeemi, Zen, Zenek, Zentality, Zfiner, ZH&K, Zidoo, ZIFRO, Ziox, Zonda, Zopo, ZTE, Zuum, Zync, ZYQ, öwn
150
151
 
151
152
  ## Maintainers
152
153
 
data/Rakefile CHANGED
@@ -13,14 +13,17 @@ end
13
13
 
14
14
  task default: :test
15
15
 
16
+ desc 'generate detectable names output for README'
16
17
  task :detectable_names do
17
- require 'Date'
18
+ require 'date'
18
19
 
19
- bot_names = DeviceDetector::Bot.new.send(:regexes).map { |r| r[:name] }.uniq.sort_by(&:downcase)
20
+ bot_names = DeviceDetector::Bot.new('').send(:regexes)
21
+ .map { |r| r[:name] }.uniq.sort_by(&:downcase)
20
22
  bot_names.delete('$1')
21
- client_names = DeviceDetector::Client.new.send(:regexes).map { |r| r[:name] }.uniq.sort_by(&:downcase)
23
+ client_names = DeviceDetector::Client.new('').send(:regexes)
24
+ .map { |r| r[:name] }.uniq.sort_by(&:downcase)
22
25
  client_names.delete('$1')
23
- device = DeviceDetector::Device.new
26
+ device = DeviceDetector::Device.new('')
24
27
  device_paths = device.send(:filepaths)
25
28
  device_regexes = device.send(:load_regexes, device_paths)
26
29
  device_names = device_regexes.flat_map { |dn| dn[1].keys }.uniq.sort_by(&:downcase)
@@ -23,4 +23,5 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency 'minitest'
24
24
  spec.add_development_dependency 'rake'
25
25
  spec.add_development_dependency 'pry', '>= 0.10'
26
+ spec.add_development_dependency 'rubocop', '0.85.1'
26
27
  end
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class DeviceDetector
2
4
  class Bot < Parser
3
-
4
5
  def bot?
5
6
  regex_meta.any?
6
7
  end
@@ -10,6 +11,5 @@ class DeviceDetector
10
11
  def filenames
11
12
  ['bots.yml']
12
13
  end
13
-
14
14
  end
15
15
  end
@@ -0,0 +1,364 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DeviceDetector
4
+ class Browser
5
+ AVAILABLE_BROWSERS = {
6
+ '1B' => '115 Browser',
7
+ '2B' => '2345 Browser',
8
+ '36' => '360 Phone Browser',
9
+ '3B' => '360 Browser',
10
+ '7B' => '7654 Browser',
11
+ 'AA' => 'Avant Browser',
12
+ 'AB' => 'ABrowse',
13
+ 'AF' => 'ANT Fresco',
14
+ 'AG' => 'ANTGalio',
15
+ 'AL' => 'Aloha Browser',
16
+ 'AH' => 'Aloha Browser Lite',
17
+ 'AM' => 'Amaya',
18
+ 'AO' => 'Amigo',
19
+ 'AN' => 'Android Browser',
20
+ 'AE' => 'AOL Desktop',
21
+ 'AD' => 'AOL Shield',
22
+ 'AR' => 'Arora',
23
+ 'AX' => 'Arctic Fox',
24
+ 'AV' => 'Amiga Voyager',
25
+ 'AW' => 'Amiga Aweb',
26
+ 'AI' => 'Arvin',
27
+ 'A0' => 'Atom',
28
+ 'AT' => 'Atomic Web Browser',
29
+ 'AS' => 'Avast Secure Browser',
30
+ 'VG' => 'AVG Secure Browser',
31
+ 'AC' => 'Avira Scout',
32
+ 'A1' => 'AwoX',
33
+ 'BA' => 'Beaker Browser',
34
+ 'BM' => 'Beamrise',
35
+ 'BB' => 'BlackBerry Browser',
36
+ 'BD' => 'Baidu Browser',
37
+ 'BS' => 'Baidu Spark',
38
+ 'BI' => 'Basilisk',
39
+ 'BE' => 'Beonex',
40
+ 'BH' => 'BlackHawk',
41
+ 'BJ' => 'Bunjalloo',
42
+ 'BL' => 'B-Line',
43
+ 'BU' => 'Blue Browser',
44
+ 'BN' => 'Borealis Navigator',
45
+ 'BR' => 'Brave',
46
+ 'BK' => 'BriskBard',
47
+ 'BX' => 'BrowseX',
48
+ 'BZ' => 'Browzar',
49
+ 'BY' => 'Biyubi',
50
+ 'BF' => 'Byffox',
51
+ 'CA' => 'Camino',
52
+ 'CL' => 'CCleaner',
53
+ 'C6' => 'Chedot',
54
+ 'C0' => 'Centaury',
55
+ 'CC' => 'Coc Coc',
56
+ 'C4' => 'CoolBrowser',
57
+ 'C2' => 'Colibri',
58
+ 'CD' => 'Comodo Dragon',
59
+ 'C1' => 'Coast',
60
+ 'CX' => 'Charon',
61
+ 'CE' => 'CM Browser',
62
+ 'CF' => 'Chrome Frame',
63
+ 'HC' => 'Headless Chrome',
64
+ 'CH' => 'Chrome',
65
+ 'CI' => 'Chrome Mobile iOS',
66
+ 'CK' => 'Conkeror',
67
+ 'CM' => 'Chrome Mobile',
68
+ 'CN' => 'CoolNovo',
69
+ 'CO' => 'CometBird',
70
+ 'CB' => 'COS Browser',
71
+ 'CW' => 'Cornowser',
72
+ 'C3' => 'Chim Lac',
73
+ 'CP' => 'ChromePlus',
74
+ 'CR' => 'Chromium',
75
+ 'C5' => 'Chromium GOST',
76
+ 'CY' => 'Cyberfox',
77
+ 'CS' => 'Cheshire',
78
+ 'CT' => 'Crusta',
79
+ 'CG' => 'Craving Explorer',
80
+ 'CZ' => 'Crazy Browser',
81
+ 'CU' => 'Cunaguaro',
82
+ 'CV' => 'Chrome Webview',
83
+ 'DB' => 'dbrowser',
84
+ 'DE' => 'Deepnet Explorer',
85
+ 'DG' => 'deg-degan',
86
+ 'DA' => 'Deledao',
87
+ 'DT' => 'Delta Browser',
88
+ 'DS' => 'DeskBrowse',
89
+ 'DF' => 'Dolphin',
90
+ 'DO' => 'Dorado',
91
+ 'DR' => 'Dot Browser',
92
+ 'DL' => 'Dooble',
93
+ 'DI' => 'Dillo',
94
+ 'DD' => 'DuckDuckGo Privacy Browser',
95
+ 'EC' => 'Ecosia',
96
+ 'EW' => 'Edge WebView',
97
+ 'EI' => 'Epic',
98
+ 'EL' => 'Elinks',
99
+ 'EB' => 'Element Browser',
100
+ 'EE' => 'Elements Browser',
101
+ 'EZ' => 'eZ Browser',
102
+ 'EU' => 'EUI Browser',
103
+ 'EP' => 'GNOME Web',
104
+ 'ES' => 'Espial TV Browser',
105
+ 'FA' => 'Falkon',
106
+ 'FX' => 'Faux Browser',
107
+ 'F1' => 'Firefox Mobile iOS',
108
+ 'FB' => 'Firebird',
109
+ 'FD' => 'Fluid',
110
+ 'FE' => 'Fennec',
111
+ 'FF' => 'Firefox',
112
+ 'FK' => 'Firefox Focus',
113
+ 'FY' => 'Firefox Reality',
114
+ 'FR' => 'Firefox Rocket',
115
+ 'FL' => 'Flock',
116
+ 'FO' => 'Flow',
117
+ 'FM' => 'Firefox Mobile',
118
+ 'FW' => 'Fireweb',
119
+ 'FN' => 'Fireweb Navigator',
120
+ 'FS' => 'Flast',
121
+ 'FU' => 'FreeU',
122
+ 'GA' => 'Galeon',
123
+ 'GH' => 'Ghostery Privacy Browser',
124
+ 'GI' => 'GinxDroid Browser',
125
+ 'GB' => 'Glass Browser',
126
+ 'GE' => 'Google Earth',
127
+ 'GO' => 'GOG Galaxy',
128
+ 'GR' => 'GoBrowser',
129
+ 'HS' => 'HasBrowser',
130
+ 'HA' => 'Hawk Turbo Browser',
131
+ 'HE' => 'Helio',
132
+ 'HO' => 'hola! Browser',
133
+ 'HJ' => 'HotJava',
134
+ 'HU' => 'Huawei Browser',
135
+ 'IB' => 'IBrowse',
136
+ 'IC' => 'iCab',
137
+ 'I2' => 'iCab Mobile',
138
+ 'I1' => 'Iridium',
139
+ 'I3' => 'Iron Mobile',
140
+ 'I4' => 'IceCat',
141
+ 'ID' => 'IceDragon',
142
+ 'IV' => 'Isivioo',
143
+ 'IW' => 'Iceweasel',
144
+ 'IE' => 'Internet Explorer',
145
+ 'IM' => 'IE Mobile',
146
+ 'IR' => 'Iron',
147
+ 'JB' => 'Japan Browser',
148
+ 'JS' => 'Jasmine',
149
+ 'JA' => 'JavaFX',
150
+ 'JI' => 'Jig Browser',
151
+ 'JP' => 'Jig Browser Plus',
152
+ 'JO' => 'Jio Browser',
153
+ 'KB' => 'K.Browser',
154
+ 'KI' => 'Kindle Browser',
155
+ 'KM' => 'K-meleon',
156
+ 'KO' => 'Konqueror',
157
+ 'KP' => 'Kapiko',
158
+ 'KN' => 'Kinza',
159
+ 'KW' => 'Kiwi',
160
+ 'KD' => 'Kode Browser',
161
+ 'KY' => 'Kylo',
162
+ 'KZ' => 'Kazehakase',
163
+ 'LB' => 'Cheetah Browser',
164
+ 'LF' => 'LieBaoFast',
165
+ 'LG' => 'LG Browser',
166
+ 'LH' => 'Light',
167
+ 'LI' => 'Links',
168
+ 'IF' => 'Lolifox',
169
+ 'LO' => 'Lovense Browser',
170
+ 'LU' => 'LuaKit',
171
+ 'LL' => 'Lulumi',
172
+ 'LS' => 'Lunascape',
173
+ 'LN' => 'Lunascape Lite',
174
+ 'LX' => 'Lynx',
175
+ 'MD' => 'Mandarin',
176
+ 'M1' => 'mCent',
177
+ 'MB' => 'MicroB',
178
+ 'MC' => 'NCSA Mosaic',
179
+ 'MZ' => 'Meizu Browser',
180
+ 'ME' => 'Mercury',
181
+ 'MF' => 'Mobile Safari',
182
+ 'MI' => 'Midori',
183
+ 'MO' => 'Mobicip',
184
+ 'MU' => 'MIUI Browser',
185
+ 'MS' => 'Mobile Silk',
186
+ 'MN' => 'Minimo',
187
+ 'MT' => 'Mint Browser',
188
+ 'MX' => 'Maxthon',
189
+ 'MA' => 'Maelstrom',
190
+ 'NM' => 'MxNitro',
191
+ 'MY' => 'Mypal',
192
+ 'MR' => 'Monument Browser',
193
+ 'MW' => 'MAUI WAP Browser',
194
+ 'NW' => 'Navigateur Web',
195
+ 'NR' => 'NFS Browser',
196
+ 'NB' => 'Nokia Browser',
197
+ 'NO' => 'Nokia OSS Browser',
198
+ 'NV' => 'Nokia Ovi Browser',
199
+ 'NX' => 'Nox Browser',
200
+ 'NE' => 'NetSurf',
201
+ 'NF' => 'NetFront',
202
+ 'NL' => 'NetFront Life',
203
+ 'NP' => 'NetPositive',
204
+ 'NS' => 'Netscape',
205
+ 'NT' => 'NTENT Browser',
206
+ 'OC' => 'Oculus Browser',
207
+ 'O1' => 'Opera Mini iOS',
208
+ 'OB' => 'Obigo',
209
+ 'O2' => 'Odin',
210
+ 'H2' => 'OceanHero',
211
+ 'OD' => 'Odyssey Web Browser',
212
+ 'OF' => 'Off By One',
213
+ 'HH' => 'OhHai Browser',
214
+ 'OE' => 'ONE Browser',
215
+ 'OX' => 'Opera GX',
216
+ 'OG' => 'Opera Neon',
217
+ 'OH' => 'Opera Devices',
218
+ 'OI' => 'Opera Mini',
219
+ 'OM' => 'Opera Mobile',
220
+ 'OP' => 'Opera',
221
+ 'ON' => 'Opera Next',
222
+ 'OO' => 'Opera Touch',
223
+ 'OA' => 'Orca',
224
+ 'OS' => 'Ordissimo',
225
+ 'OR' => 'Oregano',
226
+ 'O0' => 'Origin In-Game Overlay',
227
+ 'OY' => 'Origyn Web Browser',
228
+ 'OV' => 'Openwave Mobile Browser',
229
+ 'O3' => 'OpenFin',
230
+ 'OW' => 'OmniWeb',
231
+ 'OT' => 'Otter Browser',
232
+ 'PL' => 'Palm Blazer',
233
+ 'PM' => 'Pale Moon',
234
+ 'PY' => 'Polypane',
235
+ 'PP' => 'Oppo Browser',
236
+ 'PR' => 'Palm Pre',
237
+ 'PU' => 'Puffin',
238
+ 'PW' => 'Palm WebPro',
239
+ 'PA' => 'Palmscape',
240
+ 'PE' => 'Perfect Browser',
241
+ 'PH' => 'Phantom Browser',
242
+ 'PX' => 'Phoenix',
243
+ 'PB' => 'Phoenix Browser',
244
+ 'PF' => 'PlayFree Browser',
245
+ 'PO' => 'Polaris',
246
+ 'PT' => 'Polarity',
247
+ 'LY' => 'PolyBrowser',
248
+ 'PI' => 'PrivacyWall',
249
+ 'PS' => 'Microsoft Edge',
250
+ 'QA' => 'Qazweb',
251
+ 'Q2' => 'QQ Browser Lite',
252
+ 'Q1' => 'QQ Browser Mini',
253
+ 'QQ' => 'QQ Browser',
254
+ 'QT' => 'Qutebrowser',
255
+ 'QU' => 'Quark',
256
+ 'QZ' => 'QupZilla',
257
+ 'QM' => 'Qwant Mobile',
258
+ 'QW' => 'QtWebEngine',
259
+ 'RE' => 'Realme Browser',
260
+ 'RK' => 'Rekonq',
261
+ 'RM' => 'RockMelt',
262
+ 'SB' => 'Samsung Browser',
263
+ 'SA' => 'Sailfish Browser',
264
+ 'S8' => 'Seewo Browser',
265
+ 'SC' => 'SEMC-Browser',
266
+ 'SE' => 'Sogou Explorer',
267
+ 'SF' => 'Safari',
268
+ 'S5' => 'Safe Exam Browser',
269
+ 'SW' => 'SalamWeb',
270
+ 'S9' => 'Secure Browser',
271
+ 'SV' => 'SFive',
272
+ 'SH' => 'Shiira',
273
+ 'S1' => 'SimpleBrowser',
274
+ 'SY' => 'Sizzy',
275
+ 'SK' => 'Skyfire',
276
+ 'SS' => 'Seraphic Sraf',
277
+ 'SL' => 'Sleipnir',
278
+ 'S6' => 'Slimjet',
279
+ 'S7' => 'SP Browser',
280
+ 'T1' => 'Stampy Browser',
281
+ '7S' => '7Star',
282
+ 'LE' => 'Smart Lenovo Browser',
283
+ 'OZ' => 'Smooz',
284
+ 'SN' => 'Snowshoe',
285
+ 'SO' => 'Sogou Mobile Browser',
286
+ 'S2' => 'Splash',
287
+ 'SI' => 'Sputnik Browser',
288
+ 'SR' => 'Sunrise',
289
+ 'SP' => 'SuperBird',
290
+ 'SU' => 'Super Fast Browser',
291
+ 'S3' => 'surf',
292
+ 'SG' => 'Stargon',
293
+ 'S0' => 'START Internet Browser',
294
+ 'S4' => 'Steam In-Game Overlay',
295
+ 'ST' => 'Streamy',
296
+ 'SX' => 'Swiftfox',
297
+ 'SZ' => 'Seznam Browser',
298
+ 'TR' => 'T-Browser',
299
+ 'TO' => 't-online.de Browser',
300
+ 'TA' => 'Tao Browser',
301
+ 'TF' => 'TenFourFox',
302
+ 'TB' => 'Tenta Browser',
303
+ 'TZ' => 'Tizen Browser',
304
+ 'TU' => 'Tungsten',
305
+ 'TG' => 'ToGate',
306
+ 'TS' => 'TweakStyle',
307
+ 'TV' => 'TV Bro',
308
+ 'UB' => 'UBrowser',
309
+ 'UC' => 'UC Browser',
310
+ 'UH' => 'UC Browser HD',
311
+ 'UM' => 'UC Browser Mini',
312
+ 'UT' => 'UC Browser Turbo',
313
+ 'UR' => 'UR Browser',
314
+ 'UZ' => 'Uzbl',
315
+ 'VE' => 'Venus Browser',
316
+ 'VI' => 'Vivaldi',
317
+ 'VV' => 'vivo Browser',
318
+ 'VB' => 'Vision Mobile Browser',
319
+ 'VM' => 'VMware AirWatch',
320
+ 'WI' => 'Wear Internet Browser',
321
+ 'WP' => 'Web Explorer',
322
+ 'WE' => 'WebPositive',
323
+ 'WF' => 'Waterfox',
324
+ 'WH' => 'Whale Browser',
325
+ 'WO' => 'wOSBrowser',
326
+ 'WT' => 'WeTab Browser',
327
+ 'YJ' => 'Yahoo! Japan Browser',
328
+ 'YA' => 'Yandex Browser',
329
+ 'YL' => 'Yandex Browser Lite',
330
+ 'YN' => 'Yaani Browser',
331
+ 'YB' => 'Yolo Browser',
332
+ 'XS' => 'xStand',
333
+ 'XI' => 'Xiino',
334
+ 'XV' => 'Xvast',
335
+ 'ZE' => 'Zetakey',
336
+ 'ZV' => 'Zvu'
337
+
338
+ # detected browsers in older versions
339
+ # 'IA' => 'Iceape', => pim
340
+ # 'SM' => 'SeaMonkey', => pim
341
+ }.freeze
342
+
343
+ BROWSER_FULL_TO_SHORT = AVAILABLE_BROWSERS.invert.freeze
344
+
345
+ MOBILE_ONLY_BROWSERS = Set.new(
346
+ %w[
347
+ 36 AH AI BL C1 C4 CB CW DB
348
+ DD DT EU EZ FK FM FR FX GH
349
+ GI GR HA HU IV JB KD M1 MF
350
+ MN MZ NX OC OI OM OZ PU PI
351
+ PE QU RE S0 S7 SA SB SG SK
352
+ ST SU T1 UH UM UT VE VV WI
353
+ WP YN
354
+ ]
355
+ ).freeze
356
+
357
+ def self.mobile_only_browser?(name)
358
+ return true if MOBILE_ONLY_BROWSERS.include?(name)
359
+
360
+ short = BROWSER_FULL_TO_SHORT[name]
361
+ MOBILE_ONLY_BROWSERS.include?(short)
362
+ end
363
+ end
364
+ end