device_detector 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -5
- data/CHANGELOG.md +3 -1
- data/README.md +5 -5
- data/Rakefile +16 -12
- data/lib/device_detector.rb +15 -0
- data/lib/device_detector/memory_cache.rb +21 -14
- data/lib/device_detector/os.rb +6 -3
- data/lib/device_detector/version.rb +3 -1
- data/regexes/bots.yml +73 -7
- data/regexes/client/browsers.yml +80 -2
- data/regexes/client/feed_readers.yml +7 -7
- data/regexes/client/libraries.yml +13 -1
- data/regexes/client/mediaplayers.yml +9 -5
- data/regexes/client/mobile_apps.yml +21 -0
- data/regexes/device/mobiles.yml +5616 -402
- data/regexes/device/televisions.yml +1 -1
- data/regexes/oss.yml +71 -13
- data/spec/device_detector/memory_cache_spec.rb +51 -19
- data/spec/device_detector_spec.rb +26 -55
- data/spec/fixtures/client/browser.yml +221 -96
- data/spec/fixtures/client/feed_reader.yml +0 -6
- data/spec/fixtures/client/library.yml +25 -1
- data/spec/fixtures/client/mediaplayer.yml +0 -12
- data/spec/fixtures/client/mobile_app.yml +24 -0
- data/spec/fixtures/detector/bots.yml +168 -3
- data/spec/fixtures/detector/desktop.yml +1422 -1422
- data/spec/fixtures/detector/feature_phone.yml +21 -1
- data/spec/fixtures/detector/feed_reader.yml +18 -5
- data/spec/fixtures/detector/mediaplayer.yml +33 -3
- data/spec/fixtures/detector/mobile_apps.yml +55 -6
- data/spec/fixtures/detector/phablet.yml +924 -164
- data/spec/fixtures/detector/smartphone-1.yml +4654 -4655
- data/spec/fixtures/detector/smartphone-10.yml +12362 -0
- data/spec/fixtures/detector/smartphone-11.yml +7639 -0
- data/spec/fixtures/detector/smartphone-2.yml +4232 -4247
- data/spec/fixtures/detector/smartphone-3.yml +4348 -4237
- data/spec/fixtures/detector/smartphone-4.yml +4110 -4103
- data/spec/fixtures/detector/smartphone-5.yml +5651 -2716
- data/spec/fixtures/detector/smartphone-6.yml +9896 -0
- data/spec/fixtures/detector/smartphone-7.yml +9899 -0
- data/spec/fixtures/detector/smartphone-8.yml +9945 -0
- data/spec/fixtures/detector/smartphone-9.yml +9916 -0
- data/spec/fixtures/detector/smartphone.yml +4114 -4013
- data/spec/fixtures/detector/tablet-1.yml +3857 -3857
- data/spec/fixtures/detector/tablet-2.yml +6681 -1787
- data/spec/fixtures/detector/tablet-3.yml +5134 -0
- data/spec/fixtures/detector/tablet.yml +3383 -3406
- data/spec/fixtures/detector/tv.yml +338 -24
- data/spec/fixtures/detector/unknown.yml +0 -120
- data/spec/fixtures/parser/oss.yml +135 -0
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b954941fa6ffb4b5963131549ef4887c7624a234
|
4
|
+
data.tar.gz: 153de5187d3654b3c7126f3af606364d434ba14d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7dc3c1599e1296ddc0f32b9cdafc3480a2ce50145222500b2d446a79eab0c282d1658d5bbf2a704bb4966293bbcef4fc2e7e84ccd09905c49a397c6fbbe8665f
|
7
|
+
data.tar.gz: f68295aa71c62c14e3e2bb204fa8186e91447d1e640d536315ea711bc922de63190b2c737b665da768e2c0fb682d4f3037f4182ec869f2f55fecfa93f1836b28
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [1.0.2]
|
4
|
+
- Updated detection rules from upstream on 2019-08-05
|
5
|
+
|
3
6
|
## [1.0.1]
|
4
7
|
- Updated detection rules from upstream on 2018-04-27
|
5
8
|
|
@@ -40,4 +43,3 @@
|
|
40
43
|
- Added rake task for automatic generation of supported and detectable clients and devices
|
41
44
|
- Updated detection rules
|
42
45
|
- Fixed device type detection, when type is specified on top level of a nested regex
|
43
|
-
|
data/README.md
CHANGED
@@ -47,7 +47,7 @@ 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,
|
50
|
+
# Device types can be one of the following: desktop, smartphone, tablet, console,
|
51
51
|
# portable media player, tv, car browser, camera
|
52
52
|
client.device_type # => 'smartphone'
|
53
53
|
```
|
@@ -134,19 +134,19 @@ useragent 4.450000 0.000000 4.450000 ( 4.452741)
|
|
134
134
|
|
135
135
|
## Detectable clients, bots and devices
|
136
136
|
|
137
|
-
Updated on
|
137
|
+
Updated on 2019-08-06
|
138
138
|
|
139
139
|
### Bots
|
140
140
|
|
141
|
-
360Spider, Aboundexbot, Acoon, AddThis.com, ADMantX, aHrefs Bot, Alexa Crawler, Amorank Spider, Analytics SEO Crawler, ApacheBench, Applebot, 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,
|
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
142
|
|
143
143
|
### Clients
|
144
144
|
|
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, Apple News, Apple PubSub, Arora, Atomic Web Browser, Avant Browser, B-Line, Baidu Browser, Baidu Spark, Banshee, Barca, BashPodder, Beonex, BeyondPod, BlackBerry Browser, Boxee, bPod, Brave, 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, curl, Cyberfox, DAVdroid, dbrowser, Deepnet Explorer, 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, 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), HotJava, HTTP_Request2, 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, 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, Obigo, Odyssey Web Browser, Off By One, OkHttp, OmniWeb, ONE Browser, Openwave Mobile Browser, Opera, Opera Mini, Opera Mobile, Opera Next, Oregano, Otter Browser, Outlook Express, Overcast, Pale Moon, Palm Blazer, Palm Pre, Palm WebPro, Palmscape, Perl, Phoenix, Pinterest, Player FM, Pocket Casts, Podcasts, Podcat, Podcatcher Deluxe, Podkicker, Polaris, Polarity, Postbox, PritTorrent, Puffin, Pulp, Python Requests, Python urllib, QQ Browser, QuickTime, QupZilla, Qutebrowser, ReadKit, Reeder, Rekonq, RockMelt, RSS Bandit, RSS Junkie, RSSOwl, 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, The Bat!, Thunderbird, Tizen Browser, TweakStyle, UC Browser, Vision Mobile Browser, Vivaldi, VLC, Waterfox, WebPositive, WeChat, WeTab Browser, Wget, WhatsApp, Winamp, Windows Media Player, wOSBrowser, WWW-Mechanize, XBMC, Xiino, Yandex Browser, YouTube
|
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
146
|
|
147
147
|
### Devices
|
148
148
|
|
149
|
-
3Q, 4Good, Acer, Ainol, Airness, Airties, Alcatel, Allview, Altech UEC, Amazon, Amoi, Apple, Archos, Arnova, ARRIS, Asus, Audiovox, Avvio, Axxion, Azumi Mobile, BangOlufsen, Barnes & Noble, Becker, Beetel, BenQ, BenQ-Siemens, BGH, Bird, Bitel, Blackview, Blaupunkt, Blu, Bmobile, Boway, bq, Bravis, Brondi, Bush, Capitel, Captiva, Carrefour, Casio, Cat, Celkon, Changhong, Cherry Mobile, China Mobile, CnM, Coby Kyros, Compal, ConCorde, Condor, Coolpad, Cowon, CreNova, Cricket, Crius Mea, Crosscall, Cube, CUBOT, Cyrus, Danew, Datang, Dbtel, Dell, Denver, Desay, DEXP, Dicam, Digma, DMM, DNS, DoCoMo, Doogee, Doov, Dopod, Doro, Dune HD, E-Boda, Easypix, EBEST, ECS, EKO, Elephone, Energy Sistem, Ericsson, Ericy, Eton, eTouch, Evertek, Evolveo, Explay, Ezio, Ezze, Fairphone, Fly, Foxconn, Freetel, Fujitsu, Garmin-Asus, Gemini, Gigabyte, Gigaset, Gionee, GOCLEVER, Goly, Google, Gradiente, Grundig, Haier, Hasee, Hi-Level, Hisense, Homtom, Hosin, HP, HTC, Huawei, Humax, Hyundai, i-Joy, i-mate, i-mobile, iBall, iBerry, IconBIT, Ikea, iKoMo, iNew, Infinix, Inkti, Innostream, INQ, Intek, Intex, Inverto, iOcean, iTel, JAY-Tech, Jiayu, Jolla, K-Touch, Karbonn, Kazam, KDDI, Kiano, Kingsun, Komu, Konka, Konrow, Koobee, KOPO, Koridy, KT-Tech, Kumai, Kyocera, Landvo, Lanix, Lava, LCT, Le Pan, LeEco, Lenco, Lenovo, Lexand, Lexibook, LG, Lingwin, Loewe, Logicom, LYF, M.T.T., Majestic, Manta Multimedia, Mecer, Mediacom, MediaTek, Medion, MEEG, Meizu, Memup, Metz, MEU, MicroMax, Microsoft, Mio, Mitsubishi, MIXC, MLLED, Mobistel, Modecom, Mofut, Motorola, Mpman, MSI, MyPhone, NEC, Neffos, Netgear, Newgen, Nexian, NextBook, NGM, Nikon, Nintendo, Noain, Noblex, Nokia, Nomi, Nous, Nvidia, O2, Odys, Onda, OnePlus, OPPO, Opsson, Orange, Ouki, OUYA, Overmax, Oysters, Palm, Panasonic, Pantech, PEAQ, Pentagram, Philips, phoneOne, Pioneer, Ployer, Point of View, Polaroid, PolyPad, Pomp, Positivo, PPTV, Prestigio, ProScan, PULID, Qilive, QMobile, Qtek, Quechua, Ramos, RCA Tablets, Readboy, Rikomagic, RIM, Roku, Rover, Sagem, Samsung, Sanyo, Sega, Selevision, Sencor, Sendo, Senseit, SFR, Sharp, Siemens, Skyworth, Smart, Smartfren, Smartisan, Softbank, Sony, Spice, Star, STK, Stonex, Storex, Sumvision, SunVan, SuperSonic, Supra, Symphony, T-Mobile, TB Touch, TCL, TechniSat, TechnoTrend, Teclast, Tecno Mobile, Telefunken, Telenor, Telit, Tesco, Tesla, teXet, ThL, Thomson, TIANYU, TiPhone, Tolino, Toplux, Toshiba, TrekStor, Trevi, Tunisie Telecom, Turbo-X, TVC, Ulefone, UMIDIGI, Uniscope, Unknown, Unowhy, UTStarcom, Vastking, Vertu, Verykool, Vestel, Videocon, Videoweb, ViewSonic, Vitelcom, Vivo, Vizio, VK Mobile, Vodafone, Voto, Voxtel, Walton, WellcoM, Wexler, Wiko, Wileyfox, Wolder, Wolfgang, Wonu, Woxter, Xiaomi, Xolo, Yarvik, Ytone, Yuandao, Yusun, Zeemi, Zen, Zonda, Zopo, ZTE
|
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
150
|
|
151
151
|
## Maintainers
|
152
152
|
|
data/Rakefile
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rake'
|
2
4
|
require 'rake/testtask'
|
3
5
|
|
4
|
-
|
6
|
+
$LOAD_PATH.unshift 'lib'
|
5
7
|
require 'device_detector'
|
6
8
|
|
7
9
|
Rake::TestTask.new do |t|
|
@@ -12,14 +14,16 @@ end
|
|
12
14
|
task default: :test
|
13
15
|
|
14
16
|
task :detectable_names do
|
15
|
-
|
17
|
+
require 'Date'
|
18
|
+
|
19
|
+
bot_names = DeviceDetector::Bot.new.send(:regexes).map { |r| r[:name] }.uniq.sort_by(&:downcase)
|
16
20
|
bot_names.delete('$1')
|
17
|
-
client_names = DeviceDetector::Client.new.send(:regexes).map { |r| r[:name] }.uniq.sort_by
|
21
|
+
client_names = DeviceDetector::Client.new.send(:regexes).map { |r| r[:name] }.uniq.sort_by(&:downcase)
|
18
22
|
client_names.delete('$1')
|
19
23
|
device = DeviceDetector::Device.new
|
20
24
|
device_paths = device.send(:filepaths)
|
21
25
|
device_regexes = device.send(:load_regexes, device_paths)
|
22
|
-
device_names = device_regexes.flat_map { |dn| dn[1].keys }.uniq.sort_by
|
26
|
+
device_names = device_regexes.flat_map { |dn| dn[1].keys }.uniq.sort_by(&:downcase)
|
23
27
|
|
24
28
|
today = Date.today.strftime
|
25
29
|
|
@@ -41,8 +45,8 @@ task :detectable_names do
|
|
41
45
|
puts
|
42
46
|
end
|
43
47
|
|
44
|
-
PIWIK_REPO_URL = 'https://github.com/
|
45
|
-
PIWIK_CHECKOUT_LOCATION = '/tmp/
|
48
|
+
PIWIK_REPO_URL = 'https://github.com/matomo-org/device-detector'
|
49
|
+
PIWIK_CHECKOUT_LOCATION = '/tmp/matomo_device_detector'
|
46
50
|
|
47
51
|
def get_latest_piwik_checkout
|
48
52
|
if File.exist?(PIWIK_CHECKOUT_LOCATION)
|
@@ -54,21 +58,21 @@ end
|
|
54
58
|
|
55
59
|
desc 'update regex database from piwik project'
|
56
60
|
task :update_regexes do
|
57
|
-
top = File.expand_path(
|
61
|
+
top = File.expand_path(__dir__)
|
58
62
|
get_latest_piwik_checkout
|
59
63
|
system "cp -R #{PIWIK_CHECKOUT_LOCATION}/regexes/* #{top}/regexes"
|
60
64
|
end
|
61
65
|
|
62
66
|
desc 'update fixtures from piwik project'
|
63
67
|
task :update_fixtures do
|
64
|
-
top = File.expand_path(
|
68
|
+
top = File.expand_path(__dir__)
|
65
69
|
get_latest_piwik_checkout
|
66
70
|
|
67
71
|
fixture_mappings = [
|
68
|
-
{target_path: "#{top}/spec/fixtures/detector", source_path: 'Tests/fixtures/*.yml'},
|
69
|
-
{target_path: "#{top}/spec/fixtures/client", source_path: 'Tests/Parser/Client/fixtures/*.yml'},
|
70
|
-
{target_path: "#{top}/spec/fixtures/parser", source_path: 'Tests/Parser/fixtures/*.yml'},
|
71
|
-
{target_path: "#{top}/spec/fixtures/device", source_path: 'Tests/Parser/Devices/fixtures/*.yml'}
|
72
|
+
{ target_path: "#{top}/spec/fixtures/detector", source_path: 'Tests/fixtures/*.yml' },
|
73
|
+
{ target_path: "#{top}/spec/fixtures/client", source_path: 'Tests/Parser/Client/fixtures/*.yml' },
|
74
|
+
{ target_path: "#{top}/spec/fixtures/parser", source_path: 'Tests/Parser/fixtures/*.yml' },
|
75
|
+
{ target_path: "#{top}/spec/fixtures/device", source_path: 'Tests/Parser/Devices/fixtures/*.yml' }
|
72
76
|
]
|
73
77
|
|
74
78
|
fixture_mappings.each do |mapping|
|
data/lib/device_detector.rb
CHANGED
@@ -28,6 +28,10 @@ class DeviceDetector
|
|
28
28
|
client.full_version
|
29
29
|
end
|
30
30
|
|
31
|
+
def os_family
|
32
|
+
os.family
|
33
|
+
end
|
34
|
+
|
31
35
|
def os_name
|
32
36
|
os.name
|
33
37
|
end
|
@@ -47,6 +51,17 @@ class DeviceDetector
|
|
47
51
|
def device_type
|
48
52
|
t = device.type
|
49
53
|
|
54
|
+
# Chrome on Android passes the device type based on the keyword 'Mobile'
|
55
|
+
# If it is present the device should be a smartphone, otherwise it's a tablet
|
56
|
+
# See https://developer.chrome.com/multidevice/user-agent#chrome_for_android_user_agent
|
57
|
+
if t.nil? && os.family == 'Android' && ['Chrome', 'Chrome Mobile'].include?(name)
|
58
|
+
if user_agent =~ build_regex('Chrome\/[\.0-9]* Mobile')
|
59
|
+
t = 'smartphone'
|
60
|
+
elsif user_agent =~ build_regex('Chrome\/[\.0-9]* (?!Mobile)')
|
61
|
+
t = 'tablet'
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
50
65
|
if t.nil? && android_tablet_fragment? || opera_tablet?
|
51
66
|
t = 'tablet'
|
52
67
|
end
|
@@ -1,7 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class DeviceDetector
|
2
4
|
class MemoryCache
|
3
|
-
|
4
5
|
DEFAULT_MAX_KEYS = 5000
|
6
|
+
STORES_NIL_VALUE = :__is_nil__
|
5
7
|
|
6
8
|
attr_reader :data, :max_keys, :lock
|
7
9
|
private :lock
|
@@ -15,31 +17,37 @@ class DeviceDetector
|
|
15
17
|
def set(key, value)
|
16
18
|
lock.synchronize do
|
17
19
|
purge_cache
|
18
|
-
|
20
|
+
# convert nil values into symbol so we know a value is present
|
21
|
+
cache_value = value.nil? ? STORES_NIL_VALUE : value
|
22
|
+
data[String(key)] = cache_value
|
23
|
+
value
|
19
24
|
end
|
20
25
|
end
|
21
26
|
|
22
27
|
def get(key)
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
def key?(string_key)
|
27
|
-
data.key?(string_key)
|
28
|
+
value, _hit = get_hit(key)
|
29
|
+
value
|
28
30
|
end
|
29
31
|
|
30
32
|
def get_or_set(key, value = nil)
|
31
33
|
string_key = String(key)
|
32
34
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
end
|
35
|
+
result, hit = get_hit(string_key)
|
36
|
+
return result if hit
|
37
|
+
|
38
|
+
value = yield if block_given?
|
39
|
+
set(string_key, value)
|
39
40
|
end
|
40
41
|
|
41
42
|
private
|
42
43
|
|
44
|
+
def get_hit(key)
|
45
|
+
value = data[String(key)]
|
46
|
+
is_hit = !value.nil? || value == STORES_NIL_VALUE
|
47
|
+
value = nil if value == STORES_NIL_VALUE
|
48
|
+
[value, is_hit]
|
49
|
+
end
|
50
|
+
|
43
51
|
def purge_cache
|
44
52
|
key_size = data.size
|
45
53
|
|
@@ -50,6 +58,5 @@ class DeviceDetector
|
|
50
58
|
data.keys.first(amount_of_keys).each { |key| data.delete(key) }
|
51
59
|
end
|
52
60
|
end
|
53
|
-
|
54
61
|
end
|
55
62
|
end
|
data/lib/device_detector/os.rb
CHANGED
@@ -60,6 +60,7 @@ class DeviceDetector
|
|
60
60
|
'DFB' => 'DragonFly',
|
61
61
|
'FED' => 'Fedora',
|
62
62
|
'FOS' => 'Firefox OS',
|
63
|
+
'FIR' => 'Fire OS',
|
63
64
|
'BSD' => 'FreeBSD',
|
64
65
|
'GNT' => 'Gentoo',
|
65
66
|
'GTV' => 'Google TV',
|
@@ -67,6 +68,7 @@ class DeviceDetector
|
|
67
68
|
'HAI' => 'Haiku OS',
|
68
69
|
'IRI' => 'IRIX',
|
69
70
|
'INF' => 'Inferno',
|
71
|
+
'KOS' => 'KaiOS',
|
70
72
|
'KNO' => 'Knoppix',
|
71
73
|
'KBT' => 'Kubuntu',
|
72
74
|
'LIN' => 'GNU/Linux',
|
@@ -110,6 +112,7 @@ class DeviceDetector
|
|
110
112
|
'WTV' => 'WebTV',
|
111
113
|
'WIN' => 'Windows',
|
112
114
|
'WCE' => 'Windows CE',
|
115
|
+
'WIO' => 'Windows IoT',
|
113
116
|
'WMO' => 'Windows Mobile',
|
114
117
|
'WPH' => 'Windows Phone',
|
115
118
|
'WRT' => 'Windows RT',
|
@@ -124,14 +127,14 @@ class DeviceDetector
|
|
124
127
|
DOWNCASED_OPERATING_SYSTEMS = OPERATING_SYSTEMS.each_with_object({}){|(short,long),h| h[long.downcase] = short}
|
125
128
|
|
126
129
|
OS_FAMILIES = {
|
127
|
-
'Android' => ['AND', 'CYN', 'REM', 'RZD', 'MLD', 'MCD', 'YNS'],
|
130
|
+
'Android' => ['AND', 'CYN', 'FIR', 'REM', 'RZD', 'MLD', 'MCD', 'YNS'],
|
128
131
|
'AmigaOS' => ['AMG', 'MOR'],
|
129
132
|
'Apple TV' => ['ATV'],
|
130
133
|
'BlackBerry' => ['BLB', 'QNX'],
|
131
134
|
'Brew' => ['BMP'],
|
132
135
|
'BeOS' => ['BEO', 'HAI'],
|
133
136
|
'Chrome OS' => ['COS'],
|
134
|
-
'Firefox OS' => ['FOS'],
|
137
|
+
'Firefox OS' => ['FOS', 'KOS'],
|
135
138
|
'Gaming Console' => ['WII', 'PS3'],
|
136
139
|
'Google TV' => ['GTV'],
|
137
140
|
'IBM' => ['OS2'],
|
@@ -146,7 +149,7 @@ class DeviceDetector
|
|
146
149
|
'Unix' => ['SOS', 'AIX', 'HPX', 'BSD', 'NBS', 'OBS', 'DFB', 'SYL', 'IRI', 'T64', 'INF'],
|
147
150
|
'WebTV' => ['WTV'],
|
148
151
|
'Windows' => ['WIN'],
|
149
|
-
'Windows Mobile' => ['WPH', 'WMO', 'WCE', 'WRT']
|
152
|
+
'Windows Mobile' => ['WPH', 'WMO', 'WCE', 'WRT', 'WIO']
|
150
153
|
}
|
151
154
|
|
152
155
|
FAMILY_TO_OS = OS_FAMILIES.each_with_object({}) do |(family,oss),h|
|
data/regexes/bots.yml
CHANGED
@@ -53,6 +53,14 @@
|
|
53
53
|
name: 'Alexa Internet'
|
54
54
|
url: 'http://www.alexa.com'
|
55
55
|
|
56
|
+
- regex: 'alexa site audit'
|
57
|
+
name: 'Alexa Site Audit'
|
58
|
+
category: 'Site Monitor'
|
59
|
+
url: 'http://www.alexa.com/help/webmasters'
|
60
|
+
producer:
|
61
|
+
name: 'Alexa Internet'
|
62
|
+
url: 'http://www.alexa.com'
|
63
|
+
|
56
64
|
- regex: 'AmorankSpider'
|
57
65
|
name: 'Amorank Spider'
|
58
66
|
category: 'Crawler'
|
@@ -77,6 +85,14 @@
|
|
77
85
|
name: 'Apple Inc'
|
78
86
|
url: 'http://www.apple.com'
|
79
87
|
|
88
|
+
- regex: 'Arachni'
|
89
|
+
name: 'Arachni'
|
90
|
+
category: 'Security Checker'
|
91
|
+
url: 'http://www.arachni-scanner.com'
|
92
|
+
producer:
|
93
|
+
name: 'Sarosys LLC'
|
94
|
+
url: 'http://www.sarosys.com/'
|
95
|
+
|
80
96
|
- regex: 'Castro 2, Episode Duration Lookup'
|
81
97
|
name: 'Castro 2'
|
82
98
|
category: 'Service Agent'
|
@@ -498,6 +514,14 @@
|
|
498
514
|
name: 'NTT Resonant'
|
499
515
|
url: 'http://goo.ne.jp'
|
500
516
|
|
517
|
+
- regex: 'Google Search Console'
|
518
|
+
name: 'Google Search Console'
|
519
|
+
category: 'Crawler'
|
520
|
+
url: 'https://search.google.com/search-console/about'
|
521
|
+
producer:
|
522
|
+
name: 'Google Inc.'
|
523
|
+
url: 'http://www.google.com'
|
524
|
+
|
501
525
|
- regex: 'Google Page Speed Insights'
|
502
526
|
name: 'Google PageSpeed Insights'
|
503
527
|
category: 'Site Monitor'
|
@@ -562,7 +586,7 @@
|
|
562
586
|
name: 'Visual Meta'
|
563
587
|
url: 'https://www.shopalike.cz/'
|
564
588
|
|
565
|
-
- regex: 'Googlebot(-Mobile|-Image|-Video|-News)?|Feedfetcher-Google|Google-Test|Google-Site-Verification|Google Web Preview|AdsBot-Google(-Mobile)?|Google-Adwords-Instant|Mediapartners-Google|Google.*/\+/web/snippet|GoogleProducer|Google[ -]Publisher[ -]Plugin|Google-Shopping-Quality'
|
589
|
+
- regex: 'Googlebot(-Mobile|-Image|-Video|-News)?|Feedfetcher-Google|Google-Test|Google-Site-Verification|Google Web Preview|AdsBot-Google(-Mobile)?|Google-Adwords-Instant|APIs-Google|Mediapartners-Google|Google.*/\+/web/snippet|GoogleProducer|Google[ -]Publisher[ -]Plugin|Google-Shopping-Quality|Google-Adwords-DisplayAds|Google-Assess|Google-AdWords-Express|Google-speakr|Google-Read-Aloud'
|
566
590
|
name: 'Googlebot'
|
567
591
|
category: 'Search bot'
|
568
592
|
url: 'http://www.google.com/bot.html'
|
@@ -704,6 +728,10 @@
|
|
704
728
|
name: 'Robert Graham'
|
705
729
|
url: 'https://github.com/robertdavidgraham'
|
706
730
|
|
731
|
+
- regex: 'Mastodon/'
|
732
|
+
name: 'Mastodon Bot'
|
733
|
+
category: 'Social Media Agent'
|
734
|
+
|
707
735
|
- regex: 'meanpathbot'
|
708
736
|
name: 'Meanpath Bot'
|
709
737
|
category: 'Search bot'
|
@@ -839,7 +867,7 @@
|
|
839
867
|
- regex: 'Octopus [0-9]'
|
840
868
|
name: 'Octopus'
|
841
869
|
|
842
|
-
- regex: '
|
870
|
+
- regex: 'omgili(?:bot)?'
|
843
871
|
name: 'Omgili bot'
|
844
872
|
category: 'Search bot'
|
845
873
|
url: 'http://www.omgili.com/Crawler.html'
|
@@ -931,7 +959,15 @@
|
|
931
959
|
producer:
|
932
960
|
name: 'Pingdom AB'
|
933
961
|
url: 'https://www.pingdom.com'
|
934
|
-
|
962
|
+
|
963
|
+
- regex: 'Quora Link Preview'
|
964
|
+
name: 'Quora Link Preview'
|
965
|
+
category: 'Crawler'
|
966
|
+
url: ''
|
967
|
+
producer:
|
968
|
+
name: 'Quora'
|
969
|
+
url: 'http://www.quora.com'
|
970
|
+
|
935
971
|
- regex: 'RamblerMail'
|
936
972
|
name: 'RamblerMail Image Proxy'
|
937
973
|
category: 'Crawler'
|
@@ -1211,7 +1247,7 @@
|
|
1211
1247
|
category: 'Search bot'
|
1212
1248
|
|
1213
1249
|
- regex: 'TelegramBot'
|
1214
|
-
name: '
|
1250
|
+
name: 'TelegramBot'
|
1215
1251
|
url: 'https://telegram.org/blog/bot-revolution'
|
1216
1252
|
|
1217
1253
|
- regex: 'TLSProbe'
|
@@ -1326,6 +1362,14 @@
|
|
1326
1362
|
name: 'WiseGuys'
|
1327
1363
|
url: 'http://www.wise-guys.nl/'
|
1328
1364
|
|
1365
|
+
- regex: 'vkShare; '
|
1366
|
+
name: 'VK Share Button'
|
1367
|
+
category: 'Crawler'
|
1368
|
+
url: 'http://vk.com/dev/Share'
|
1369
|
+
producer:
|
1370
|
+
name: 'VK'
|
1371
|
+
url: 'http://vk.com/'
|
1372
|
+
|
1329
1373
|
- regex: 'VSMCrawler'
|
1330
1374
|
name: 'Visual Site Mapper Crawler'
|
1331
1375
|
category: 'Crawler'
|
@@ -1389,6 +1433,11 @@
|
|
1389
1433
|
name: 'AliasIO'
|
1390
1434
|
url: 'https://github.com/AliasIO'
|
1391
1435
|
|
1436
|
+
- regex: 'PTST/'
|
1437
|
+
name: 'WebPageTest'
|
1438
|
+
category: 'Site Monitor'
|
1439
|
+
url: 'https://www.webpagetest.org'
|
1440
|
+
|
1392
1441
|
- regex: 'WeSEE(:Search)?'
|
1393
1442
|
name: 'WeSEE:Search'
|
1394
1443
|
category: 'Search bot'
|
@@ -1461,7 +1510,7 @@
|
|
1461
1510
|
name: 'Yahoo! Inc.'
|
1462
1511
|
url: 'http://www.yahoo.com'
|
1463
1512
|
|
1464
|
-
- regex: 'Yandex(SpravBot|ScreenshotBot|MobileBot|AccessibilityBot|ForDomain|Vertis|Market|Catalog|Calendar|Sitelinks|AdNet|Pagechecker|Webmaster|Media|Video|Bot|Images|Antivirus|Direct|Blogs|Favicons|ImageResizer|News(links)?|Metrika|\.Gazeta Bot)|YaDirectFetcher'
|
1513
|
+
- regex: 'Yandex(SpravBot|ScreenshotBot|MobileBot|AccessibilityBot|ForDomain|Vertis|Market|Catalog|Calendar|Sitelinks|AdNet|Pagechecker|Webmaster|Media|Video|Bot|Images|Antivirus|Direct|Blogs|Favicons|ImageResizer|Verticals|News(links)?|Metrika|\.Gazeta Bot)|YaDirectFetcher'
|
1465
1514
|
name: 'Yandex Bot'
|
1466
1515
|
category: 'Search bot'
|
1467
1516
|
url: 'http://www.yandex.com/bots'
|
@@ -1567,6 +1616,14 @@
|
|
1567
1616
|
name: 'Site24x7'
|
1568
1617
|
url: 'https://www.site24x7.com'
|
1569
1618
|
|
1619
|
+
- regex: 's~snapchat-proxy'
|
1620
|
+
name: 'Snapchat Proxy'
|
1621
|
+
category: 'Crawler'
|
1622
|
+
url: 'https://www.snapchat.com'
|
1623
|
+
producer:
|
1624
|
+
name: 'Snapchat Inc.'
|
1625
|
+
url: 'https://www.snapchat.com'
|
1626
|
+
|
1570
1627
|
- regex: "Let's Encrypt validation server"
|
1571
1628
|
name: "Let's Encrypt Validation"
|
1572
1629
|
category: 'Service Agent'
|
@@ -1662,7 +1719,10 @@
|
|
1662
1719
|
- regex: 'Server Density Service Monitoring.*'
|
1663
1720
|
name: 'Server Density'
|
1664
1721
|
|
1665
|
-
- regex: '
|
1722
|
+
- regex: 'RSSRadio \(Push Notification Scanner;support@dorada\.co\.uk\)'
|
1723
|
+
name: 'RSSRadio Bot'
|
1724
|
+
|
1725
|
+
- regex: '(A6-Indexer|nuhk|TsolCrawler|Yammybot|Openbot|Gulper Web Bot|grub-client|Download Demon|SearchExpress|Microsoft URL Control|borg|altavista|dataminr.com|tweetedtimes.com|TrendsmapResolver|teoma|blitzbot|oegp|furlbot|http%20client|polybot|htdig|mogimogi|larbin|scrubby|searchsight|seekbot|semanticdiscovery|snappy|vortex(?! Build)|zeal|fast-webcrawler|converacrawler|dataparksearch|findlinks|BrowserMob|HttpMonitor|ThumbShotsBot|URL2PNG|ZooShot|GomezA|Google SketchUp|Read%20Later|Minimo|RackspaceBot)'
|
1666
1726
|
name: 'Generic Bot'
|
1667
1727
|
|
1668
1728
|
- regex: '^sentry'
|
@@ -1671,6 +1731,12 @@
|
|
1671
1731
|
name: 'Sentry'
|
1672
1732
|
url: 'https://sentry.io'
|
1673
1733
|
|
1734
|
+
- regex: '^Spotify'
|
1735
|
+
name: 'Spotify'
|
1736
|
+
producer:
|
1737
|
+
name: 'Spotify'
|
1738
|
+
url: 'https://www.spotify.com'
|
1739
|
+
|
1674
1740
|
# Generic detections
|
1675
1741
|
|
1676
1742
|
- regex: 'Nutch'
|
@@ -1681,5 +1747,5 @@
|
|
1681
1747
|
name: 'The Apache Software Foundation'
|
1682
1748
|
url: 'http://www.apache.org/foundation/'
|
1683
1749
|
|
1684
|
-
- regex: '[a-z0-9\-_]*((?<!cu|power )bot(?! TAB| ?5[0-9])|crawler|crawl|checker|archiver|transcoder|spider)([^a-z]|$)'
|
1750
|
+
- regex: '[a-z0-9\-_]*((?<!cu|power[ _]|m[ _])bot(?![ _]TAB|[ _]?5[0-9])|crawler|crawl|checker|archiver|transcoder|spider)([^a-z]|$)'
|
1685
1751
|
name: 'Generic Bot'
|