device_detector 0.8.2 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +11 -3
  3. data/CHANGELOG.md +10 -5
  4. data/README.md +4 -4
  5. data/Rakefile +24 -19
  6. data/device_detector.gemspec +1 -1
  7. data/lib/device_detector.rb +25 -3
  8. data/lib/device_detector/device.rb +1 -1
  9. data/lib/device_detector/model_extractor.rb +4 -0
  10. data/lib/device_detector/os.rb +8 -3
  11. data/lib/device_detector/parser.rb +1 -1
  12. data/lib/device_detector/version.rb +1 -1
  13. data/regexes/bots.yml +211 -27
  14. data/regexes/client/browsers.yml +192 -58
  15. data/regexes/client/feed_readers.yml +6 -0
  16. data/regexes/client/libraries.yml +4 -0
  17. data/regexes/client/mediaplayers.yml +8 -4
  18. data/regexes/client/mobile_apps.yml +39 -4
  19. data/regexes/client/pim.yml +4 -0
  20. data/regexes/device/mobiles.yml +1803 -242
  21. data/regexes/device/televisions.yml +53 -11
  22. data/regexes/oss.yml +180 -12
  23. data/regexes/vendorfragments.yml +1 -0
  24. data/spec/device_detector/concrete_user_agent_spec.rb +36 -0
  25. data/spec/device_detector/detector_fixtures_spec.rb +1 -1
  26. data/spec/fixtures/client/browser.yml +313 -2
  27. data/spec/fixtures/client/feed_reader.yml +8 -1
  28. data/spec/fixtures/client/library.yml +7 -1
  29. data/spec/fixtures/client/mediaplayer.yml +6 -1
  30. data/spec/fixtures/client/mobile_app.yml +6 -0
  31. data/spec/fixtures/client/pim.yml +6 -0
  32. data/spec/fixtures/detector/bots.yml +2307 -612
  33. data/spec/fixtures/detector/camera.yml +6 -0
  34. data/spec/fixtures/detector/car_browser.yml +1 -0
  35. data/spec/fixtures/detector/console.yml +14 -0
  36. data/spec/fixtures/detector/desktop.yml +308 -48
  37. data/spec/fixtures/detector/feature_phone.yml +63 -0
  38. data/spec/fixtures/detector/feed_reader.yml +50 -26
  39. data/spec/fixtures/detector/mediaplayer.yml +28 -6
  40. data/spec/fixtures/detector/mobile_apps.yml +117 -0
  41. data/spec/fixtures/detector/phablet.yml +1066 -183
  42. data/spec/fixtures/detector/portable_media_player.yml +8 -0
  43. data/spec/fixtures/detector/smart_display.yml +39 -0
  44. data/spec/fixtures/detector/smartphone-1.yml +9469 -0
  45. data/spec/fixtures/detector/smartphone-2.yml +9414 -0
  46. data/spec/fixtures/detector/smartphone-3.yml +9396 -0
  47. data/spec/fixtures/detector/smartphone-4.yml +5742 -0
  48. data/spec/fixtures/detector/smartphone.yml +3446 -23680
  49. data/spec/fixtures/detector/tablet-1.yml +9495 -0
  50. data/spec/fixtures/detector/tablet-2.yml +248 -0
  51. data/spec/fixtures/detector/tablet.yml +2786 -7961
  52. data/spec/fixtures/detector/tv.yml +1376 -210
  53. data/spec/fixtures/detector/unknown.yml +205 -509
  54. data/spec/fixtures/device/console.yml +6 -0
  55. data/spec/fixtures/parser/oss.yml +194 -1
  56. data/spec/fixtures/parser/vendorfragments.yml +6 -0
  57. metadata +16 -6
  58. data/spec/fixtures/parser/bots.yml +0 -2055
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 81f8d553f5a16ebe349f683f2a37c34c0cdb59f5
4
- data.tar.gz: d12f646a552f2b167d28a8c20fdc71de66108964
3
+ metadata.gz: 436bad611848de9243a2d405a28991780ebe86cf
4
+ data.tar.gz: d25b0cadb1959e32e1a2adf362c246d5f77b7050
5
5
  SHA512:
6
- metadata.gz: 2185e70c4be666e91f66146fe929ce58438b499a8c10c1d4c8595e888cd14cae1c8b87c493237f9518f179ac5c17c5afd55e34713fe0e6385dd2dace85781a4b
7
- data.tar.gz: d3c90c155ba23d60f779cb86711eb56b97fd10aa2e0337f9311ddab5ce27a095d5c2daac05efcd12203ee778a4f5db57d6d1f3abaf254dce2f3215750457989b
6
+ metadata.gz: 6a03c4141c003f03a5cc30a37ecb39fe26bddfbcee014867f96af8f2504f6abaa4bddc766c5236b5d7381b486611b3f5d6eb9bfa195a1756bcfa885e08e3a6bd
7
+ data.tar.gz: d53a0a43694c932854c149fac2af81be4c8bf5e0b427c0c523c6fc2aef060db183d650619c25f1cb531cd0abea07f986fd5a6169edd8c716c9ae89077c016408
data/.travis.yml CHANGED
@@ -1,10 +1,18 @@
1
1
  language: ruby
2
+ sudo: false
2
3
  rvm:
3
4
  - 1.9.3
4
- - 2.0.0-p598
5
- - 2.1.0
6
- - 2.2.0
5
+ - 2.0.0-p648
6
+ - 2.1.10
7
+ - 2.2.5
8
+ - 2.3.1
7
9
  - ruby-head
8
10
  - rbx-2
11
+ before_install:
12
+ - gem update --system
13
+ - gem --version
14
+ - gem update bundler
15
+ - bundler --version
16
+ cache: bundler
9
17
  script:
10
18
  bundle exec rake test
data/CHANGELOG.md CHANGED
@@ -1,22 +1,27 @@
1
1
  # Change Log
2
2
 
3
+ ## [0.9.0]
4
+ - Preparing for the 1.0.0 release. This version (with minor bumps) will be promoted to 1.0.0 once the release has been proven stable
5
+ - Updated regex files from upstream
6
+ - Updated test fixtures from upstream
7
+
3
8
  ## [0.8.2]
4
- - Added device brand support. Thanks to [dnswus](https://github.com/dnswus).
9
+ - Added device brand support. Thanks to [dnswus](https://github.com/dnswus)
5
10
 
6
11
  ## [0.8.1]
7
12
  - Added Instacast detection rules
8
13
  - Updated test fixtures
9
14
 
10
15
  ## [0.8.0]
11
- - Added a better and more robust device detection. Thanks to [skaes](https://github.com/skaes).
12
- - Added test fixture from the piwik project.
16
+ - Added a better and more robust device detection. Thanks to [skaes](https://github.com/skaes)
17
+ - Added test fixture from the piwik project
13
18
 
14
19
  ## [0.7.0]
15
- - [Issue #8](https://github.com/podigee/device_detector/issues/8) Fixed Mac OS X full version format. Thanks to [aaronchi](https://github.com/aaronchi) for reporting.
20
+ - [Issue #8](https://github.com/podigee/device_detector/issues/8) Fixed Mac OS X full version format. Thanks to [aaronchi](https://github.com/aaronchi) for reporting
16
21
 
17
22
  ## [0.6.0]
18
23
 
19
- - [Issue #7](https://github.com/podigee/device_detector/issues/7) Fixed missing name extraction from regexp. Thanks to [janxious](https://github.com/janxious) for reporting.
24
+ - [Issue #7](https://github.com/podigee/device_detector/issues/7) Fixed missing name extraction from regexp. Thanks to [janxious](https://github.com/janxious) for reporting
20
25
  - Optimized performance of name and version extraction, by using the built-in memory cache
21
26
  - Move specs from RSpec to the more lightweight Minitest
22
27
 
data/README.md CHANGED
@@ -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 2015-03-17
137
+ Updated on 2016-07-16
138
138
 
139
139
  ### Bots
140
140
 
141
- 360Spider, Aboundexbot, Acoon, AddThis.com, aHrefs Bot, Alexa Crawler, Amorank Spider, Analytics SEO Crawler, archive.org bot, Ask Jeeves, Backlink-Ceck.de, BacklinkCrawler, Baidu Spider, BingBot, Blekkobot, BLEXBot Crawler, Bloglovin, Bountii Bot, Browsershots, Butterfly Robot, CareerBot, ccBot crawler, Cliqzbot, CloudFlare Always Online, CommaFeed, Dazoobot, Discobot, DotBot, Easou Spider, EMail Exractor, ExaBot, ExactSeek Crawler, Ezooms, Facebook External Hit, Feedbin, FeedBurner, Feedly, Feedspot, Fever, Genieo Web filter, Goo, Google PageSpeed Insights, Googlebot, Heritrix, HTTPMon, IIS Site Analysis, Kouio, Linkdex Bot, LinkedIn Bot, Mail.Ru Bot, Magpie-Crawler, MagpieRSS, Meanpath Bot, Mixrank Bot, MJ12 Bot, MojeekBot, NalezenCzBot, Netcraft Survey Bot, Netvibes, NewsBlur, NewsGator, NLCrawler, Omgili bot, Openindex Spider, OpenLinkProfiler, OpenWebSpider, PaperLiBot, Picsearch bot, Pingdom Bot, QuerySeekerSpider, Reddit Bot, Rogerbot, Screaming Frog SEO Spider, ScreenerBot, Semrush Bot, Sensika Bot, SEOENGBot, Seznam Bot, ShopWiki, SilverReader, SimplePie, SISTRIX Crawler, Sogou Spider, Soso Spider, Superfeedr Bot, Spinn3r, Sputnik Bot, Survey Bot, TinEye Crawler, Tiny Tiny RSS, TurnitinBot, TweetedTimes Bot, Tweetmeme Bot, Twitterbot, Uptime Robot, URLAppendBot, Visual Site Mapper Crawler, Voila Bot, W3C CSS Validator, W3C I18N Checker, W3C Link Checker, W3C Markup Validation Service, W3C MobileOK Checker, W3C Unified Validator, WeSEE:Search, WebbCrawler, Wotbox, YaCy, Yahoo! Slurp, Yandex Bot, Yeti/Naverbot, Youdao Bot, Yunyun Bot, Zookabot, ZumBot, Yottaa Site Monitor, Lycos, Inktomi Slurp, Speedy, ScoutJet, NetResearchServer, Scooter, Gigabot, Charlotte, Pompos, ichiro, PagePeeker, WebThumbnail, Willow Internet Crawler, EmailWolf, NetLyzer FastProbe, Bot, Nutch-based Bot, Generic Bot
141
+ 360Spider, Aboundexbot, Acoon, AddThis.com, ADMantX, aHrefs Bot, Alexa Crawler, Amorank Spider, Analytics SEO Crawler, Applebot, archive.org bot, Ask Jeeves, Backlink-Ceck.de, BacklinkCrawler, Baidu Spider, BazQux Reader, BingBot, Blekkobot, BLEXBot Crawler, Bloglovin, Blogtrottr, Bountii Bot, Browsershots, BUbiNG, Butterfly Robot, CareerBot, ccBot crawler, Charlotte, Cliqzbot, CloudFlare Always Online, CommaFeed, Cốc Cốc Bot, Daum, Dazoobot, Discobot, Domain Re-Animator Bot, DotBot, Easou Spider, EMail Exractor, EmailWolf, ExaBot, ExactSeek Crawler, Ezooms, Facebook External Hit, Feed Wrangler, Feedbin, FeedBurner, Feedly, Feedspot, Fever, Generic Bot, Genieo Web filter, Gigabot, Gluten Free Crawler, Gmail Image Proxy, Goo, Google PageSpeed Insights, Google Partner Monitoring, Googlebot, Heritrix, HTTPMon, HubPages, ICC-Crawler, ichiro, IIS Site Analysis, Inktomi Slurp, Kouio, Larbin web crawler, Linkdex Bot, LinkedIn Bot, LTX71, Lycos, Magpie-Crawler, MagpieRSS, Mail.Ru Bot, Meanpath Bot, Mixrank Bot, MJ12 Bot, MojeekBot, Monitor.Us, NalezenCzBot, Netcraft Survey Bot, NetLyzer FastProbe, NetResearchServer, Netvibes, NewsBlur, NewsGator, NLCrawler, Nutch-based Bot, Omgili bot, Openindex Spider, OpenLinkProfiler, OpenWebSpider, Orange Bot, Outbrain, PagePeeker, PaperLiBot, PHP Server Monitor, Picsearch bot, Pingdom Bot, Pinterest, Pompos, QuerySeekerSpider, Reddit Bot, Rogerbot, ROI Hunter, Scooter, ScoutJet, Scrapy, Screaming Frog SEO Spider, ScreenerBot, Semrush Bot, Sensika Bot, SEOENGBot, Server Density, Seznam Bot, ShopWiki, SilverReader, SimplePie, SISTRIX Crawler, Site24x7 Website Monitoring, Skype URI Preview, Slackbot, Sogou Spider, Soso Spider, Speedy, Spinn3r, Sputnik Bot, Superfeedr Bot, Survey Bot, TelgramBot, TinEye Crawler, Tiny Tiny RSS, TurnitinBot, TweetedTimes Bot, Tweetmeme Bot, Twitterbot, Uptime Robot, URLAppendBot, Visual Site Mapper Crawler, W3C CSS Validator, W3C I18N Checker, W3C Link Checker, W3C Markup Validation Service, W3C MobileOK Checker, W3C Unified Validator, WebbCrawler, WebSitePulse, WebThumbnail, WeSEE:Search, Willow Internet Crawler, 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, Zookabot, ZumBot
142
142
 
143
143
  ### Clients
144
144
 
145
- Internet Explorer, Sailfish Browser, Camino, Fennec, MicroB, Avant Browser, Amigo, Bunjalloo, Iceweasel, WebPositive, Pale Moon, CometBird, IceDragon, Flock, Kapiko, Swiftfox, Firefox, ANTGalio, Espial TV Browser, RockMelt, Fireweb Navigator, Netscape, Opera Mobile, Opera Mini, Opera Next, Opera, Rekonq, CoolNovo, Comodo Dragon, ChromePlus, Conkeror, Konqueror, Baidu Browser, Baidu Spark, Yandex Browser, Vivaldi, Midori, Mercury, Maxthon, Puffin, Iron, Epiphany, Liebao, Sogou Explorer, QQ Browser, Chrome Mobile, Chrome Mobile iOS, Chrome Frame, Chromium, Chrome, UC Browser, Tizen Browser, Palm Blazer, Palm Pre, wOSBrowser, Palm WebPro, Jasmine, Lynx, NCSA Mosaic, ABrowse, Amaya, Amiga Voyager, Amiga Aweb, Arora, Beonex, BlackBerry Browser, BrowseX, Charon, Cheshire, Dillo, Dolphin, Elinks, Firebird, Fluid, Galeon, Google Earth, HotJava, IBrowse, iCab, Sleipnir, Lunascape, IE Mobile, Kazehakase, Kindle Browser, K-meleon, Links, Openwave Mobile Browser, OmniWeb, Phoenix, Mobile Silk, MIUI Browser, Nokia Browser, Nokia OSS Browser, Nokia Ovi Browser, NetFront Life, NetFront, NetPositive, Obigo, Off By One, Oregano, Polaris, SEMC-Browser, Shiira, Snowshoe, Sunrise, WeTab Browser, Xiino, Android Browser, Mobile Safari, Safari, Akregator, Apple PubSub, FeedDemon, Feeddler RSS Reader, JetBrains Omea Reader, Liferea, NetNewsWire, NewsBlur Mobile App, NewsBlur, Newsbeuter, Pulp, ReadKit, Reeder, RSS Bandit, RSS Junkie, RSSOwl, Wget, curl, Python Requests, Python urllib, Java, Perl, Banshee, Clementine, iTunes, FlyCast, MediaMonkey, Miro, NexPlayer, Nightingale, QuickTime, Songbird, SubStream, VLC, Winamp, Windows Media Player, XBMC, Stagefright, AndroidDownloadManager, FeedR, WeChat, Sina Weibo, Outlook Express, Microsoft Outlook, Thunderbird, Airmail, Lotus Notes, Barca, Postbox, The Bat!
145
+ 360 Browser, 360 Phone Browser, ABrowse, Airmail, Akregator, Amaya, Amiga Aweb, Amiga Voyager, Amigo, Android Browser, AndroidDownloadManager, ANT Fresco, ANTGalio, Apple PubSub, Arora, Atomic Web Browser, Avant Browser, Baidu Browser, Baidu Spark, Banshee, Barca, Beonex, BlackBerry Browser, Boxee, Brave, BrowseX, Bunjalloo, Camino, Charon, Cheshire, Chrome, Chrome Frame, Chrome Mobile, Chrome Mobile iOS, ChromePlus, Chromium, Clementine, Coc Coc, CometBird, Comodo Dragon, Conkeror, CoolNovo, curl, Deepnet Explorer, Dillo, Dolphin, Element Browser, Elinks, Epiphany, Espial TV Browser, Facebook, FeedDemon, Feeddler RSS Reader, FeedR, Fennec, Firebird, Firefox, Fireweb, Fireweb Navigator, Flock, Fluid, FlyCast, Galeon, Google Earth, Google Play Newsstand, Google Plus, Guzzle (PHP HTTP Client), HotJava, IBrowse, iCab, IceDragon, Iceweasel, IE Mobile, Instacast, Internet Explorer, Iron, 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, MediaMonkey, Mercury, MicroB, Microsoft Edge, Microsoft Outlook, Midori, Miro, MIUI Browser, Mobile Safari, Mobile Silk, NCSA Mosaic, NetFront, NetFront Life, NetNewsWire, NetPositive, Netscape, Newsbeuter, NewsBlur, NewsBlur Mobile App, NexPlayer, Nightingale, Nokia Browser, Nokia OSS Browser, Nokia Ovi Browser, Obigo, Odyssey Web Browser, Off By One, OmniWeb, ONE Browser, Openwave Mobile Browser, Opera, Opera Mini, Opera Mobile, Opera Next, Oregano, Otter Browser, Outlook Express, Pale Moon, Palm Blazer, Palm Pre, Palm WebPro, Palmscape, Perl, Phoenix, Pinterest, Polaris, Postbox, Puffin, Pulp, Python Requests, Python urllib, QQ Browser, QuickTime, 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, Stringer, SubStream, Sunrise, SuperBird, Swiftfox, The Bat!, Thunderbird, Tizen Browser, TweakStyle, UC Browser, Vision Mobile Browser, Vivaldi, VLC, WebPositive, WeChat, WeTab Browser, Wget, WhatsApp, Winamp, Windows Media Player, wOSBrowser, XBMC, Xiino, Yandex Browser, YouTube
146
146
 
147
147
  ### Devices
148
148
 
149
- 3Q, Acer, Airness, Alcatel, Amoi, Apple, Archos, Arnova, Asus, Audiovox, Avvio, Axxion, BBK, BangOlufsen, Barnes & Noble, Becker, Beetel, BenQ, BenQ-Siemens, Bird, Blu, Bmobile, Capitel, Cat, Celkon, Cherry Mobile, CnM, Coby Kyros, Compal, ConCorde, Coolpad, Cowon, CreNova, Cricket, Crius Mea, Cube, DMM, Danew, Dbtel, Dell, Denver, Dicam, DoCoMo, Doogee, Dopod, E-Boda, Easypix, Ericsson, Ericy, Evertek, Ezio, Ezze, Fly, Gemini, Gigabyte, Gigaset, Gionee, Google, Gradiente, Grundig, HP, HTC, Haier, Hisense, Huawei, Humax, INQ, Ikea, Infinix, Inkti, Innostream, Intek, Intex, Inverto, Jiayu, Jolla, K-Touch, KDDI, KT-Tech, Karbonn, Kazam, Kindle, Konka, Kyocera, LCT, LG, Lanix, Lava, Lenco, Lenovo, Lexibook, Loewe, Logicom, MEU, Manta Multimedia, MediaTek, Medion, Memup, Metz, MicroMax, Microsoft, Mio, Mitsubishi, Mobistel, Motorola, Mpman, MyPhone, NEC, NGM, Newgen, Nexian, Nikon, Nintendo, Nokia, O2, OPPO, OUYA, Onda, Opsson, Orange, Oysters, PEAQ, Palm, Panasonic, Pantech, Philips, Polaroid, PolyPad, Positivo, Prestigio, Qilive, Qtek, Quechua, RIM, Ramos, Rikomagic, Rover, SFR, Sagem, Samsung, Sanyo, Sega, Selevision, Sendo, Sharp, Siemens, Smart, Smartfren, Softbank, Sony, Spice, Storex, Sumvision, SuperSonic, Symphony, T-Mobile, TCL, TIANYU, TVC, TechniSat, TechnoTrend, Tecno Mobile, Telefunken, Telit, Tesla, Thomson, TiPhone, Tolino, Toplux, Toshiba, Tunisie Telecom, UTStarcom, VK Mobile, Vertu, Vestel, Videocon, Videoweb, ViewSonic, Vitelcom, Voxtel, Web TV, WellcoM, Wiko, Wolder, Wonu, Woxter, Xiaomi, Yuandao, ZTE, Zonda, Zopo, bq, eTouch, i-mate, i-mobile, iBall, iBerry, iKoMo, iTel, phoneOne, teXet
149
+ 3Q, Acer, Ainol, Airness, Airties, Alcatel, Allview, Altech UEC, Amazon, Amoi, Apple, Archos, Arnova, ARRIS, Asus, Audiovox, Avvio, Axxion, BangOlufsen, Barnes & Noble, Becker, Beetel, BenQ, BenQ-Siemens, Bird, Blu, Bmobile, Boway, bq, Brondi, Bush, Capitel, Captiva, Carrefour, Casio, Cat, Celkon, Changhong, Cherry Mobile, CnM, Coby Kyros, Compal, ConCorde, Coolpad, Cowon, CreNova, Cricket, Crius Mea, Crosscall, Cube, CUBOT, Danew, Datang, Dbtel, Dell, Denver, Desay, Dicam, DMM, DNS, DoCoMo, Doogee, Doov, Dopod, Dune HD, E-Boda, Easypix, EBEST, ECS, Elephone, Energy Sistem, Ericsson, Ericy, Eton, eTouch, Evertek, Ezio, Ezze, Fairphone, Fly, Foxconn, Fujitsu, Garmin-Asus, Gemini, Gigabyte, Gigaset, Gionee, GOCLEVER, Goly, Google, Gradiente, Grundig, Haier, Hasee, Hi-Level, Hisense, Hosin, HP, HTC, Huawei, Humax, Hyundai, i-Joy, i-mate, i-mobile, iBall, iBerry, Ikea, iKoMo, iNew, Infinix, Inkti, Innostream, INQ, Intek, Intex, Inverto, iOcean, iTel, Jiayu, Jolla, K-Touch, Karbonn, Kazam, KDDI, Kingsun, Komu, Konka, Koobee, KOPO, Koridy, KT-Tech, Kumai, Kyocera, Lanix, Lava, LCT, Le Pan, Lenco, Lenovo, Lexibook, LG, Lingwin, Loewe, Logicom, M.T.T., Majestic, Manta Multimedia, Mecer, Mediacom, MediaTek, Medion, MEEG, Meizu, Memup, Metz, MEU, MicroMax, Microsoft, Mio, Mitsubishi, MLLED, Mobistel, Mofut, Motorola, Mpman, MSI, MyPhone, NEC, Netgear, Newgen, Nexian, NextBook, NGM, Nikon, Nintendo, Noain, Nokia, Nomi, O2, Onda, OnePlus, OPPO, Opsson, Orange, Ouki, OUYA, Overmax, Oysters, Palm, Panasonic, Pantech, PEAQ, Philips, phoneOne, Pioneer, Ployer, Point of View, Polaroid, PolyPad, Pomp, Positivo, Prestigio, ProScan, PULID, Qilive, QMobile, Qtek, Quechua, Ramos, RCA Tablets, Readboy, Rikomagic, RIM, Roku, Rover, Sagem, Samsung, Sanyo, Sega, Selevision, Sencor, Sendo, SFR, Sharp, Siemens, Skyworth, Smart, Smartfren, Softbank, Sony, Spice, Star, Stonex, Storex, Sumvision, SunVan, SuperSonic, Symphony, T-Mobile, TCL, TechniSat, TechnoTrend, Tecno Mobile, Telefunken, Telenor, Telit, Tesco, Tesla, teXet, ThL, Thomson, TIANYU, TiPhone, Tolino, Toplux, Toshiba, Trevi, Tunisie Telecom, Turbo-X, TVC, Uniscope, Unknown, Unowhy, UTStarcom, Vastking, Vertu, Vestel, Videocon, Videoweb, ViewSonic, Vitelcom, Vivo, Vizio, VK Mobile, Vodafone, Voto, Voxtel, Walton, WellcoM, Wexler, Wiko, Wolder, Wonu, Woxter, Xiaomi, Xolo, Yarvik, Ytone, Yuandao, Yusun, Zeemi, Zonda, Zopo, ZTE
150
150
 
151
151
  ## Maintainers
152
152
 
data/Rakefile CHANGED
@@ -12,12 +12,14 @@ end
12
12
  task default: :test
13
13
 
14
14
  task :detectable_names do
15
- bot_names = DeviceDetector::Bot.new.send(:regexes).map { |r| r['name'] }.uniq.sort_by { |n| n.downcase }
15
+ bot_names = DeviceDetector::Bot.new.send(:regexes).map { |r| r[:name] }.uniq.sort_by { |n| n.downcase }
16
16
  bot_names.delete('$1')
17
- client_names = DeviceDetector::Client.new.send(:regexes).map { |r| r['name'] }.uniq.sort_by { |n| n.downcase }
17
+ client_names = DeviceDetector::Client.new.send(:regexes).map { |r| r[:name] }.uniq.sort_by { |n| n.downcase }
18
18
  client_names.delete('$1')
19
- device_regexes = DeviceDetector::Device.new.send(:load_regexes)
20
- device_names = device_regexes.flat_map { |dn| dn.keys }.uniq.sort_by { |n| n.downcase }
19
+ device = DeviceDetector::Device.new
20
+ device_paths = device.send(:filepaths)
21
+ device_regexes = device.send(:load_regexes, device_paths)
22
+ device_names = device_regexes.flat_map { |dn| dn[1].keys }.uniq.sort_by { |n| n.downcase }
21
23
 
22
24
  today = Date.today.strftime
23
25
 
@@ -39,36 +41,39 @@ task :detectable_names do
39
41
  puts
40
42
  end
41
43
 
42
- PIWIK_TARBALL_LOCATION = '/tmp/piwik_device_detector.tar.gz'.freeze
44
+ PIWIK_REPO_URL = 'https://github.com/piwik/device-detector.git'.freeze
45
+ PIWIK_CHECKOUT_LOCATION = '/tmp/piwik_device_detector'.freeze
43
46
 
44
- def get_latest_piwik_tarball
45
- system "curl -s -L https://api.github.com/repos/piwik/device-detector/tarball/master -o #{PIWIK_TARBALL_LOCATION}"
47
+ def get_latest_piwik_checkout
48
+ if File.exist?(PIWIK_CHECKOUT_LOCATION)
49
+ system "cd #{PIWIK_CHECKOUT_LOCATION}; git reset --hard HEAD; git pull origin master"
50
+ else
51
+ system "git clone --depth 1 #{PIWIK_REPO_URL} #{PIWIK_CHECKOUT_LOCATION}"
52
+ end
46
53
  end
47
54
 
48
55
  desc 'update regex database from piwik project'
49
56
  task :update_regexes do
50
57
  top = File.expand_path('..', __FILE__)
51
- get_latest_piwik_tarball
52
- system "tar xzvf #{PIWIK_TARBALL_LOCATION} --strip-components 1 --include */regexes/*.yml -C #{top}"
58
+ get_latest_piwik_checkout
59
+ system "cp -R #{PIWIK_CHECKOUT_LOCATION}/regexes/* #{top}/regexes"
53
60
  end
54
61
 
55
62
  desc 'update fixtures from piwik project'
56
63
  task :update_fixtures do
57
64
  top = File.expand_path('..', __FILE__)
58
- get_latest_piwik_tarball
65
+ get_latest_piwik_checkout
59
66
 
60
67
  fixture_mappings = [
61
- # tablet.yml from the detector fixtures is broken: https://github.com/piwik/device-detector/issues/5355
62
- #{ local_path: "#{top}/spec/fixtures/detector", archive_path: '*/Tests/fixtures/*.yml', strip_components: 3 },
63
- { local_path: "#{top}/spec/fixtures/client", archive_path: '*/Tests/Parser/Client/fixtures/*.yml', strip_components: 5 },
64
- { local_path: "#{top}/spec/fixtures/parser", archive_path: '*/Tests/Parser/fixtures/*.yml', strip_components: 4 },
65
- { local_path: "#{top}/spec/fixtures/device", archive_path: '*/Tests/Parser/Devices/fixtures/*.yml', strip_components: 5 },
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'},
66
72
  ]
67
73
 
68
74
  fixture_mappings.each do |mapping|
69
- strip_components = mapping.fetch(:strip_components)
70
- archive_path = mapping.fetch(:archive_path)
71
- local_path = mapping.fetch(:local_path)
72
- system "tar xzvf #{PIWIK_TARBALL_LOCATION} --strip-components #{strip_components} --include #{archive_path} -C #{local_path}"
75
+ source_path = mapping.fetch(:source_path)
76
+ target_path = mapping.fetch(:target_path)
77
+ system "cp -R #{PIWIK_CHECKOUT_LOCATION}/#{source_path} #{target_path}"
73
78
  end
74
79
  end
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
  spec.summary = %q{Precise and fast user agent parser and device detector}
12
12
  spec.description = %q{Precise and fast user agent parser and device detector, backed by the largest and most up-to-date agent and device database}
13
13
  spec.homepage = 'http://podigee.github.io/device_detector'
14
- spec.license = 'LGPLv3'
14
+ spec.license = 'LGPL-3.0'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
17
  spec.executables = []
@@ -47,7 +47,7 @@ class DeviceDetector
47
47
  def device_type
48
48
  t = device.type
49
49
 
50
- if t.nil? && android_tablet_fragment?
50
+ if t.nil? && android_tablet_fragment? || opera_tablet?
51
51
  t = 'tablet'
52
52
  end
53
53
 
@@ -88,8 +88,17 @@ class DeviceDetector
88
88
  t = 'tablet'
89
89
  end
90
90
 
91
- # set device type to desktop for all devices running a desktop os that were not detected as an other device type
92
- if t.nil? && os.desktop?
91
+ if opera_tv_store?
92
+ t = 'tv'
93
+ end
94
+
95
+ if t.nil? && ['Kylo', 'Espial TV Browser'].include?(client.name)
96
+ t = 'tv'
97
+ end
98
+
99
+ # set device type to desktop for all devices running a desktop os that were
100
+ # not detected as an other device type
101
+ if t.nil? && os.desktop? && !puffin_browser?
93
102
  t = 'desktop'
94
103
  end
95
104
 
@@ -165,6 +174,19 @@ class DeviceDetector
165
174
  user_agent =~ build_regex('Touch')
166
175
  end
167
176
 
177
+ def opera_tv_store?
178
+ user_agent =~ build_regex('Opera TV Store')
179
+ end
180
+
181
+ def opera_tablet?
182
+ user_agent =~ build_regex('Opera Tablet')
183
+ end
184
+
185
+ # This is a workaround until we support detecting mobile only browsers
186
+ def puffin_browser?
187
+ client.name == 'Puffin'
188
+ end
189
+
168
190
  def build_regex(src)
169
191
  Regexp.new('(?:^|[^A-Z0-9\_\-])(?:' + src + ')', Regexp::IGNORECASE)
170
192
  end
@@ -64,7 +64,7 @@ class DeviceDetector
64
64
  end
65
65
 
66
66
  def hbbtv?
67
- @regex_hbbtv ||= build_regex('HbbTV/([1-9]{1}(\.[0-9]{1}){1,2})')
67
+ @regex_hbbtv ||= build_regex('HbbTV/([1-9]{1}(?:\.[0-9]{1}){1,2})')
68
68
  user_agent =~ @regex_hbbtv
69
69
  end
70
70
 
@@ -3,6 +3,10 @@ class DeviceDetector
3
3
 
4
4
  def call
5
5
  s = super.to_s.gsub('_',' ').strip
6
+ s = s.gsub(/ TD$/i, '')
7
+
8
+ return nil if s == 'Build'
9
+
6
10
  s.empty? ? nil : s
7
11
  end
8
12
 
@@ -73,6 +73,7 @@ class DeviceDetector
73
73
  'LBT' => 'Lubuntu',
74
74
  'VLN' => 'VectorLinux',
75
75
  'MAC' => 'Mac',
76
+ 'MAE' => 'Maemo',
76
77
  'MDR' => 'Mandriva',
77
78
  'SMG' => 'MeeGo',
78
79
  'MCD' => 'MocorDroid',
@@ -80,6 +81,7 @@ class DeviceDetector
80
81
  'MLD' => 'MildWild',
81
82
  'MOR' => 'MorphOS',
82
83
  'NBS' => 'NetBSD',
84
+ 'MTK' => 'MTK / Nucleus',
83
85
  'WII' => 'Nintendo',
84
86
  'NDS' => 'Nintendo Mobile',
85
87
  'OS2' => 'OS/2',
@@ -89,6 +91,7 @@ class DeviceDetector
89
91
  'PS3' => 'PlayStation',
90
92
  'RHT' => 'Red Hat',
91
93
  'ROS' => 'RISC OS',
94
+ 'REM' => 'Remix OS',
92
95
  'RZD' => 'RazoDroiD',
93
96
  'SAB' => 'Sabayon',
94
97
  'SSE' => 'SUSE',
@@ -101,6 +104,7 @@ class DeviceDetector
101
104
  'S40' => 'Symbian OS Series 40',
102
105
  'S60' => 'Symbian OS Series 60',
103
106
  'SY3' => 'Symbian^3',
107
+ 'TDX' => 'ThreadX',
104
108
  'TIZ' => 'Tizen',
105
109
  'UBT' => 'Ubuntu',
106
110
  'WTV' => 'WebTV',
@@ -120,7 +124,7 @@ class DeviceDetector
120
124
  DOWNCASED_OPERATING_SYSTEMS = OPERATING_SYSTEMS.each_with_object({}){|(short,long),h| h[long.downcase] = short}
121
125
 
122
126
  OS_FAMILIES = {
123
- 'Android' => ['AND', 'CYN', 'RZD', 'MLD', 'MCD'],
127
+ 'Android' => ['AND', 'CYN', 'REM', 'RZD', 'MLD', 'MCD', 'YNS'],
124
128
  'AmigaOS' => ['AMG', 'MOR'],
125
129
  'Apple TV' => ['ATV'],
126
130
  'BlackBerry' => ['BLB', 'QNX'],
@@ -133,10 +137,11 @@ class DeviceDetector
133
137
  'IBM' => ['OS2'],
134
138
  'iOS' => ['IOS'],
135
139
  'RISC OS' => ['ROS'],
136
- 'GNU/Linux' => ['LIN', 'ARL', 'DEB', 'KNO', 'MIN', 'UBT', 'KBT', 'XBT', 'LBT', 'FED', 'RHT', 'VLN', 'MDR', 'GNT', 'SAB', 'SLW', 'SSE', 'CES', 'BTR', 'YNS', 'SAF'],
140
+ 'GNU/Linux' => ['LIN', 'ARL', 'DEB', 'KNO', 'MIN', 'UBT', 'KBT', 'XBT', 'LBT', 'FED', 'RHT', 'VLN', 'MDR', 'GNT', 'SAB', 'SLW', 'SSE', 'CES', 'BTR', 'SAF'],
137
141
  'Mac' => ['MAC'],
138
142
  'Mobile Gaming Console' => ['PSP', 'NDS', 'XBX'],
139
- 'Other Mobile' => ['WOS', 'POS', 'SBA', 'TIZ', 'SMG'],
143
+ 'Real-time OS' => ['MTK', 'TDX'],
144
+ 'Other Mobile' => ['WOS', 'POS', 'SBA', 'TIZ', 'SMG', 'MAE'],
140
145
  'Symbian' => ['SYM', 'SYS', 'SY3', 'S60', 'S40'],
141
146
  'Unix' => ['SOS', 'AIX', 'HPX', 'BSD', 'NBS', 'OBS', 'DFB', 'SYL', 'IRI', 'T64', 'INF'],
142
147
  'WebTV' => ['WTV'],
@@ -71,7 +71,7 @@ class DeviceDetector
71
71
  end
72
72
 
73
73
  def build_regex(src)
74
- Regexp.new('(?:^|[^A-Z0-9\_\-])(?:' + src + ')', Regexp::IGNORECASE)
74
+ Regexp.new('(?:^|[^A-Z0-9\-_]|[^A-Z0-9\-]_|sprd-)(?:' + src + ')', Regexp::IGNORECASE)
75
75
  end
76
76
 
77
77
  def from_cache(key)
@@ -1,3 +1,3 @@
1
1
  class DeviceDetector
2
- VERSION = '0.8.2'
2
+ VERSION = '0.9.0'
3
3
  end
data/regexes/bots.yml CHANGED
@@ -29,7 +29,7 @@
29
29
  name: 'Acoon GmbH'
30
30
  url: 'http://www.acoon.de'
31
31
 
32
- - regex: 'AddThis.com'
32
+ - regex: 'AddThis\.com'
33
33
  name: 'AddThis.com'
34
34
  category: 'Social Media Agent'
35
35
  url: ''
@@ -61,6 +61,14 @@
61
61
  name: 'Amorank'
62
62
  url: 'http://www.amorank.com'
63
63
 
64
+ - regex: 'Applebot'
65
+ name: 'Applebot'
66
+ category: 'Crawler'
67
+ url: 'http://www.apple.com/go/applebot'
68
+ producer:
69
+ name: 'Apple Inc'
70
+ url: 'http://www.apple.com'
71
+
64
72
  - regex: 'Curious George'
65
73
  name: 'Analytics SEO Crawler'
66
74
  category: 'Crawler'
@@ -69,7 +77,7 @@
69
77
  name: 'Analytics SEO'
70
78
  url: 'http://www.analyticsseo.com'
71
79
 
72
- - regex: 'archive.org_bot|special_archiver'
80
+ - regex: 'archive\.org_bot|special_archiver'
73
81
  name: 'archive.org bot'
74
82
  category: 'Crawler'
75
83
  url: 'http://www.archive.org/details/archive.org_bot'
@@ -85,7 +93,7 @@
85
93
  name: 'Ask Jeeves Inc.'
86
94
  url: 'http://www.ask.com'
87
95
 
88
- - regex: 'Backlink-Ceck.de'
96
+ - regex: 'Backlink-Ceck\.de'
89
97
  name: 'Backlink-Ceck.de'
90
98
  category: 'Crawler'
91
99
  url: 'http://www.backlink-check.de/bot.html'
@@ -109,6 +117,14 @@
109
117
  name: 'Baidu'
110
118
  url: 'http://www.baidu.com'
111
119
 
120
+ - regex: 'BazQux'
121
+ name: 'BazQux Reader'
122
+ url: 'https://bazqux.com/fetcher'
123
+ category: 'Feed Fetcher'
124
+ producer:
125
+ name: ''
126
+ url: ''
127
+
112
128
  - regex: 'MSNBot|msrbot|bingbot|BingPreview|msnbot-(UDiscovery|NewsBlogs)|adidxbot'
113
129
  name: 'BingBot'
114
130
  category: 'Search bot'
@@ -141,6 +157,14 @@
141
157
  name: ''
142
158
  url: ''
143
159
 
160
+ - regex: 'Blogtrottr'
161
+ name: 'Blogtrottr'
162
+ url: ''
163
+ category: 'Feed Fetcher'
164
+ producer:
165
+ name: 'Blogtrottr Ltd'
166
+ url: 'https://blogtrottr.com/'
167
+
144
168
  - regex: 'BountiiBot'
145
169
  name: 'Bountii Bot'
146
170
  category: 'Search bot'
@@ -157,7 +181,15 @@
157
181
  name: 'Browsershots.org'
158
182
  url: 'http://browsershots.org'
159
183
 
160
- - regex: '(?<!HTC)[ _]Butterfly'
184
+ - regex: 'BUbiNG'
185
+ name: 'BUbiNG'
186
+ category: 'Crawler'
187
+ url: 'http://law.di.unimi.it/BUbiNG.html'
188
+ producer:
189
+ name: ''
190
+ url: ''
191
+
192
+ - regex: '(?<!HTC)[ _]Butterfly/'
161
193
  name: 'Butterfly Robot'
162
194
  category: 'Search bot'
163
195
  url: 'http://labs.topsy.com/butterfly'
@@ -197,6 +229,14 @@
197
229
  name: 'CloudFlare'
198
230
  url: 'http://www.cloudflare.com'
199
231
 
232
+ - regex: 'coccoc/'
233
+ name: 'Cốc Cốc Bot'
234
+ url: 'http://help.coccoc.com/'
235
+ category: 'Search bot'
236
+ producer:
237
+ name: 'Cốc Cốc'
238
+ url: 'http://coccoc.com/'
239
+
200
240
  - regex: 'CommaFeed'
201
241
  name: 'CommaFeed'
202
242
  url: 'http://www.commafeed.com'
@@ -205,6 +245,14 @@
205
245
  name: ''
206
246
  url: ''
207
247
 
248
+ - regex: 'Daum(oa)?[ /][0-9]'
249
+ name: 'Daum'
250
+ category: 'Search bot'
251
+ url: 'http://tab.search.daum.net/aboutWebSearch_en.html'
252
+ producer:
253
+ name: 'Daum Communications Corp.'
254
+ url: 'http://www.kakaocorp.com/main'
255
+
208
256
  - regex: 'Dazoobot'
209
257
  name: 'Dazoobot'
210
258
  category: 'Search bot'
@@ -221,6 +269,14 @@
221
269
  name: 'Discovery Engine'
222
270
  url: 'http://discoveryengine.com'
223
271
 
272
+ - regex: 'Domain Re-Animator Bot|support@domainreanimator.com'
273
+ name: 'Domain Re-Animator Bot'
274
+ category: 'Crawler'
275
+ url: ''
276
+ producer:
277
+ name: 'Domain Re-Animator, LLC'
278
+ url: 'http://domainreanimator.com'
279
+
224
280
  - regex: 'DotBot'
225
281
  name: 'DotBot'
226
282
  category: 'Crawler'
@@ -293,6 +349,14 @@
293
349
  name: ''
294
350
  url: ''
295
351
 
352
+ - regex: 'Feed Wrangler'
353
+ name: 'Feed Wrangler'
354
+ url: 'https://feedwrangler.net/'
355
+ category: 'Feed Fetcher'
356
+ producer:
357
+ name: 'David Smith & Developing Perspective, LLC'
358
+ url: 'https://david-smith.org'
359
+
296
360
  - regex: '(Meta)?Feedly(Bot|App)?'
297
361
  name: 'Feedly'
298
362
  url: 'http://www.feedly.com'
@@ -309,7 +373,7 @@
309
373
  name: ''
310
374
  url: ''
311
375
 
312
- - regex: 'Fever'
376
+ - regex: 'Fever/[0-9]'
313
377
  name: 'Fever'
314
378
  url: 'http://feedafever.com/'
315
379
  category: 'Feed Fetcher'
@@ -325,6 +389,14 @@
325
389
  name: 'Genieo'
326
390
  url: 'http://www.genieo.com'
327
391
 
392
+ - regex: 'Gluten Free Crawler'
393
+ name: 'Gluten Free Crawler'
394
+ category: 'Crawler'
395
+ url: 'http://glutenfreepleasure.com/'
396
+ producer:
397
+ name: ''
398
+ url: ''
399
+
328
400
  - regex: 'ichiro/mobile goo'
329
401
  name: 'Goo'
330
402
  category: 'Search bot'
@@ -341,7 +413,23 @@
341
413
  name: 'Google Inc.'
342
414
  url: 'http://www.google.com'
343
415
 
344
- - regex: 'Googlebot(-Mobile|-Image|-Video|-News)?|Feedfetcher-Google|Google-Test|Google-Site-Verification|Google Web Preview|AdsBot-Google(-Mobile)?|Mediapartners-Google|Google.*/\+/web/snippet|GoogleProducer'
416
+ - regex: 'google_partner_monitoring'
417
+ name: 'Google Partner Monitoring'
418
+ category: 'Site Monitor'
419
+ url: ''
420
+ producer:
421
+ name: 'Google Inc.'
422
+ url: 'http://www.google.com'
423
+
424
+ - regex: 'via ggpht\.com GoogleImageProxy'
425
+ name: 'Gmail Image Proxy'
426
+ category: 'Crawler'
427
+ url: ''
428
+ producer:
429
+ name: 'Google Inc.'
430
+ url: 'http://www.google.com'
431
+
432
+ - regex: 'Googlebot(-Mobile|-Image|-Video|-News)?|Feedfetcher-Google|Google-Test|Google-Site-Verification|Google Web Preview|AdsBot-Google(-Mobile)?|Mediapartners-Google|Google.*/\+/web/snippet|GoogleProducer|Google[ -]Publisher[ -]Plugin'
345
433
  name: 'Googlebot'
346
434
  category: 'Search bot'
347
435
  url: 'http://www.google.com/bot.html'
@@ -365,9 +453,17 @@
365
453
  name: 'towards GmbH'
366
454
  url: 'http://www.towards.ch/'
367
455
 
456
+ - regex: 'ICC-Crawler'
457
+ name: 'ICC-Crawler'
458
+ category: 'Crawler'
459
+ url: 'http://www.nict.go.jp/en/univ-com/plan/crawl.html'
460
+ producer:
461
+ name: ''
462
+ url: ''
463
+
368
464
  - regex: 'iisbot'
369
465
  name: 'IIS Site Analysis'
370
- category: 'crawler'
466
+ category: 'Crawler'
371
467
  url: 'http://www.iis.net/iisbot.html'
372
468
  producer:
373
469
  name: 'Microsoft Corporation'
@@ -381,7 +477,15 @@
381
477
  name: ''
382
478
  url: ''
383
479
 
384
- - regex: 'linkdexbot(-mobile)?|linkdex.com'
480
+ - regex: 'larbin'
481
+ name: 'Larbin web crawler'
482
+ category: 'Crawler'
483
+ url: 'http://larbin.sourceforge.net'
484
+ producer:
485
+ name: ''
486
+ url: ''
487
+
488
+ - regex: 'linkdexbot(-mobile)?|linkdex\.com'
385
489
  name: 'Linkdex Bot'
386
490
  category: 'Search bot'
387
491
  url: 'http://www.linkdex.com/bots'
@@ -397,7 +501,14 @@
397
501
  name: 'LinkedIn'
398
502
  url: 'http://www.linkedin.com'
399
503
 
400
- - regex: 'Mail.RU(_Bot)?'
504
+ - regex: 'ltx71'
505
+ name: 'LTX71'
506
+ url: 'http://ltx71.com/'
507
+ producer:
508
+ name: ''
509
+ url: ''
510
+
511
+ - regex: 'Mail\.RU(_Bot)?'
401
512
  name: 'Mail.Ru Bot'
402
513
  category: 'Search bot'
403
514
  url: 'http://help.mail.ru/webmaster/indexing/robots/types_robots'
@@ -533,6 +644,14 @@
533
644
  name: 'OpenWebSpider Lab'
534
645
  url: 'http://lab.openwebspider.org'
535
646
 
647
+ - regex: 'OrangeBot|VoilaBot'
648
+ name: 'Orange Bot'
649
+ category: 'Search bot'
650
+ url: 'http://lemoteur.orange.fr'
651
+ producer:
652
+ name: 'Orange'
653
+ url: 'http://www.orange.fr'
654
+
536
655
  - regex: 'PaperLiBot'
537
656
  name: 'PaperLiBot'
538
657
  category: 'Search bot'
@@ -541,6 +660,14 @@
541
660
  name: 'Smallrivers SA'
542
661
  url: 'http://www.paper.li'
543
662
 
663
+ - regex: 'phpservermon'
664
+ name: 'PHP Server Monitor'
665
+ category: 'Site Monitor'
666
+ url: 'https://github.com/phpservermon/phpservermon'
667
+ producer:
668
+ name: 'PHP Server Monitor'
669
+ url: 'http://www.phpservermonitor.org/'
670
+
544
671
  - regex: 'psbot(-page)?'
545
672
  name: 'Picsearch bot'
546
673
  category: 'Search bot'
@@ -549,9 +676,9 @@
549
676
  name: 'Picsearch'
550
677
  url: 'http://www.picsearch.com'
551
678
 
552
- - regex: 'Pingdom.com'
679
+ - regex: 'Pingdom\.com'
553
680
  name: 'Pingdom Bot'
554
- category: 'Site Monitors'
681
+ category: 'Site Monitor'
555
682
  url: ''
556
683
  producer:
557
684
  name: 'Pingdom AB'
@@ -581,6 +708,19 @@
581
708
  name: 'SEOmoz, Inc.'
582
709
  url: 'http://moz.com/'
583
710
 
711
+ - regex: 'ROI Hunter'
712
+ name: 'ROI Hunter'
713
+ category: 'Crawler'
714
+ url: ''
715
+ producer:
716
+ name: 'Roihunter a.s.'
717
+ url: 'http://roihunter.com/'
718
+
719
+ - regex: 'Scrapy'
720
+ name: 'Scrapy'
721
+ category: 'Crawler'
722
+ url: 'http://scrapy.org'
723
+
584
724
  - regex: 'Screaming Frog SEO Spider'
585
725
  name: 'Screaming Frog SEO Spider'
586
726
  category: 'Crawler'
@@ -621,6 +761,14 @@
621
761
  name: 'SEO Engine'
622
762
  url: 'http://www.seoengine.com'
623
763
 
764
+ - regex: 'SkypeUriPreview'
765
+ name: 'Skype URI Preview'
766
+ category: 'Service Agent'
767
+ url: ''
768
+ producer:
769
+ name: 'Skype Communications S.à.r.l.'
770
+ url: 'https://www.skype.com'
771
+
624
772
  - regex: 'SeznamBot|SklikBot|Seznam screenshot-generator'
625
773
  name: 'Seznam Bot'
626
774
  category: 'Search bot'
@@ -661,6 +809,14 @@
661
809
  name: 'SISTRIX GmbH'
662
810
  url: 'http://www.sistrix.de'
663
811
 
812
+ - regex: 'Slackbot|Slack-ImgProxy'
813
+ name: 'Slackbot'
814
+ category: 'Crawler'
815
+ url: 'https://api.slack.com/robots'
816
+ producer:
817
+ name: 'Slack Technologies'
818
+ url: 'http://slack.com'
819
+
664
820
  - regex: '(Sogou (web|inst|Pic) spider)|New-Sogou-Spider'
665
821
  name: 'Sogou Spider'
666
822
  category: 'Search bot'
@@ -709,6 +865,10 @@
709
865
  name: 'Domain Tools'
710
866
  url: 'http://www.domaintools.com'
711
867
 
868
+ - regex: 'TelegramBot'
869
+ name: 'TelgramBot'
870
+ url: 'https://telegram.org/blog/bot-revolution'
871
+
712
872
  - regex: 'TinEye-bot'
713
873
  name: 'TinEye Crawler'
714
874
  category: 'Search bot'
@@ -781,14 +941,6 @@
781
941
  name: 'Alentum Software Ltd.'
782
942
  url: 'http://www.alentum.com'
783
943
 
784
- - regex: 'VoilaBot'
785
- name: 'Voila Bot'
786
- category: 'Search bot'
787
- url: 'http://www.voila.fr'
788
- producer:
789
- name: ''
790
- url: ''
791
-
792
944
  - regex: 'Jigsaw'
793
945
  name: 'W3C CSS Validator'
794
946
  category: 'Validator'
@@ -853,6 +1005,14 @@
853
1005
  name: 'Steve Webb'
854
1006
  url: 'http://badcheese.com'
855
1007
 
1008
+ - regex: 'websitepulse[+ ]checker'
1009
+ name: 'WebSitePulse'
1010
+ category: 'Site Monitor'
1011
+ url: 'http://badcheese.com/crawler.html'
1012
+ producer:
1013
+ name: 'WebSitePulse'
1014
+ url: 'http://www.websitepulse.com/'
1015
+
856
1016
  - regex: 'Wotbox'
857
1017
  name: 'Wotbox'
858
1018
  category: 'Search bot'
@@ -877,7 +1037,23 @@
877
1037
  name: 'Yahoo! Inc.'
878
1038
  url: 'http://www.yahoo.com'
879
1039
 
880
- - regex: 'Yandex(Bot|Images|Antivirus|Direct|Blogs|Favicons|ImageResizer|News(links)?|Metrika|.Gazeta Bot)'
1040
+ - regex: 'Yahoo Link Preview|Yahoo:LinkExpander:Slingstone'
1041
+ name: 'Yahoo! Link Preview'
1042
+ category: 'Crawler'
1043
+ url: 'https://help.yahoo.com/kb/mail/yahoo-link-preview-SLN23615.html'
1044
+ producer:
1045
+ name: 'Yahoo! Inc.'
1046
+ url: 'http://www.yahoo.com'
1047
+
1048
+ - regex: 'YahooCacheSystem'
1049
+ name: 'Yahoo! Cache System'
1050
+ category: 'Crawler'
1051
+ url: ''
1052
+ producer:
1053
+ name: 'Yahoo! Inc.'
1054
+ url: 'http://www.yahoo.com'
1055
+
1056
+ - regex: 'Yandex(Bot|Images|Antivirus|Direct|Blogs|Favicons|ImageResizer|News(links)?|Metrika|\.Gazeta Bot)|YaDirectFetcher'
881
1057
  name: 'Yandex Bot'
882
1058
  category: 'Search bot'
883
1059
  url: 'http://www.yandex.com/bots'
@@ -901,6 +1077,11 @@
901
1077
  name: 'NetEase, Inc.'
902
1078
  url: 'http://corp.163.com'
903
1079
 
1080
+ - regex: 'YOURLS v[0-9]'
1081
+ name: 'Yourls'
1082
+ category: 'Crawler'
1083
+ url: 'http://yourls.org'
1084
+
904
1085
  - regex: 'YRSpider|YYSpider'
905
1086
  name: 'Yunyun Bot'
906
1087
  category: 'Search bot'
@@ -957,7 +1138,7 @@
957
1138
  name: 'HubPages'
958
1139
  url: 'http://hubpages.com/'
959
1140
 
960
- - regex: 'Pinterest/\d\.\d.*www.pinterest.com.*'
1141
+ - regex: 'Pinterest/\d\.\d.*www\.pinterest\.com.*'
961
1142
  name: 'Pinterest'
962
1143
  url: ''
963
1144
  category: 'Crawler'
@@ -973,7 +1154,7 @@
973
1154
  name: 'Site24x7'
974
1155
  url: 'https://www.site24x7.com'
975
1156
 
976
- - regex: 'www.monitor.us'
1157
+ - regex: 'www\.monitor\.us'
977
1158
  name: 'Monitor.Us'
978
1159
  category: 'Site Monitor'
979
1160
  url: 'http://www.monitor.us'
@@ -981,6 +1162,9 @@
981
1162
  name: 'Monitor.Us'
982
1163
  url: 'http://www.monitor.us'
983
1164
 
1165
+ - regex: 'Zao/'
1166
+ name: 'Zao'
1167
+ category: 'Crawler'
984
1168
 
985
1169
  - regex: 'lycos'
986
1170
  name: 'Lycos'
@@ -1027,24 +1211,24 @@
1027
1211
  - regex: 'NetLyzer FastProbe'
1028
1212
  name: 'NetLyzer FastProbe'
1029
1213
 
1030
- - regex: 'AdMantX.*admantx.com'
1214
+ - regex: 'AdMantX.*admantx\.com'
1031
1215
  name: 'ADMantX'
1032
1216
 
1033
1217
  - regex: 'Server Density Service Monitoring.*'
1034
1218
  name: 'Server Density'
1035
1219
 
1036
- - regex: '(nuhk|TsolCrawler|Yammybot|Openbot|Gulper Web Bot|grub-client|Download Demon|SearchExpress|Microsoft URL Control|borg|altavista|teoma|blitzbot|oegp|furlbot|http%20client|polybot|htdig|mogimogi|larbin|scrubby|searchsight|seekbot|semanticdiscovery|snappy|vortex|zao|zeal|fast-webcrawler|converacrawler|dataparksearch|findlinks|BrowserMob|HttpMonitor|ThumbShotsBot|URL2PNG|ZooShot|GomezA|Catchpoint bot|Google SketchUp|Read%20Later|Minimo|RackspaceBot)'
1037
- name: 'Bot'
1220
+ - regex: '(A6-Indexer|nuhk|TsolCrawler|Yammybot|Openbot|Gulper Web Bot|grub-client|Download Demon|SearchExpress|Microsoft URL Control|borg|altavista|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|Catchpoint bot|Google SketchUp|Read%20Later|Minimo|RackspaceBot)'
1221
+ name: 'Generic Bot'
1038
1222
 
1039
1223
  # Generic detections
1040
1224
 
1041
1225
  - regex: 'Nutch'
1042
1226
  name: 'Nutch-based Bot'
1043
- category: 'crawler'
1227
+ category: 'Crawler'
1044
1228
  url: 'https://nutch.apache.org'
1045
1229
  producer:
1046
1230
  name: 'The Apache Software Foundation'
1047
1231
  url: 'http://www.apache.org/foundation/'
1048
1232
 
1049
- - regex: '[a-z0-9\-_]*(bot|crawler|archiver|transcoder|spider)'
1233
+ - regex: '[a-z0-9\-_]*((?<!cu)bot|crawler|archiver|transcoder|spider)([^a-z]|$)'
1050
1234
  name: 'Generic Bot'