diff --git a/.gitignore b/.gitignore index ae3fdc2..ceade13 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.DS_Store /.bundle/ /.yardoc /Gemfile.lock @@ -7,6 +8,7 @@ /pkg/ /spec/reports/ /tmp/ +!tmp/.gitkeep *.bundle *.so *.o diff --git a/.rspec b/.rspec index c99d2e7..d713413 100644 --- a/.rspec +++ b/.rspec @@ -1 +1,3 @@ --require spec_helper +--format progress +--format ParallelTests::RSpec::FailuresLogger --out tmp/failing_specs.log diff --git a/.rubocop.yml b/.rubocop.yml index 1b0b1b9..679b789 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,3 +1,6 @@ +plugins: + - rubocop-rspec + AllCops: TargetRubyVersion: 3.4 Exclude: diff --git a/Gemfile b/Gemfile index 845b9bd..319af42 100644 --- a/Gemfile +++ b/Gemfile @@ -9,7 +9,11 @@ gem 'byebug' gem 'rake' gem 'rspec' +gem 'parallel_tests' gem 'rubocop', '>= 1.75' +gem 'rubocop-rspec' +gem 'bootsnap' +gem 'oj' gem 'browser', require: false gem 'useragent', require: false diff --git a/Rakefile b/Rakefile index f197ca8..9a0b74e 100644 --- a/Rakefile +++ b/Rakefile @@ -2,10 +2,14 @@ require 'rake' require 'rake/testtask' +require 'rspec/core/rake_task' +require 'parallel_tests' $LOAD_PATH.unshift 'lib' require 'device_detector' +RSpec::Core::RakeTask.new(:spec) + desc 'generate detectable names output for README' task :detectable_names do require 'date' @@ -42,14 +46,14 @@ task :detectable_names do end MATOMO_REPO_URL = 'https://github.com/matomo-org/device-detector' -MATOMO_REPO_TAG = '6.4.6' +MATOMO_COMMIT_SHA = '1b521fb382873602ea5d3fed582a7c9d72afbd6f' MATOMO_CHECKOUT_LOCATION = '/tmp/matomo_device_detector' def matomo_checkout! if File.exist?(MATOMO_CHECKOUT_LOCATION) - system "cd #{MATOMO_CHECKOUT_LOCATION}; git fetch origin; git reset --hard #{MATOMO_REPO_TAG}" + system "cd #{MATOMO_CHECKOUT_LOCATION}; git fetch origin; git reset --hard #{MATOMO_COMMIT_SHA}" else - system "git clone --depth 100 #{MATOMO_REPO_URL} -b #{MATOMO_REPO_TAG} #{MATOMO_CHECKOUT_LOCATION}" + system "git clone --depth 100 #{MATOMO_REPO_URL} --revision=#{MATOMO_COMMIT_SHA} #{MATOMO_CHECKOUT_LOCATION}" end end diff --git a/lib/device_detector.rb b/lib/device_detector.rb index 552a9a0..03f5a19 100644 --- a/lib/device_detector.rb +++ b/lib/device_detector.rb @@ -4,7 +4,6 @@ require 'device_detector/version' require 'device_detector/memory_cache' - require 'device_detector/client_hint' require 'device_detector/parser/abstract_parser' @@ -17,6 +16,8 @@ require 'device_detector/parser/client/media_player' require 'device_detector/parser/client/pim' require 'device_detector/parser/client/browser' +require 'device_detector/parser/client/browser_module/engine' +require 'device_detector/parser/client/browser_module/engine/version' require 'device_detector/parser/client/library' require 'device_detector/parser/device/abstract_device_parser' require 'device_detector/parser/device/hbb_tv' @@ -37,6 +38,38 @@ class DeviceDetector REGEX_CACHE = ::DeviceDetector::MemoryCache.new({}) private_constant :REGEX_CACHE + class << self + @@parser_classes = [ + Parser::Client::FeedReader, + Parser::Client::MobileApp, + Parser::Client::MediaPlayer, + Parser::Client::Pim, + Parser::Client::Browser, + Parser::Client::Library, + Parser::Device::HbbTv, + Parser::Device::ShellTv, + Parser::Device::Notebook, + Parser::Device::Console, + Parser::Device::CarBrowser, + Parser::Device::Camera, + Parser::Device::PortableMediaPlayer, + Parser::Device::Mobile, + Parser::Bot + ] + + def root + @root ||= File.expand_path('..', __dir__) + end + + def regexes_dir + @regexes_dir ||= File.join(root, 'regexes') + end + + def parser_classes + @@parser_classes + end + end + attr_reader :client_hint, :user_agent def initialize(user_agent = nil, headers = nil) @@ -45,23 +78,9 @@ def initialize(user_agent = nil, headers = nil) @vendor_fragment_parser = DeviceDetector::Parser::VendorFragment.new @operating_system_parser = DeviceDetector::Parser::OperatingSystem.new - add_parser(Parser::Client::FeedReader.new) - add_parser(Parser::Client::MobileApp.new) - add_parser(Parser::Client::MediaPlayer.new) - add_parser(Parser::Client::Pim.new) - add_parser(Parser::Client::Browser.new) - add_parser(Parser::Client::Library.new) - - add_parser(Parser::Device::HbbTv.new) - add_parser(Parser::Device::ShellTv.new) - add_parser(Parser::Device::Notebook.new) - add_parser(Parser::Device::Console.new) - add_parser(Parser::Device::CarBrowser.new) - add_parser(Parser::Device::Camera.new) - add_parser(Parser::Device::PortableMediaPlayer.new) - add_parser(Parser::Device::Mobile.new) - - add_parser(Parser::Bot.new) + self.class.parser_classes.each do |klass| + add_parser(klass.new) + end use(user_agent, headers) if user_agent || headers end @@ -126,9 +145,7 @@ class Configuration attr_accessor :max_cache_keys def to_hash - { - max_cache_keys: max_cache_keys - } + { max_cache_keys: max_cache_keys } end end @@ -140,6 +157,10 @@ def cache @cache ||= MemoryCache.new(config.to_hash) end + def reset_cache! + @cache = MemoryCache.new(config.to_hash) + end + def configure @config = Configuration.new yield(config) @@ -430,9 +451,7 @@ def should_parse? end def presence(var) - return nil if var.nil? - return nil if var.empty? - return nil if var == '' + return nil if var.to_s.empty? var end diff --git a/lib/device_detector/memory_cache.rb b/lib/device_detector/memory_cache.rb index fce9544..86e1fd8 100644 --- a/lib/device_detector/memory_cache.rb +++ b/lib/device_detector/memory_cache.rb @@ -39,6 +39,10 @@ def get_or_set(key, value = nil) set(string_key, value) end + def purge! + @data = {} + end + private def get_hit(key) diff --git a/lib/device_detector/parser/abstract_parser.rb b/lib/device_detector/parser/abstract_parser.rb index a784b4a..2b6535c 100644 --- a/lib/device_detector/parser/abstract_parser.rb +++ b/lib/device_detector/parser/abstract_parser.rb @@ -3,11 +3,29 @@ class DeviceDetector module Parser class AbstractParser - # overriden - def self.client_hint_mapping - {} + class << self + # overriden + def client_hint_mapping + {} + end + + def add_fixture_path(path) + @custom_fixture_paths = (custom_fixture_paths << path).uniq + REGEX_CACHE.purge! + end + + def custom_fixture_paths + @custom_fixture_paths ||= [] + end + + def reset_custom_fixtures! + @custom_fixture_paths = [] + REGEX_CACHE.purge! + end end + attr_writer :user_agent, :client_hints + REGEX_CACHE = ::DeviceDetector::MemoryCache.new({}) private_constant :REGEX_CACHE @@ -21,15 +39,10 @@ def use(uas, hints) @client_hints = hints end - attr_writer :user_agent, :client_hints - protected def empty?(var) - return true if var.nil? - return true if var.empty? - - false + var.to_s.empty? end def fuzzy_compare(val1, val2) @@ -40,9 +53,7 @@ def build_version(version_string, matches) return unless version_string version_string = build_by_match(version_string, matches) - version_string = version_string.gsub('_', '.') - - version_string.strip.sub(/^(\.+)/, '').sub(/(\.+)$/, '') + version_string.gsub('_', '.').chomp('.') end def build_by_match(item, matches) @@ -107,6 +118,10 @@ def fixture_file '' end + def fixture_paths + ([File.join(DeviceDetector.regexes_dir, fixture_file)] + self.class.custom_fixture_paths).uniq.compact + end + def parser_name '' end @@ -125,10 +140,29 @@ def regexes end end + def load_regex_file(path) + YAML.safe_load_file(path, permitted_classes: [String, Integer, NilClass, Array, Hash]) + rescue Errno::ENOENT + warn "[#{self.class}] Fixture file not found: #{path}" + nil + end + def load_regexes REGEX_CACHE.get_or_set(fixture_file) do - YAML.safe_load_file(fixture_file, - permitted_classes: [String, Integer, NilClass, Array, Hash]) + result = nil + fixture_paths.each do |fixture_path| + next unless File.file?(fixture_path) + + result = case result + when Array + result + load_regex_file(fixture_path) + when Hash + result.merge(load_regex_file(fixture_path)) + else + load_regex_file(fixture_path) || result + end + end + result end end @@ -202,9 +236,9 @@ def prepare_definition_for_cache(definition) definition end - def regex_from_user_agent_cache(key = nil, &block) + def regex_from_user_agent_cache(key = nil, &) key = "#{parser_name}_#{@user_agent}#{key}" - DeviceDetector.cache.get_or_set(key, &block) + DeviceDetector.cache.get_or_set(key, &) end def deep_symbolize_keys(obj) @@ -220,6 +254,13 @@ def deep_symbolize_keys(obj) obj end end + + def satisfied_by_version?(requirement_string, version) + requirement = Gem::Requirement.new(requirement_string) + requirement.satisfied_by?(Gem::Version.new(version)) + rescue Gem::Requirement::BadRequirementError + true + end end end end diff --git a/lib/device_detector/parser/bot.rb b/lib/device_detector/parser/bot.rb index d67b898..2d69f33 100644 --- a/lib/device_detector/parser/bot.rb +++ b/lib/device_detector/parser/bot.rb @@ -18,7 +18,7 @@ def parse protected def fixture_file - 'regexes/bots.yml' + 'bots.yml' end def parser_name diff --git a/lib/device_detector/parser/client/browser.rb b/lib/device_detector/parser/client/browser.rb index 3082a8a..2f9e8a4 100644 --- a/lib/device_detector/parser/client/browser.rb +++ b/lib/device_detector/parser/client/browser.rb @@ -8,12 +8,15 @@ module Client class Browser < AbstractClientParser def initialize super - @browser_hints = DeviceDetector::Parser::Client::Hint::BrowserHints.new + @browser_hints = Hint::BrowserHints.new + @engine_parser = BrowserModule::Engine.new + @engine_version_parser = BrowserModule::EngineVersion.new end def use(uas, hints) super @browser_hints.use(uas, hints) + @engine_parser.use(uas, hints) end def self.client_hint_mapping @@ -296,6 +299,7 @@ def self.mobile_only_browser?(browser) 'HE' => 'Helio', 'HN' => 'Herond Browser', 'HX' => 'Hexa Web Browser', + 'H8' => 'HeyTapBrowser', 'HI' => 'Hi Browser', 'HO' => 'hola! Browser', 'H4' => 'Holla Web Browser', @@ -515,7 +519,7 @@ def self.mobile_only_browser?(browser) 'BP' => 'Privacy Browser', 'PI' => 'PrivacyWall', 'P4' => 'Privacy Explorer Fast Safe', - 'X5' => 'Privacy Pioneer Browser', + 'X5' => 'Cloak Private Browser', 'P3' => 'Private Internet Browser', 'P5' => 'Proxy Browser', '7P' => 'Proxyium', @@ -539,6 +543,8 @@ def self.mobile_only_browser?(browser) 'QS' => 'Quick Browser', 'QT' => 'Qutebrowser', 'QU' => 'Quark', + 'Q6' => 'QuarkPC', + 'Q7' => 'Quetta', 'QZ' => 'QupZilla', 'QM' => 'Qwant Mobile', 'Q5' => 'QtWeb', @@ -728,6 +734,65 @@ def self.mobile_only_browser?(browser) h[long.downcase] = short end.freeze + # https://github.com/matomo-org/device-detector/blob/master/Parser/Client/Browser.php#L742 + BROWSER_FAMILIES = { + 'Android Browser' => ['AN'], + 'BlackBerry Browser' => ['BB'], + 'Baidu' => %w[BD BS H6], + 'Amiga' => %w[AV AW], + 'Chrome' => %w[ + CH 2B 7S A0 AC A4 AE AH AI + AO AS BA BM BR C2 C3 C5 C4 + C6 CC CD CE CF CG 1B CI CL + CM CN CP CR CV CW DA DD DG + DR EC EE EU EW FA FS GB GI + H2 HA HE HH HS I3 IR JB KN + KW LF LL LO M1 MA MD MR MS + MT MZ NM NR O0 O2 O3 OC PB + PT QU QW RM S4 S6 S8 S9 SB + SG SS SU SV SW SY SZ T1 TA + TB TG TR TS TU TV UB UR VE + VG VI VM WP WH XV YJ YN FH + B1 BO HB PC LA LT PD HR HU + HP IO TP CJ HQ HI PN BW YO + DC G8 DT AP AK UI SD VN 4S + 2S RF LR SQ BV L1 F0 KS V0 + C8 AZ MM BT N0 P0 F3 VS DU + D0 P1 O4 8S H3 TE WB K1 P2 + XO U0 B0 VA X0 NX O5 R1 I1 + HO A5 X1 18 B5 B6 TC A6 2X + F4 YG WR NA DM 1M A7 XN XT + XB W1 HT B8 F5 B9 WA T0 HC + O6 P7 LJ LC O7 N2 A8 P8 RB + 1W EV I9 V4 H4 1T M5 0S 0C + ZR D6 F6 RC WD P3 FT A9 X2 + N3 GD O9 Q3 F7 K2 P5 H5 V3 + K3 Q4 G2 R2 WX XP 3I BG R0 + JO OL GN W4 QI E1 RI 8B 5B + K4 WK T3 K5 MU 9P K6 VR N9 + M9 F9 0P 0A JR D3 TK BP 2F + 2M K7 1N 8A H7 X3 T4 X4 5O + 8C 3M 6I 2P PU 7I X5 AL 3P + W2 ZB HN Q6 Q7 H8 + ], + 'Firefox' => %w[ + FF BI BF BH BN C0 CU EI F1 + FB FE AX FM FR FY I4 IF 8P + IW LH LY MB MN MO MY OA OS + PI PX QA S5 SX TF TO WF ZV + FP AD 2I P9 KJ WY VK W5 + 7C N7 W7 + ], + 'Internet Explorer' => %w[IE CZ BZ IM PS 3A 4A RN 2E], + 'Konqueror' => ['KO'], + 'NetFront' => ['NF'], + 'NetSurf' => ['NE'], + 'Nokia Browser' => %w[NB DO NO NV], + 'Opera' => %w[OP OG OH OI OM ON OO O1 OX Y1], + 'Safari' => %w[SF S7 MF SO PV], + 'Sailfish Browser' => ['SA'] + }.freeze + MOBILE_ONLY_BROWSERS = %w[ 36 AH AI BL C1 C4 CB CW DB 3M DT EU EZ FK FM FR FX GH @@ -764,7 +829,8 @@ def parse name = browser_from_client_hints[:name] version = browser_from_client_hints[:version] short = browser_from_client_hints[:short_name] - # engine is not ported yet + engine = '' + engine_version = '' if version =~ /^202[0-4]/ name = 'Iridium' @@ -776,17 +842,18 @@ def parse short = '3B' end - if browser_from_ua[:version] && %w[A0 AL HP JR MU OM OP - VR].include?(short) + if browser_from_ua[:version] && %w[A0 AL HP JR MU OM OP VR].include?(short) version = browser_from_ua[:version] end - # if ('Vewd Browser' === $name) -- engine only + if name == 'Vewd Browser' + engine = browser_from_ua[:engine] + engine_version = browser_from_ua[:engine_version] + end if ['Chromium', 'Chrome Webview'].include?(name) \ - && browser_from_ua[:name] \ + && !browser_from_ua[:name].empty? \ && !%w[CR CV AN].include?(browser_from_ua[:short_name]) - name = browser_from_ua[:name] short = browser_from_ua[:short_name] version = browser_from_ua[:version] @@ -797,42 +864,94 @@ def parse short = browser_from_ua[:short_name] end - # engine only 'if' - # engine only 'if' + # If user agent detects another browser, but the family matches, we use the detected engine from user agent + if name != browser_from_ua[:name] && browser_family(name) == browser_family(browser_from_ua[:name]) + engine = browser_from_ua[:engine] + engine_version = browser_from_ua[:engine_version] + end + + if name == browser_from_ua[:name] + engine = browser_from_ua[:engine] + engine_version = browser_from_ua[:engine_version] + end # TODO: more detailed version detection here - # https://github.com/matomo-org/device-detector/blob/6.4.5/Parser/Client/Browser.php#L1040 - # if browser_from_ua['version'] && + # https://github.com/matomo-org/device-detector/blob/master/Parser/Client/Browser.php#L1044 + if browser_from_ua[:version] && !browser_from_ua[:version]&.empty? && browser_from_ua[:version].include?(version.to_s) && satisfied_by_version?( + ">= #{version}", browser_from_ua[:version] + ) + + version = browser_from_ua[:version] + end version = '' if name == 'DuckDuckGo Privacy Browser' - # engine only 'if' + if engine == 'Blink' && name != 'Iridium' && satisfied_by_version?( + "> #{engine_version}", browser_from_client_hints[:version] + ) + + engine_version = browser_from_client_hints[:version] + end else + name = browser_from_ua[:name] short = browser_from_ua[:short_name] version = browser_from_ua[:version] + engine = browser_from_ua[:engine] + engine_version = browser_from_ua[:engine_version] end - # family + family = browser_family(short) + # TODO: https://github.com/matomo-org/device-detector/blob/6.4.5/Parser/Client/Browser.php#L1066 app_hash = @browser_hints.parse + if app_hash&.fetch(:name, nil) != nil name = app_hash[:name] - version = '' + version ||= '' short = browser_short_name(name) - # not implemented: - # if match_user_agent('Chrome/.+ Safari/537.36') - # engine + family only + if @user_agent.match?(%r{Chrome/.+ Safari/537.36}i) + engine = 'Blink' + family = browser_family(short) || 'Chrome' + built_engine_version = build_engine_version(engine) + if satisfied_by_version?(">= #{engine_version}", built_engine_version) + engine_version = built_engine_version + end + end + + if short.nil? + raise "Detected browser name '#{name}' was not found in AVAILABLE_BROWSERS. Tried to parse user agent: #{@user_agent}" + end end return nil if (name.nil? || name == '') || @user_agent.match?(/Cypress|PhantomJS/) + engine_version = '' if engine == 'Blink' && name == 'Flow Browser' + + if name == 'Every Browser' + family = 'Chrome' + engine = 'Blink' + engine_version = '' + end + + if name == 'TV-Browser Internet' && engine == 'Gecko' + family = 'Chrome' + engine = 'Blink' + engine_version = '' + end + + family = 'Chrome' if name == 'Wolvic' && engine == 'Blink' + family = 'Firefox' if name == 'Wolvic' && engine == 'Gecko' + { type: 'browser', name: name, - short_name: short, - version: version + # short_name: short, + version: version, + engine: engine, + engine_version: engine_version, + family: family } end @@ -849,7 +968,6 @@ def parse_browser_from_client_hints brands.each do |info_hash| brand = info_hash[:brand] brand_version = info_hash[:version] - brand = apply_client_hint_mapping(brand).to_s AVAILABLE_BROWSERS.each do |browser_short, browser_name| @@ -866,7 +984,7 @@ def parse_browser_from_client_hints break if !empty?(name) && name != 'Chromium' && name != 'Microsoft Edge' end - version = @client_hints.brand_version if @client_hints.brand_version + version = @client_hints.brand_version unless @client_hints.brand_version.empty? end { @@ -889,7 +1007,9 @@ def parse_browser_from_user_agent return { name: '', short_name: '', - version: '' + version: '', + engine: '', + engine_version: '' } end @@ -898,15 +1018,56 @@ def parse_browser_from_user_agent if browser_short version = build_version(regex[:version], matches) + engine = build_engine(regex[:engine] || {}, version) + engine_version = build_engine_version(engine) return { name: name, short_name: browser_short, - version: version + version: version, + engine: engine, + engine_version: engine_version } end - raise "Detected browser name #{name} was not found in $availableBrowsers. Tried to parse user agent: #{@user_agent}" + raise "Detected browser name #{name} was not found in AVAILABLE_BROWSERS. Tried to parse user agent: #{@user_agent}" + end + + # https://github.com/matomo-org/device-detector/blob/master/Parser/Client/Browser.php#L1238 + def build_engine(engine_data, browser_version) + engine = engine_data[:default] + + if engine_data[:versions] + engine_data[:versions].each do |version, version_engine| + engine = version_engine if !empty?(version) && satisfied_by_version?("> #{version}", + browser_version) + end + end + + return engine if engine && !engine.empty? + + @engine_parser.parse[:engine] || '' + end + + def build_engine_version(engine) + @engine_version_parser.use(@user_agent, engine) + result = @engine_version_parser.parse + result[:version] || '' + end + + def more_detailed_version(*versions) + versions.compact.inject do |result, version| + version.to_s.split('.').size > result.to_s.split('.').size ? version : result + end + end + + # https://github.com/matomo-org/device-detector/blob/master/Parser/Client/Browser.php#L927-L945 + def browser_family(browser_label) + return unless AVAILABLE_BROWSERS.keys.include?(browser_label) + + BROWSER_FAMILIES.find do |_family, browser_labels| + browser_labels.include?(browser_label) + end&.first end def browser_short_name(name) @@ -914,7 +1075,7 @@ def browser_short_name(name) end def fixture_file - 'regexes/client/browsers.yml' + 'client/browsers.yml' end def parser_name diff --git a/lib/device_detector/parser/client/browser_module/engine.rb b/lib/device_detector/parser/client/browser_module/engine.rb new file mode 100644 index 0000000..75521bf --- /dev/null +++ b/lib/device_detector/parser/client/browser_module/engine.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +class DeviceDetector + module Parser + module Client + module BrowserModule + class Engine < AbstractClientParser + # https://github.com/matomo-org/device-detector/blob/master/Parser/Client/Browser/Engine.php#L39-L60 + BROWSER_ENGINES = %w[ + WebKit + Blink + Trident + Text-based + Dillo + iCab + Elektra + Presto + Clecko + Gecko + KHTML + NetFront + Edge + NetSurf + Servo + Goanna + EkiohFlow + Arachne + LibWeb + Maple + ].freeze + + DOWNCASED_BROWSER_ENGINES = BROWSER_ENGINES.map(&:downcase).freeze + + def parse + parsed = super.dup + + return { engine: '' } if parsed.nil? + + { engine: parsed[:name] } if DOWNCASED_BROWSER_ENGINES.include?(parsed[:name].downcase) + end + + protected + + def fixture_file + 'client/browser_engine.yml' + end + + def parser_name + 'browserengine' + end + end + end + end + end +end diff --git a/lib/device_detector/parser/client/browser_module/engine/version.rb b/lib/device_detector/parser/client/browser_module/engine/version.rb new file mode 100644 index 0000000..4a1d40c --- /dev/null +++ b/lib/device_detector/parser/client/browser_module/engine/version.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +require 'device_detector/parser/client/hint/browser_hints' + +class DeviceDetector + module Parser + module Client + module BrowserModule + class EngineVersion < AbstractClientParser + attr_reader :user_agent, :engine + + def use(uas, engine) + @user_agent = uas + @engine = engine + end + + def parse + return {} if engine && engine.empty? + + if %w[Gecko Clecko].include?(engine) + pattern = %r{rv[: ]([0-9]+(?:\.[0-9]+)*)(?:[a-z]\d*)?.*(?:g|cl)ecko/[0-9]{8,10}}i + + if (matches = @user_agent.match(pattern)) + return { version: matches[1] } + end + end + + engine_token = engine.dup + + engine_token = 'Chr[o0]me|Chromium|Cronet' if engine == 'Blink' + engine_token = 'Arachne\/5\.' if engine == 'Arachne' + engine_token = 'LibWeb\+LibJs' if engine == 'LibWeb' + engine_token = 'Chr[o0]me|Chromium|Cronet' if engine == 'Blink' + + matches = @user_agent.match(%r{(?:#{engine_token})\s*[/_]?\s*(\d+(?:\.\d+)*|\d{1,7})(?=\D|$)}i) + + { version: matches.to_a.last } + end + + protected + + def parser_name + 'engine version' + end + end + end + end + end +end diff --git a/lib/device_detector/parser/client/feed_reader.rb b/lib/device_detector/parser/client/feed_reader.rb index 429c9f9..3890135 100644 --- a/lib/device_detector/parser/client/feed_reader.rb +++ b/lib/device_detector/parser/client/feed_reader.rb @@ -7,7 +7,7 @@ class FeedReader < AbstractClientParser protected def fixture_file - 'regexes/client/feed_readers.yml' + 'client/feed_readers.yml' end def parser_name diff --git a/lib/device_detector/parser/client/hint/app_hints.rb b/lib/device_detector/parser/client/hint/app_hints.rb index ab828a1..4344201 100644 --- a/lib/device_detector/parser/client/hint/app_hints.rb +++ b/lib/device_detector/parser/client/hint/app_hints.rb @@ -6,7 +6,7 @@ module Client module Hint class AppHints < AbstractParser def fixture_file - 'regexes/client/hints/apps.yml' + 'client/hints/apps.yml' end def parser_name @@ -17,11 +17,9 @@ def parse return nil unless @client_hints app_id = @client_hints.app - return nil if app_id.nil? name = regexes[app_id] - return nil if name == '' { name: name } diff --git a/lib/device_detector/parser/client/hint/browser_hints.rb b/lib/device_detector/parser/client/hint/browser_hints.rb index 9a727e1..2fe2700 100644 --- a/lib/device_detector/parser/client/hint/browser_hints.rb +++ b/lib/device_detector/parser/client/hint/browser_hints.rb @@ -6,7 +6,7 @@ module Client module Hint class BrowserHints < AbstractParser def fixture_file - 'regexes/client/hints/browsers.yml' + 'client/hints/browsers.yml' end def parser_name @@ -17,11 +17,9 @@ def parse return nil unless @client_hints app_id = @client_hints.app - return nil if app_id.nil? name = regexes[app_id] - return nil if name == '' { name: name } diff --git a/lib/device_detector/parser/client/library.rb b/lib/device_detector/parser/client/library.rb index c888e2d..90330be 100644 --- a/lib/device_detector/parser/client/library.rb +++ b/lib/device_detector/parser/client/library.rb @@ -7,7 +7,7 @@ class Library < AbstractClientParser protected def fixture_file - 'regexes/client/libraries.yml' + 'client/libraries.yml' end def parser_name diff --git a/lib/device_detector/parser/client/media_player.rb b/lib/device_detector/parser/client/media_player.rb index b211dd8..3ae58fc 100644 --- a/lib/device_detector/parser/client/media_player.rb +++ b/lib/device_detector/parser/client/media_player.rb @@ -7,7 +7,7 @@ class MediaPlayer < AbstractClientParser protected def fixture_file - 'regexes/client/mediaplayers.yml' + 'client/mediaplayers.yml' end def parser_name diff --git a/lib/device_detector/parser/client/mobile_app.rb b/lib/device_detector/parser/client/mobile_app.rb index fe57b88..1b3b258 100644 --- a/lib/device_detector/parser/client/mobile_app.rb +++ b/lib/device_detector/parser/client/mobile_app.rb @@ -39,7 +39,7 @@ def parse protected def fixture_file - 'regexes/client/mobile_apps.yml' + 'client/mobile_apps.yml' end def parser_name diff --git a/lib/device_detector/parser/client/pim.rb b/lib/device_detector/parser/client/pim.rb index 7806daf..a872cbe 100644 --- a/lib/device_detector/parser/client/pim.rb +++ b/lib/device_detector/parser/client/pim.rb @@ -7,7 +7,7 @@ class Pim < AbstractClientParser protected def fixture_file - 'regexes/client/pim.yml' + 'client/pim.yml' end def parser_name diff --git a/lib/device_detector/parser/device/abstract_device_parser.rb b/lib/device_detector/parser/device/abstract_device_parser.rb index 321376c..6793d52 100644 --- a/lib/device_detector/parser/device/abstract_device_parser.rb +++ b/lib/device_detector/parser/device/abstract_device_parser.rb @@ -1506,7 +1506,7 @@ def build_model(model, matches) 'PIX' => 'PIXPRO', 'QP' => 'Pico', 'PIR' => 'PIRANHA', - 'PIN' => 'PINE', + 'PIN' => 'PINE64', '9P' => 'Planet Computers', 'PLA' => 'Play Now', 'PY' => 'Ployer', diff --git a/lib/device_detector/parser/device/camera.rb b/lib/device_detector/parser/device/camera.rb index ae67382..71ae2c9 100644 --- a/lib/device_detector/parser/device/camera.rb +++ b/lib/device_detector/parser/device/camera.rb @@ -13,7 +13,7 @@ def parse protected def fixture_file - 'regexes/device/cameras.yml' + 'device/cameras.yml' end def parser_name diff --git a/lib/device_detector/parser/device/car_browser.rb b/lib/device_detector/parser/device/car_browser.rb index e9816dd..0ed072c 100644 --- a/lib/device_detector/parser/device/car_browser.rb +++ b/lib/device_detector/parser/device/car_browser.rb @@ -13,7 +13,7 @@ def parse protected def fixture_file - 'regexes/device/car_browsers.yml' + 'device/car_browsers.yml' end def parser_name diff --git a/lib/device_detector/parser/device/console.rb b/lib/device_detector/parser/device/console.rb index 10fcc23..86cb208 100644 --- a/lib/device_detector/parser/device/console.rb +++ b/lib/device_detector/parser/device/console.rb @@ -13,7 +13,7 @@ def parse protected def fixture_file - 'regexes/device/consoles.yml' + 'device/consoles.yml' end def parser_name diff --git a/lib/device_detector/parser/device/hbb_tv.rb b/lib/device_detector/parser/device/hbb_tv.rb index ce0a901..f2395eb 100644 --- a/lib/device_detector/parser/device/hbb_tv.rb +++ b/lib/device_detector/parser/device/hbb_tv.rb @@ -22,7 +22,7 @@ def parse protected def fixture_file - 'regexes/device/televisions.yml' + 'device/televisions.yml' end def parser_name diff --git a/lib/device_detector/parser/device/mobile.rb b/lib/device_detector/parser/device/mobile.rb index b5310a2..732655b 100644 --- a/lib/device_detector/parser/device/mobile.rb +++ b/lib/device_detector/parser/device/mobile.rb @@ -7,7 +7,7 @@ class Mobile < AbstractDeviceParser protected def fixture_file - 'regexes/device/mobiles.yml' + 'device/mobiles.yml' end def parser_name diff --git a/lib/device_detector/parser/device/notebook.rb b/lib/device_detector/parser/device/notebook.rb index 4f51108..d68c864 100644 --- a/lib/device_detector/parser/device/notebook.rb +++ b/lib/device_detector/parser/device/notebook.rb @@ -18,7 +18,7 @@ def parse protected def fixture_file - 'regexes/device/notebooks.yml' + 'device/notebooks.yml' end def parser_name diff --git a/lib/device_detector/parser/device/portable_media_player.rb b/lib/device_detector/parser/device/portable_media_player.rb index f8f4ba2..422fbde 100644 --- a/lib/device_detector/parser/device/portable_media_player.rb +++ b/lib/device_detector/parser/device/portable_media_player.rb @@ -13,7 +13,7 @@ def parse protected def fixture_file - 'regexes/device/portable_media_player.yml' + 'device/portable_media_player.yml' end def parser_name diff --git a/lib/device_detector/parser/device/shell_tv.rb b/lib/device_detector/parser/device/shell_tv.rb index fe9e192..7cac335 100644 --- a/lib/device_detector/parser/device/shell_tv.rb +++ b/lib/device_detector/parser/device/shell_tv.rb @@ -22,7 +22,7 @@ def parse protected def fixture_file - 'regexes/device/shell_tv.yml' + 'device/shell_tv.yml' end def parser_name diff --git a/lib/device_detector/parser/operating_system.rb b/lib/device_detector/parser/operating_system.rb index 66e059b..60b7e40 100644 --- a/lib/device_detector/parser/operating_system.rb +++ b/lib/device_detector/parser/operating_system.rb @@ -125,7 +125,7 @@ def parse family: family } - if OPERATING_SYSTEMS.key?(result[:name]) + if OPERATING_SYSTEMS.value?(result[:name]) result[:short_name], result[:name] = short_os_data(result[:name]) end @@ -135,7 +135,7 @@ def parse protected def fixture_file - 'regexes/oss.yml' + 'oss.yml' end def parser_name @@ -223,6 +223,7 @@ def parser_name 'KAL' => 'Kali', 'KAN' => 'Kanotix', 'KIN' => 'KIN OS', + 'KOL' => 'KolibriOS', 'KNO' => 'Knoppix', 'KTV' => 'KreaTV', 'KBT' => 'Kubuntu', @@ -260,6 +261,7 @@ def parser_name 'OS2' => 'OS/2', 'T64' => 'OSF1', 'OBS' => 'OpenBSD', + 'OHS' => 'OpenHarmony', 'OVS' => 'OpenVMS', 'OVZ' => 'OpenVZ', 'OWR' => 'OpenWrt', @@ -350,7 +352,7 @@ def parser_name 'Android' => %w[ AND CYN FIR REM RZD MLD MCD YNS GRI HAR ADR CLR BOS REV LEN SIR RRS WER PIC ARM - HEL BYI RIS PUF LEA MET + HEL BYI RIS PUF LEA MET OHS ], 'AmigaOS' => %w[AMG MOR ARO], 'BlackBerry' => %w[BLB QNX], @@ -377,7 +379,7 @@ def parser_name 'Mac' => ['MAC'], 'Mobile Gaming Console' => %w[PSP NDS XBX], 'OpenVMS' => ['OVS'], - 'Real-time OS' => %w[MTK TDX MRE JME REX RXT], + 'Real-time OS' => %w[MTK TDX MRE JME REX RXT KOL], 'Other Mobile' => %w[WOS POS SBA TIZ SMG MAE LUN GEO], 'Symbian' => %w[SYM SYS SY3 S60 S40], 'Unix' => %w[ @@ -410,6 +412,7 @@ def parser_name }.freeze LINEAGE_OS_VERSION_MAPPING = { + '16' => '23', '15' => '22', '14' => '21', '13' => '20.0', diff --git a/lib/device_detector/parser/vendor_fragment.rb b/lib/device_detector/parser/vendor_fragment.rb index e911e07..a10f1b6 100644 --- a/lib/device_detector/parser/vendor_fragment.rb +++ b/lib/device_detector/parser/vendor_fragment.rb @@ -29,7 +29,7 @@ def prepare_definition_for_cache(definition) end def fixture_file - 'regexes/vendorfragments.yml' + 'vendorfragments.yml' end def parser_name diff --git a/regexes/bots.yml b/regexes/bots.yml index 20361cb..2056df7 100644 --- a/regexes/bots.yml +++ b/regexes/bots.yml @@ -1107,7 +1107,7 @@ url: 'https://github.com/jaimeiniesta/metainspector' - regex: 'MixrankBot' - name: 'Mixrank Bot' + name: 'MixRank Bot' category: 'Crawler' url: 'http://mixrank.com' producer: @@ -2497,7 +2497,7 @@ - regex: 'MoodleBot-Linkchecker' name: 'MoodleBot Linkchecker' category: 'Search bot' - url: 'hhttps://docs.moodle.org/en/Usage' + url: 'https://docs.moodle.org/en/Usage' producer: name: 'Moodle Pty Ltd' url: 'https://moodle.org/' @@ -2652,7 +2652,7 @@ url: 'http://cloudsystemnetworks.com' - regex: 'HeartRails_Capture' - name: 'Heart Rails Capture' + name: 'HeartRails Capture' category: 'Service Agent' url: 'http://capture.heartrails.com' @@ -2849,7 +2849,7 @@ - regex: 'LumtelBot' name: 'LumtelBot' category: 'Crawler' - url: 'https://umtel.com' + url: 'https://lumtel.com' - regex: 'PiplBot' name: 'PiplBot' @@ -5033,6 +5033,22 @@ name: 'OpenGraph.io' url: 'https://www.opengraph.io' +- regex: 'microsoft-flow/' + name: 'Microsoft Power Automate' + category: 'Service Agent' + url: 'https://www.microsoft.com/en-us/power-platform/products/power-automate' + producer: + name: 'Microsoft Corporation' + url: 'https://www.microsoft.com/' + +- regex: 'Simbiat Software' + name: 'Simbiat Software' + category: 'Crawler' + url: 'https://www.simbiat.eu' + producer: + name: 'Simbiat Software' + url: 'https://www.simbiat.eu' + # Generic bots - regex: 'nuhk|grub-client|Download Demon|SearchExpress|Microsoft URL Control|borg|altavista|dataminr\.com|teoma|oegp|http%20client|htdig|mogimogi|larbin|scrubby|searchsight|semanticdiscovery|snappy|zeal(?!ot)|dataparksearch|findlinks|BrowserMob|URL2PNG|ZooShot|GomezA|Google SketchUp|Read%20Later|7Siters|centuryb\.o\.t9|InterNaetBoten|EasyBib AutoCite|Bidtellect|tomnomnom/meg|cortex|Re-re Studio|adreview|AHC/|NameOfAgent|Request-Promise|ALittle Client|Hello,? world|wp_is_mobile|0xAbyssalDoesntExist|Anarchy99|^revolt|nvd0rz|xfa1|Hakai|gbrmss|fuck-your-hp|IDBTE4M CODE87|Antoine|Insomania|Hells-Net|b3astmode|Linux Gnu \(cow\)|Test Certificate Info|iplabel|Magellan|TheSafex?Internetx?Search|Searcherx?web|kirkland-signature|LinkChain|survey-security-dot-txt|infrawatch|Time/|r00ts3c-owned-you|nvdorz|Root Slut|NiggaBalls|BotPoke|GlobalWebSearch|xx032_bo9vs83_2a|sslshed|geckotrail|Wordup|Keydrop|\(compatible\)|John Recon|SPARK COMMIT|masjesu|Komaru_The_Cat|Jesus Christ of Nazareth is LORD|Kowai|Hakai|LoliSec|LMAO|^xenu|^(?:chrome|firefox|Abcd|Dark|KvshClient|Node.js|Report Runner|url|Zeus|ZmEu)$|OnlyScans|TheInternetSearchx' name: 'Generic Bot' diff --git a/regexes/client/browsers.yml b/regexes/client/browsers.yml index 19fefb7..875dc45 100644 --- a/regexes/client/browsers.yml +++ b/regexes/client/browsers.yml @@ -5,6 +5,18 @@ # @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later ############### +# HeyTapBrowser or HeyTabAccount (https://play.google.com/store/apps/details?id=com.heytap.browser) +- regex: 'HeyTapBrowser/([\d.]+)' + name: 'HeyTapBrowser' + version: '$1' + +# QuarkPC (https://www.quark.cn/) +- regex: 'QuarkPC/(\d+\.[\.\d]+)' + name: 'QuarkPC' + version: '$1' + engine: + default: 'Blink' + # AltiBrowser (http://www.alticast.co.kr/) - regex: 'AltiBrowser/([\d.]+)' name: 'AltiBrowser' diff --git a/regexes/client/hints/browsers.yml b/regexes/client/hints/browsers.yml index 34e7fcf..4178365 100644 --- a/regexes/client/hints/browsers.yml +++ b/regexes/client/hints/browsers.yml @@ -321,6 +321,7 @@ 'com.getkeepsafe.browser': 'Keepsafe Browser' 'com.hawk.android.browser': 'Hawk Turbo Browser' 'com.zte.nubrowser': 'ZTE Browser' -'com.cloaktp.browser': 'Privacy Pioneer Browser' +'com.cloaktp.browser': 'Cloak Private Browser' 'company.thebrowser.arc': 'Arc Search' 'com.android.webview': 'Chrome Webview' +'com.heytap.browser': 'HeyTapBrowser' diff --git a/regexes/client/libraries.yml b/regexes/client/libraries.yml index 6ec19aa..e4b1a0a 100644 --- a/regexes/client/libraries.yml +++ b/regexes/client/libraries.yml @@ -694,3 +694,18 @@ name: 'MatomoTracker' version: '$1' url: 'https://github.com/matomo-org/matomo-sdk-ios' + +- regex: 'libHTTP/(\d+[.\d]+)' + name: 'LibHTTP' + version: '$1' + url: 'https://www.libhttp.org/' + +- regex: 'BIC Tracker' + name: 'BIC Tracker' + version: '' + url: 'https://github.com/Simbiat/BIC-Tracker' + +- regex: 'Lodestone PHP Parser' + name: 'Lodestone PHP Parser' + version: '' + url: 'https://github.com/Simbiat/lodestone-parser' diff --git a/regexes/client/mobile_apps.yml b/regexes/client/mobile_apps.yml index 674874b..f88a656 100644 --- a/regexes/client/mobile_apps.yml +++ b/regexes/client/mobile_apps.yml @@ -146,6 +146,11 @@ name: 'Google Assistant' version: '$1' +# WeCom (https://work.weixin.qq.com/ | https://play.google.com/store/apps/details?id=com.tencent.wework | https://apps.apple.com/app/id1087897068) +- regex: 'wxwork/(\d+[.\d]+)' + name: 'WeCom' + version: '$1' + # WeChat - regex: 'MicroMessenger/([\d.]+)' name: 'WeChat' @@ -418,11 +423,6 @@ name: 'U-Cursos' version: '$1' -# HeyTabBrowser or HeyTabAccount -- regex: 'HeyTapBrowser/([\d.]+)' - name: 'HeyTapBrowser' - version: '$1' - # Roblox App - regex: 'RobloxApp/([\d.]+)' name: 'Roblox' @@ -2680,17 +2680,42 @@ name: 'DeepL' version: '' +# Anything LLM (https://github.com/Mintplex-Labs/anything-llm) +- regex: 'anythingllm-desktop/([\d.]+)' + name: 'Anything LLM' + version: '$1' + +# OP.GG (https://play.google.com/store/apps/details?id=gg.op.lol.android&hl=en_US) +- regex: 'opgg-electron-app/([\d.]+)' + name: 'OP.GG' + version: '$1' + +# VidJuice UniTube (https://www.vidjuice.com/unitube-video-converter/) +- regex: 'VidJuiceUniTube/([\d.]+)' + name: 'VidJuice UniTube' + version: '$1' + # Electron generic apps - regex: ' (?!(?:AppleWebKit|brave|Cypress|Franz|Mailspring|Notion|Basecamp|Evernote|catalyst|ramboxpro|BlueMail|BeakerBrowser|Dezor|TweakStyle|Colibri|Polypane|Singlebox|Skye|VibeMate|(?:d|LT|Glass|Sushi|Flash|OhHai)Browser|Sizzy))([a-z0-9]*)(?:-desktop|-electron-app)?/(\d+\.[\d.]+).*Electron/' name: '$1' version: '$2' # Generic app -- regex: 'appname/([^/; ]*)' - name: '$1' - version: '' +- regex: 'AppVersion/([\d.]+).+appname/((?!\(null\))[^/; ]*)' + name: '$2' + version: '$1' # AFNetworking generic - regex: '(?!AlohaBrowser)([^/;]*)/(\d+\.[\d.]+) \((?:iPhone|iPad); (?:iOS|iPadOS) [0-9.]+; Scale/[0-9.]+\)' name: '$1' version: '$2' + +# Seekr App (Android) +- regex: '^Seekr/([\d\.]+).*Android' + name: 'Seekr' + version: '$1' + +# Seekr App (iOS) +- regex: '^Seekr/([\d\.]+).*CFNetwork' + name: 'Seekr' + version: '$1' diff --git a/regexes/client/pim.yml b/regexes/client/pim.yml index dcdaeaf..ac871af 100644 --- a/regexes/client/pim.yml +++ b/regexes/client/pim.yml @@ -158,7 +158,7 @@ version: '$1' - regex: 'mailapp/(\d+\.[.\d]+)' - name: 'mailapp' + name: 'MailApp' version: '$1' # Gmail diff --git a/regexes/device/mobiles.yml b/regexes/device/mobiles.yml index dd638f5..4de87d2 100644 --- a/regexes/device/mobiles.yml +++ b/regexes/device/mobiles.yml @@ -1541,6 +1541,18 @@ Apple: - regex: '(?:MDCR_|ICRU_|Apple-)?iPh(?:one)?17[C,_]3|(?:iPhone[ _]?16| 16)(?:[);/ ]|$)' model: 'iPhone 16' device: 'phablet' + - regex: '(?:MDCR_|ICRU_|Apple-)?iPh(?:one)?18[C,_]2|(?:iPhone[ _]?17[ _]?Pro[ _]?Max| 17PROMAX)(?:[);/ ]|$)' + model: 'iPhone 17 Pro Max' + device: 'phablet' + - regex: '(?:MDCR_|ICRU_|Apple-)?iPh(?:one)?18[C,_]1|(?:iPhone[ _]?17[ _]?Pro| 17PRO)(?:[);/ ]|$)' + model: 'iPhone 17 Pro' + device: 'phablet' + - regex: '(?:MDCR_|ICRU_|Apple-)?iPh(?:one)?18[C,_]3|(?:iPhone[ _]?17| 17)(?:[);/ ]|$)' + model: 'iPhone 17' + device: 'phablet' + - regex: '(?:MDCR_|ICRU_|Apple-)?iPh(?:one)?18[C,_]4|(?:iPhone[ _]?17[ _]?Air| 17AIR)(?:[);/ ]|$)' + model: 'iPhone Air' + device: 'phablet' # specific tablet devices - regex: '(?:MDCR_|ICRU_|Apple-)?iPad1[C,_]1' @@ -2069,7 +2081,7 @@ Brigmton: # Acer (acer.com) Acer: - regex: 'acer|ACTAB|TravelMate|(? e - raise "Failed to parse #{fixture_file}, reason: #{e}" - end - - fixtures.each do |f| - describe f['user_agent'] do - it 'should be detected' do - detector.use(f['user_agent'], f['headers']) - - if f['bot'] - expect(detector.bot?).to eq true - expect(detector.bot_name).to eq str_or_nil(f['bot']['name']) - next - end - - expect(detector.name).to eq str_or_nil(f['client']['name']) if f['client'] - - os_family = str_or_nil(f['os_family']) - if os_family != 'Unknown' - if os_family.nil? - expect(detector.os_family).to be_nil - else - expect(detector.os_family).to eq(os_family) - end - - name = str_or_nil(f['os']['name']) - if name.nil? - expect(detector.os_name).to be_nil - else - expect(detector.os_name).to eq name - end - - os_version = str_or_nil(f['os']['version']) - if os_version.nil? - expect(detector.os_full_version).to be_nil - else - expect(detector.os_full_version).to eq os_version - end - end - - if f['device'] - expected_type = str_or_nil(f['device']['type']) - actual_type = detector.device_type - - if expected_type.nil? - expect(actual_type).to be_nil - else - expect(actual_type).to eq expected_type - end - - model = str_or_nil(f['device']['model']) - model = model.to_s unless model.nil? - - if model.nil? - expect(detector.device_name).to be_nil - else - expect(detector.device_name).to eq model - end - - brand = str_or_nil(f['device']['brand']) - brand = brand.to_s unless brand.nil? - if brand.nil? - expect(detector.device_brand).to be_nil - else - expect(detector.device_brand).to eq brand - end - end - end - end - end - end - end -end diff --git a/spec/device_detector/device_fixtures_spec.rb b/spec/device_detector/device_fixtures_spec.rb index 6e5246d..ef0259b 100644 --- a/spec/device_detector/device_fixtures_spec.rb +++ b/spec/device_detector/device_fixtures_spec.rb @@ -1,41 +1,31 @@ # frozen_string_literal: true -require_relative '../spec_helper' - describe DeviceDetector do - fixture_dir = File.expand_path('../fixtures/device', __dir__) - fixture_files = Dir["#{fixture_dir}/*.yml"] - - raise 'invalid fixture load path specified' if fixture_files.empty? + subject { described_class.new(user_agent, headers) } - fixture_files.each do |fixture_file| - describe File.basename(fixture_file) do - fixtures = YAML.safe_load_file(fixture_file) - fixtures.each do |f| - user_agent = f['user_agent'] - headers = f['headers'] + fixtures = load_fixtures('device/*.yml') + fixtures.each do |f| + describe [f['user_agent'], f['headers']].compact.join(' / ') do + let(:fixture) { f } - describe user_agent do - let(:device) do - DeviceDetector.new(user_agent, headers) - end + let(:user_agent) { f['user_agent'] } + let(:headers) { f['headers'] } + let(:device) { f['device'] } - it 'should be known' do - expect(device).to be_known - end + it 'should be known' do + expect(subject).to be_known + end - it 'should have the expected model' do - expect(device.device_name).to eq(str_or_nil(f['device']['model'])) - end + it 'should have the expected model' do + expect(subject.device_name.to_s).to eq device['model'] + end - it 'should have the expected brand' do - expect(device.device_brand).to eq(f['device']['brand']) - end + it 'should have the expected brand' do + expect(subject.device_brand).to eq device['brand'] + end - it 'should have the expected type' do - expect(device.device_type).to eq(f['device']['type']) - end - end + it 'should have the expected type' do + expect(subject.device_type).to eq device['type'] end end end diff --git a/spec/device_detector/device_spec.rb b/spec/device_detector/device_spec.rb index 34a3427..abe2ec9 100644 --- a/spec/device_detector/device_spec.rb +++ b/spec/device_detector/device_spec.rb @@ -1,9 +1,7 @@ # frozen_string_literal: true -require_relative '../spec_helper' - describe DeviceDetector do - subject { DeviceDetector.new(user_agent) } + subject { described_class.new(user_agent) } alias_method :device, :subject diff --git a/spec/device_detector/memory_cache_spec.rb b/spec/device_detector/memory_cache_spec.rb index 7bf7de2..f67c6b9 100644 --- a/spec/device_detector/memory_cache_spec.rb +++ b/spec/device_detector/memory_cache_spec.rb @@ -1,9 +1,7 @@ # frozen_string_literal: true -require_relative '../spec_helper' - describe DeviceDetector::MemoryCache do - let(:subject) { DeviceDetector::MemoryCache.new(config) } + subject { described_class.new(config) } let(:config) { {} } @@ -133,7 +131,7 @@ end end - describe 'cache purging' do + describe 'cache partial purging' do let(:config) { { max_cache_keys: 3 } } it 'purges the cache when key size arrives at max' do @@ -145,4 +143,12 @@ expect(subject.data.keys.size).to eq 3 end end + + describe '.purge!' do + before { subject.set('some_key', 'value') } + + it 'removes all cached keys' do + expect { subject.purge! }.to change(subject, :data).from({ 'some_key' => 'value' }).to({}) + end + end end diff --git a/spec/device_detector/os_fixtures_spec.rb b/spec/device_detector/os_fixtures_spec.rb index b47083f..b2da237 100644 --- a/spec/device_detector/os_fixtures_spec.rb +++ b/spec/device_detector/os_fixtures_spec.rb @@ -1,29 +1,33 @@ # frozen_string_literal: true -require_relative '../spec_helper' - describe DeviceDetector do - fixture_dir = File.expand_path('../fixtures/parser', __dir__) - fixture_files = Dir["#{fixture_dir}/oss.yml"] + subject { described_class.new(user_agent, headers) } + + fixtures = load_fixtures('parser/oss.yml') + fixtures.each do |f| + describe [f['user_agent'], f['headers']].compact.join(' / ') do + let(:fixture) { f } + + let(:user_agent) { f['user_agent'] } + let(:headers) { f['headers'] } + let(:os) { f['os'] } + let(:os_result) { subject.send(:os_result) } + let(:os) { normalize_fixture(f['os']) } - raise 'invalid fixture load path specified' if fixture_files.empty? + it 'should have the expected OS name' do + expect(subject.os_name).to eq os[:name] + end - fixture_files.each do |fixture_file| - describe File.basename(fixture_file) do - fixtures = YAML.load_file(fixture_file) - fixtures.each do |f| - user_agent = f['user_agent'] - headers = f['headers'] + it 'should have the expected OS version', if: os_version?(f) do + expect(subject.os_full_version.to_s).to eq os[:version] + end - describe user_agent do - let(:device) do - DeviceDetector.new(user_agent, headers) - end + it 'should have the expected OS family' do + expect(subject.os_family).to eq os[:family] + end - it 'should have the expected name' do - expect(device.os_name).to eq f['os']['name'] - end - end + it 'should have OS data as in fixture' do + expect(os_result).to include(os) end end end diff --git a/spec/device_detector/parser/bot_spec.rb b/spec/device_detector/parser/bot_spec.rb index fc89be3..f481f0a 100644 --- a/spec/device_detector/parser/bot_spec.rb +++ b/spec/device_detector/parser/bot_spec.rb @@ -1,30 +1,81 @@ # frozen_string_literal: true describe DeviceDetector::Parser::Bot do - fixture_dir = File.expand_path('../../fixtures/detector', __dir__) - fixture_files = Dir["#{fixture_dir}/bots.yml"] + subject(:parser) { described_class.new } - raise 'invalid fixture load path specified' if fixture_files.empty? + let(:user_agent) { 'AdsBot-Google (+http://www.google.com/adsbot.html)' } - fixture_files.each do |fixture_file| - describe File.basename(fixture_file) do - fixtures = YAML.load_file(fixture_file) + before do + parser.use(user_agent, nil) + end + + after do + described_class.reset_custom_fixtures! + DeviceDetector.reset_cache! + end + + describe '.add_fixture_path' do + it 'adds new fixture path to class instancevar' do + expect { described_class.add_fixture_path('some/path/to/fixture.yaml') } + .to change(described_class, :custom_fixture_paths) + .from([]).to(['some/path/to/fixture.yaml']) + end + end + + describe '.reset_custom_fixtures!' do + before do + described_class.add_fixture_path('some/path/to/fixture.yaml') + end + + it 'resets fixture paths to class to default' do + expect { described_class.reset_custom_fixtures! } + .to change(described_class, :custom_fixture_paths) + .from(['some/path/to/fixture.yaml']).to([]) + end + end + + describe '#parser_type' do + it 'returns bot symbol' do + expect(parser.parser_type).to eq :bot + end + end + + describe '#parse' do + let(:fixture) do + { name: 'Googlebot', + category: 'Search bot', + url: 'https://developers.google.com/search/docs/crawling-indexing/overview-google-crawlers', + producer: { name: 'Google Inc.', url: 'https://www.google.com/' } } + end + + context 'when known user agent set' do + it 'returns expected parsed result' do + expect(parser.parse).to include(fixture) + end + end + + context 'when unknown user agent set' do + let(:user_agent) { 'ChromeBrother/1.2.3' } - fixtures.each do |f| - user_agent = f['user_agent'] - headers = f['headers'] + it 'returns expected parsed result' do + expect(parser.parse).to be_nil + end + end - device = DeviceDetector.new(user_agent, headers) + context 'when custom regex has been added to parser' do + let(:user_agent) { 'ChromeBrother/1.2.3' } + let(:fixture) do + { category: 'Spec bot', name: 'My custom User-Agent Bot', + producer: { name: 'Nick Kugaevsky', url: 'https://github.com/kugaevsky' } } + end - describe user_agent do - it 'should be a bot' do - expect(device.bot?).to eq(true) - end + before do + path = File.expand_path('../../support/custom_regexes/custom_bot.yml', __dir__) + described_class.add_fixture_path(path) + end - it 'should have the expected name' do - expect(device.bot_name).to eq(f['bot']['name']) - end - end + it 'returns expected parsed result' do + expect(parser.parse).to include(fixture) end end end diff --git a/spec/device_detector_spec.rb b/spec/device_detector_spec.rb index ee74a0f..4654c74 100644 --- a/spec/device_detector_spec.rb +++ b/spec/device_detector_spec.rb @@ -1,12 +1,58 @@ # frozen_string_literal: true -require_relative 'spec_helper' - describe DeviceDetector do - subject { DeviceDetector.new(user_agent) } + subject { described_class.new(user_agent) } alias_method :client, :subject + describe '.root' do + it 'returns gem root directory' do + expect(described_class.root).to eq File.expand_path('..', __dir__) + end + end + + describe '.regexes_dir' do + it 'returns gem regexes directory' do + expect(described_class.regexes_dir).to eq File.expand_path('../regexes', __dir__) + end + end + + describe '.parser_classes' do + let(:parser_classes) do + [ + described_class::Parser::Client::FeedReader, + described_class::Parser::Client::MobileApp, + described_class::Parser::Client::MediaPlayer, + described_class::Parser::Client::Pim, + described_class::Parser::Client::Browser, + described_class::Parser::Client::Library, + described_class::Parser::Device::HbbTv, + described_class::Parser::Device::ShellTv, + described_class::Parser::Device::Notebook, + described_class::Parser::Device::Console, + described_class::Parser::Device::CarBrowser, + described_class::Parser::Device::Camera, + described_class::Parser::Device::PortableMediaPlayer, + described_class::Parser::Device::Mobile, + described_class::Parser::Bot + ] + end + + it 'returns parser classes' do + expect(described_class.parser_classes).to eq parser_classes + end + end + + describe '.reset_cache!' do + before { subject.name } + + let(:user_agent) { 'AnyAgent/1.2.3 '} + + it 'resets cache' do + expect { described_class.reset_cache! }.to change { described_class.cache.data.size }.to(0) + end + end + describe 'known user agent' do describe 'desktop chrome browser' do let(:user_agent) do @@ -45,13 +91,13 @@ describe '#known?' do it 'returns true' do - expect(client.known?).to eq true + expect(client.known?).to be true end end describe '#bot?' do it 'returns false' do - expect(client.bot?).to eq false + expect(client.bot?).to be false end end @@ -126,13 +172,13 @@ describe '#known?' do it 'returns false' do - expect(client.known?).to eq false + expect(client.known?).to be false end end describe '#bot?' do it 'returns false' do - expect(client.bot?).to eq false + expect(client.bot?).to be false end end @@ -172,13 +218,13 @@ describe '#known?' do it 'returns false' do - expect(client.known?).to eq false + expect(client.known?).to be false end end describe '#bot?' do it 'returns false' do - expect(client.bot?).to eq false + expect(client.bot?).to be false end end @@ -218,13 +264,13 @@ describe '#known?' do it 'returns false' do - expect(client.known?).to eq false + expect(client.known?).to be false end end describe '#bot?' do it 'returns false' do - expect(client.bot?).to eq false + expect(client.bot?).to be false end end @@ -264,13 +310,13 @@ describe '#known?' do it 'returns false' do - expect(client.known?).to eq false + expect(client.known?).to be false end end describe '#bot?' do it 'returns true' do - expect(client.bot?).to eq true + expect(client.bot?).to be true end end diff --git a/spec/fixtures/client/browser.yml b/spec/fixtures/client/browser.yml index 3b4b72e..c7e2dd4 100644 --- a/spec/fixtures/client/browser.yml +++ b/spec/fixtures/client/browser.yml @@ -10305,7 +10305,7 @@ user_agent: Mozilla/5.0 (Linux; Android 14; SM-A546V Build/UP1A.231005.007; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/126.0.6478.134 Mobile Safari/537.36 client: type: browser - name: Privacy Pioneer Browser + name: Cloak Private Browser version: "" engine: Blink engine_version: 126.0.6478.134 @@ -10462,3 +10462,34 @@ engine: WebKit engine_version: "" family: Opera +- + user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 QuarkPC/2.1.3.259 + client: + type: browser + name: QuarkPC + version: 2.1.3.259 + engine: Blink + engine_version: 112.0.0.0 + family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Mobile Safari/537.36 + client: + type: browser + name: Quetta + version: 132.0.0.0 + engine: Blink + engine_version: 132.0.0.0 + family: Chrome + headers: + Sec-CH-UA: '"Not A(Brand";v="8", "Chromium";v="132", "Quetta";v="132"' +- + user_agent: Mozilla/5.0 (Linux; U; Android 14; en-it; CPH2467 Build/UKQ1.230924.001) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.6422.72 Mobile Safari/537.36 HeyTapBrowser/45.12.6.1 + client: + type: browser + name: HeyTapBrowser + version: 45.12.6.1 + engine: Blink + engine_version: 125.0.6422.72 + family: Chrome + headers: + http-x-requested-with: com.heytap.browser diff --git a/spec/fixtures/client/library.yml b/spec/fixtures/client/library.yml index b5f21ad..34611e0 100644 --- a/spec/fixtures/client/library.yml +++ b/spec/fixtures/client/library.yml @@ -791,3 +791,21 @@ type: library name: MatomoTracker version: 7.7.0 +- + user_agent: KolibriOS libHTTP/1.1 + client: + type: library + name: LibHTTP + version: "1.1" +- + user_agent: BIC Tracker + client: + type: library + name: BIC Tracker + version: "" +- + user_agent: Lodestone PHP Parser + client: + type: library + name: Lodestone PHP Parser + version: "" diff --git a/spec/fixtures/client/mobile_app.yml b/spec/fixtures/client/mobile_app.yml index d741684..b9e298a 100644 --- a/spec/fixtures/client/mobile_app.yml +++ b/spec/fixtures/client/mobile_app.yml @@ -2007,19 +2007,19 @@ user_agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_16_0) AppleWebKit/537.36 (KHTML, like Gecko) VidJuiceUniTube/5.0.3 Chrome/85.0.4183.121 Electron/10.4.7 Safari/537.36 client: type: mobile app - name: VidJuiceUniTube + name: VidJuice UniTube version: 5.0.3 - user_agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) opgg-electron-app/1.4.1 Chrome/108.0.5359.215 Electron/22.3.27 Safari/537.36 client: type: mobile app - name: opgg + name: OP.GG version: 1.4.1 - user_agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) anythingllm-desktop/1.4.1 Chrome/116.0.5845.228 Electron/26.6.1 Safari/537.36 client: type: mobile app - name: anythingllm + name: Anything LLM version: 1.4.1 - user_agent: iPlayTV/3.3.9 (Apple TV; iOS 16.1; Scale/1.00) @@ -2393,3 +2393,39 @@ type: mobile app name: DeepL version: "" +- + user_agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.6668.101 Safari/537.36 Language/zh ColorScheme/Light wxwork/4.1.39 (MicroMessenger/6.2) WindowsWechat MailPlugin_Electron WeMail embeddisk wwmver/3.26.39.639 noMediaCs/false + client: + type: mobile app + name: WeCom + version: 4.1.39 +- + user_agent: Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 wxwork/4.1.39 MicroMessenger/7.0.1 Language/zh ColorScheme/Light wwmver/3.26.38.377 + client: + type: mobile app + name: WeCom + version: 4.1.39 +- + user_agent: Seekr/1.6.0.748-debug Dalvik/2.1.0 (Linux; U; Android 14; SM-S928W Build/UP1A.231005.007) + client: + type: mobile app + name: Seekr + version: "1.6.0.748" +- + user_agent: Seekr/1077 CFNetwork/3826.400.120 Darwin/24.3.0 + client: + type: mobile app + name: Seekr + version: "1077" +- + user_agent: Mozilla/5.0 (iPhone; CPU iPhone OS 15_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Cici_2.0.0 JsSdk/2.0 NetType/MOBILE Channel/App Store AppVersion/2.0.0 AppName/Cici Rifle_2.0.0 Spark/1.3.4 HybridTag/5AB1DA49-C007-4655-9CEE-6A5E60142D9A WKWebView/1 Bullet/1 Cici/2.0.0 FalconTag/9CB373C3-ED16-4918-B035-4C8806D7FCBE + client: + type: mobile app + name: Cici + version: 2.0.0 +- + user_agent: Mozilla/5.0 (iPhone; CPU iPhone OS 16_0_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 BytedanceWebview/d8a21c6 musical_ly_26.2.0 JsSdk/2.0 NetType/4G Channel/App Store ByteLocale/en Region/GB musical_ly_26.3.0 JsSdk/2.0 NetType/MOBILE Channel/App Store AppVersion/26.3.0 AppName/musical_ly Rifle_26.3.0 HybridTag/D4509D41-374D-4EFC-8C54-38378107CCB8 WKWebView/1 Bullet/1 musical_ly/26.3.0 Spark/1.1.8.7-bugfix FalconTag/3519627B-978F-4C09-8585-E5DA83CE3CD5 + client: + type: mobile app + name: TikTok + version: 26.2.0 diff --git a/spec/fixtures/client/pim.yml b/spec/fixtures/client/pim.yml index 867f684..93a2a52 100644 --- a/spec/fixtures/client/pim.yml +++ b/spec/fixtures/client/pim.yml @@ -273,7 +273,7 @@ user_agent: Mozilla/5.0 (iPhone; CPU iPhone OS 17_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 mailapp/6.5.0 client: type: pim - name: mailapp + name: MailApp version: 6.5.0 - user_agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2pre) Gecko/2009031304 Spicebird/0.7.1 diff --git a/spec/fixtures/detector/bots.yml b/spec/fixtures/detector/bots.yml index 98a4127..522fa19 100644 --- a/spec/fixtures/detector/bots.yml +++ b/spec/fixtures/detector/bots.yml @@ -1936,7 +1936,7 @@ - user_agent: Mozilla/5.0 (compatible; MixrankBot; crawler@mixrank.com) bot: - name: Mixrank Bot + name: MixRank Bot category: Crawler url: http://mixrank.com producer: @@ -4120,7 +4120,7 @@ - user_agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110515 HeartRails_Capture/1.0.4 (+http://capture.heartrails.com/) Namoroka/3.6.17 bot: - name: Heart Rails Capture + name: HeartRails Capture category: Service Agent url: http://capture.heartrails.com - @@ -4375,7 +4375,7 @@ bot: name: LumtelBot category: Crawler - url: https://umtel.com + url: https://lumtel.com - user_agent: Mozilla/5.0+(compatible;+PiplBot;+http://www.pipl.com/bot/) bot: @@ -5790,7 +5790,7 @@ bot: name: MoodleBot Linkchecker category: Search bot - url: hhttps://docs.moodle.org/en/Usage + url: https://docs.moodle.org/en/Usage producer: name: Moodle Pty Ltd url: https://moodle.org/ @@ -8671,7 +8671,7 @@ producer: name: Github url: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/about-anonymized-urls -- +- user_agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Bluesky Cardyb/1.1; +mailto:support@bsky.app) Chrome/W.X.Y.Z Safari/537.36 bot: name: Bluesky @@ -8697,3 +8697,21 @@ user_agent: Mozilla/5.0; Keydrop.io/1.0(onlyscans.com/about); bot: name: Generic Bot +- + user_agent: azure-logic-apps/1.0 (workflow xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; version xxxxxxxxxxxxxxxxxxxx) microsoft-flow/1.0 + bot: + name: Microsoft Power Automate + category: Service Agent + url: https://www.microsoft.com/en-us/power-platform/products/power-automate + producer: + name: Microsoft Corporation + url: https://www.microsoft.com/ +- + user_agent: Simbiat Software + bot: + name: Simbiat Software + category: Crawler + url: https://www.simbiat.eu + producer: + name: Simbiat Software + url: https://www.simbiat.eu diff --git a/spec/fixtures/detector/desktop.yml b/spec/fixtures/detector/desktop.yml index 40a0f3b..ddef547 100644 --- a/spec/fixtures/detector/desktop.yml +++ b/spec/fixtures/detector/desktop.yml @@ -3506,7 +3506,7 @@ type: browser name: Maxthon version: "3.0" - engine: WebKit + engine: Trident engine_version: "" device: type: desktop diff --git a/spec/fixtures/detector/mobile_apps.yml b/spec/fixtures/detector/mobile_apps.yml index 10651aa..56a79ae 100644 --- a/spec/fixtures/detector/mobile_apps.yml +++ b/spec/fixtures/detector/mobile_apps.yml @@ -495,22 +495,6 @@ model: Galaxy Tab A 10.1" (2019) os_family: Android browser_family: Unknown -- - user_agent: Mozilla/5.0 (Linux; U; Android 10; zh-cn; PDEM10 Build/QKQ1.191222.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.80 Mobile Safari/537.36 HeyTapBrowser/40.7.4.1 - os: - name: Android - version: "10" - platform: "" - client: - type: mobile app - name: HeyTapBrowser - version: 40.7.4.1 - device: - type: smartphone - brand: OPPO - model: Find X2 - os_family: Android - browser_family: Unknown - user_agent: 'Mozilla/5.0 (2822MB; 720x1411; 320x319; 411x806; Samsung SM-A115F; 10) AppleWebKit/537.36 (KHTML, like Gecko) ROBLOX Android App 2.448.411159 Phone Hybrid() GooglePlayStore RobloxApp/2.448.411159 (GlobalDist; GooglePlayStore)' os: diff --git a/spec/fixtures/detector/peripheral.yml b/spec/fixtures/detector/peripheral.yml index 9953d2d..fc7b11d 100644 --- a/spec/fixtures/detector/peripheral.yml +++ b/spec/fixtures/detector/peripheral.yml @@ -872,7 +872,7 @@ engine_version: 75.0.3770.143 device: type: peripheral - brand: PINE + brand: PINE64 model: A64 os_family: Android browser_family: Chrome diff --git a/spec/fixtures/detector/phablet-1.yml b/spec/fixtures/detector/phablet-1.yml index 7c5df8e..b552701 100644 --- a/spec/fixtures/detector/phablet-1.yml +++ b/spec/fixtures/detector/phablet-1.yml @@ -6094,3 +6094,93 @@ model: iPhone 16e os_family: iOS browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; SM-W9025) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/28.1 Chrome/130.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Samsung Browser + version: "28.1" + engine: Blink + engine_version: 130.0.0.0 + device: + type: phablet + brand: Samsung + model: Galaxy W25 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; 24117RN76L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: phablet + brand: Xiaomi + model: Redmi Note 14 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; Infinix X6870) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: phablet + brand: Infinix + model: Note 50S 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 12; Infinix X671) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 103.0.0.0 + engine: Blink + engine_version: 103.0.0.0 + device: + type: phablet + brand: Infinix + model: Note 12 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; 23021RAA2G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.5938.60 Mobile Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 117.0.5938.60 + engine: Blink + engine_version: 117.0.5938.60 + device: + type: phablet + brand: Xiaomi + model: Redmi Note 12 + os_family: Android + browser_family: Chrome diff --git a/spec/fixtures/detector/portable_media_player.yml b/spec/fixtures/detector/portable_media_player.yml index a757617..1ef9200 100644 --- a/spec/fixtures/detector/portable_media_player.yml +++ b/spec/fixtures/detector/portable_media_player.yml @@ -837,3 +837,21 @@ model: M508 os_family: Android browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; Fanvace M36) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 108.0.0.0 + engine: Blink + engine_version: 108.0.0.0 + device: + type: portable media player + brand: Fanvace + model: M36 + os_family: Android + browser_family: Chrome diff --git a/spec/fixtures/detector/smartphone-11.yml b/spec/fixtures/detector/smartphone-11.yml index d090e5e..f8a1e3e 100644 --- a/spec/fixtures/detector/smartphone-11.yml +++ b/spec/fixtures/detector/smartphone-11.yml @@ -7559,15 +7559,17 @@ version: "10" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 40.7.2.9 + engine: Blink + engine_version: 70.0.3538.80 device: type: smartphone brand: Realme model: V3 5G os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; U; Android 10; zh-CN; RMX2111 Build/QP1A.190711.020) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 UCBrowser/13.1.3.1093 Mobile Safari/537.36 os: diff --git a/spec/fixtures/detector/smartphone-12.yml b/spec/fixtures/detector/smartphone-12.yml index ddf562a..48987a9 100644 --- a/spec/fixtures/detector/smartphone-12.yml +++ b/spec/fixtures/detector/smartphone-12.yml @@ -464,7 +464,7 @@ device: type: smartphone brand: Stonex - model: EVO + model: STX EVO os_family: Android browser_family: Chrome - @@ -482,7 +482,7 @@ device: type: smartphone brand: Stonex - model: Mini + model: STX Mini os_family: Android browser_family: Android Browser - @@ -500,7 +500,7 @@ device: type: smartphone brand: Stonex - model: MINI 2 + model: STX MINI 2 os_family: Android browser_family: Chrome - @@ -518,7 +518,7 @@ device: type: smartphone brand: Stonex - model: ULTRA + model: STX ULTRA os_family: Android browser_family: Chrome - @@ -536,7 +536,7 @@ device: type: smartphone brand: Stonex - model: ULTRA 2 + model: STX ULTRA 2 os_family: Android browser_family: Chrome - diff --git a/spec/fixtures/detector/smartphone-15.yml b/spec/fixtures/detector/smartphone-15.yml index d335d61..dc76405 100644 --- a/spec/fixtures/detector/smartphone-15.yml +++ b/spec/fixtures/detector/smartphone-15.yml @@ -5191,7 +5191,7 @@ device: type: smartphone brand: Unimax - model: U452TL + model: UMX U452TL os_family: Android browser_family: Chrome - @@ -5209,7 +5209,7 @@ device: type: smartphone brand: Unimax - model: U504TL + model: UMX U504TL os_family: Android browser_family: Chrome - @@ -5227,7 +5227,7 @@ device: type: smartphone brand: Unimax - model: U671C + model: UMX U671C os_family: Android browser_family: Chrome - @@ -5245,7 +5245,7 @@ device: type: smartphone brand: Unimax - model: U673C + model: UMX U673C os_family: Android browser_family: Chrome - @@ -5263,7 +5263,7 @@ device: type: smartphone brand: Unimax - model: U680C + model: UMX U680C os_family: Android browser_family: Unknown - @@ -5281,7 +5281,7 @@ device: type: smartphone brand: Unimax - model: U683CL + model: UMX U683CL os_family: Android browser_family: Chrome - @@ -5299,7 +5299,7 @@ device: type: smartphone brand: Unimax - model: U693CL + model: UMX U693CL os_family: Android browser_family: Chrome - diff --git a/spec/fixtures/detector/smartphone-17.yml b/spec/fixtures/detector/smartphone-17.yml index a524ab0..c736a2a 100644 --- a/spec/fixtures/detector/smartphone-17.yml +++ b/spec/fixtures/detector/smartphone-17.yml @@ -3194,15 +3194,17 @@ version: "10" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 45.7.1.9 + engine: Blink + engine_version: 70.0.3538.80 device: type: smartphone brand: Realme model: 5 Pro os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; U; Android 10; en-us; RMX2076 Build/QKQ1.191222.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.80 Mobile Safari/537.36 HeyTapBrowser/45.7.0.0 os: @@ -3210,15 +3212,17 @@ version: "10" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 45.7.0.0 + engine: Blink + engine_version: 70.0.3538.80 device: type: smartphone brand: Realme model: X50 Pro 5G os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; Android 10; ANA-NX9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.99 Mobile Safari/537.36 os: diff --git a/spec/fixtures/detector/smartphone-22.yml b/spec/fixtures/detector/smartphone-22.yml index 6cec870..efe6d63 100644 --- a/spec/fixtures/detector/smartphone-22.yml +++ b/spec/fixtures/detector/smartphone-22.yml @@ -4264,15 +4264,17 @@ version: "11" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 40.7.17.9 + engine: Blink + engine_version: 70.0.3538.80 device: type: smartphone brand: Realme model: GT Neo os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; U; Android 11; zh-cn; M2012K11C Build/RKQ1.201112.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/14.2.22 os: diff --git a/spec/fixtures/detector/smartphone-29.yml b/spec/fixtures/detector/smartphone-29.yml index afff69a..38561aa 100644 --- a/spec/fixtures/detector/smartphone-29.yml +++ b/spec/fixtures/detector/smartphone-29.yml @@ -7574,15 +7574,17 @@ version: 5.1.1 platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 10.7.38.1 + engine: Blink + engine_version: 90.0.4430.61 device: type: smartphone brand: OPPO model: R7s Plus os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; Android 8.0.0; VK7000) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Mobile Safari/537.36 os: diff --git a/spec/fixtures/detector/smartphone-30.yml b/spec/fixtures/detector/smartphone-30.yml index 2f55184..fa07608 100644 --- a/spec/fixtures/detector/smartphone-30.yml +++ b/spec/fixtures/detector/smartphone-30.yml @@ -3700,7 +3700,7 @@ device: type: smartphone brand: Unimax - model: U696CL + model: UMX U696CL os_family: Android browser_family: Chrome - @@ -6183,7 +6183,8 @@ engine_version: 80.0.3987.132 device: type: smartphone - brand: PCD Argentina + #Previously marked as PCD Argentina, but it's from PCD America https://pcdlatam.com/device/jaguar-mega-pl620/ + brand: PCD model: PL620 os_family: Android browser_family: Chrome diff --git a/spec/fixtures/detector/smartphone-32.yml b/spec/fixtures/detector/smartphone-32.yml index 15da8cf..c306c6f 100644 --- a/spec/fixtures/detector/smartphone-32.yml +++ b/spec/fixtures/detector/smartphone-32.yml @@ -7861,8 +7861,8 @@ engine_version: 75.0.3770.67 device: type: smartphone - brand: VIDA - model: i501 + brand: Airtel + model: Vida i501 os_family: Android browser_family: Chrome - diff --git a/spec/fixtures/detector/smartphone-33.yml b/spec/fixtures/detector/smartphone-33.yml index 48a976b..b0499a2 100644 --- a/spec/fixtures/detector/smartphone-33.yml +++ b/spec/fixtures/detector/smartphone-33.yml @@ -5888,15 +5888,17 @@ version: "12" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 40.8.5.1 + engine: Blink + engine_version: 90.0.4430.61 device: type: smartphone brand: OPPO model: Reno 8 os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; Android 12; VNE-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Mobile Safari/537.36 os: diff --git a/spec/fixtures/detector/smartphone-34.yml b/spec/fixtures/detector/smartphone-34.yml index 10111ef..9fe9647 100644 --- a/spec/fixtures/detector/smartphone-34.yml +++ b/spec/fixtures/detector/smartphone-34.yml @@ -4300,15 +4300,17 @@ version: "13" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 40.8.2.9 + engine: Blink + engine_version: 90.0.4430.61 device: type: smartphone brand: OPPO model: Reno 9 os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; U; Android 13; zh-cn; PGW110 Build/SKQ1.220804.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/90.0.4430.61 Mobile Safari/537.36 HeyTapBrowser/40.8.8.1 os: @@ -4316,15 +4318,17 @@ version: "13" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 40.8.8.1 + engine: Blink + engine_version: 90.0.4430.61 device: type: smartphone brand: OPPO model: Reno 9 Pro+ os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; Android 10; 2032) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Mobile Safari/537.36 os: @@ -8508,15 +8512,17 @@ version: "13" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 40.8.8.1 + engine: Blink + engine_version: 90.0.4430.61 device: type: smartphone brand: OPPO model: Reno 9 Pro os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; Android 12; PHJ110 Build/SP1A.210812.016; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.25 SP-engine/2.63.0 baiduboxapp/13.25.0.10 (Baidu; P1 12) NABar/1.0 os: diff --git a/spec/fixtures/detector/smartphone-35.yml b/spec/fixtures/detector/smartphone-35.yml index 53e1b18..1648a48 100644 --- a/spec/fixtures/detector/smartphone-35.yml +++ b/spec/fixtures/detector/smartphone-35.yml @@ -3726,15 +3726,17 @@ version: "13" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 45.8.9.8 + engine: Blink + engine_version: 91.0.4472.88 device: type: smartphone brand: Realme model: C55 os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; U; Android 12; vi-pl; CPH2407 Build/SP1A.210812.016) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.88 Mobile Safari/537.36 HeyTapBrowser/45.8.4.9 os: @@ -3742,15 +3744,17 @@ version: "12" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 45.8.4.9 + engine: Blink + engine_version: 91.0.4472.88 device: type: smartphone brand: OPPO model: A57 os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; U; Android 12; Infinix X6517 Build/SP1A.210812.016; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/111.0.5563.58 Mobile Safari/537.36 OPR/67.1.2254.65126 os: diff --git a/spec/fixtures/detector/smartphone-37.yml b/spec/fixtures/detector/smartphone-37.yml index e22cd04..aac2938 100644 --- a/spec/fixtures/detector/smartphone-37.yml +++ b/spec/fixtures/detector/smartphone-37.yml @@ -906,15 +906,17 @@ version: "12" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 40.7.37.9 + engine: Blink + engine_version: 90.0.4430.61 device: type: smartphone brand: Realme model: 10s os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; Android 11; DS-X1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Mobile Safari/537.36 os: @@ -7766,15 +7768,17 @@ version: "13" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 40.8.22.2 + engine: Blink + engine_version: 90.0.4430.61 device: type: smartphone brand: OPPO model: Reno 10 Pro+ 5G os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; U; Android 13; zh-cn; PHS110 Build/RKQ1.211119.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/90.0.4430.61 Mobile Safari/537.36 HeyTapBrowser/40.8.13.9 os: @@ -7782,15 +7786,17 @@ version: "13" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 40.8.13.9 + engine: Blink + engine_version: 90.0.4430.61 device: type: smartphone brand: OPPO model: A1 5G os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; U; Android 13; ru-ru; PHT110 Build/TP1A.220905.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/90.0.4430.61 Mobile Safari/537.36 HeyTapBrowser/40.8.21.2 os: @@ -7798,15 +7804,17 @@ version: "13" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 40.8.21.2 + engine: Blink + engine_version: 90.0.4430.61 device: type: smartphone brand: OPPO model: Find N3 Flip os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; U; Android 13; ru-ru; N6000 Build/TP1A.220624.014) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/112.0.5615.136 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.37.1-gn os: @@ -8534,15 +8542,17 @@ version: "13" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 45.10.5.1.1 + engine: Blink + engine_version: 91.0.4472.88 device: type: smartphone brand: Realme model: C67 5G os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; U; Android 13; en-gb; RMX3780 Build/TP1A.220905.001) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.88 Mobile Safari/537.36 HeyTapBrowser/45.10.5.1.1 os: @@ -8550,15 +8560,17 @@ version: "13" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 45.10.5.1.1 + engine: Blink + engine_version: 91.0.4472.88 device: type: smartphone brand: Realme model: 11 5G os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Dalvik/2.1.0 (Linux; U; Android 14; RMX3890 Build/UKQ1.230917.001) os: diff --git a/spec/fixtures/detector/smartphone-39.yml b/spec/fixtures/detector/smartphone-39.yml index 79fbe57..fbcfeb5 100644 --- a/spec/fixtures/detector/smartphone-39.yml +++ b/spec/fixtures/detector/smartphone-39.yml @@ -2283,7 +2283,7 @@ platform: "" client: type: pim - name: mailapp + name: MailApp version: 6.5.3 device: type: smartphone @@ -2728,15 +2728,17 @@ version: "12" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 40.8.20.2 + engine: Blink + engine_version: 90.0.4430.61 device: type: smartphone brand: Realme model: V30 os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; U; Android 12; zh-Hans-CN; HBP-AL00 Build/HUAWEIHBP-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.58 Quark/6.12.0.550 Mobile Safari/537.36 os: @@ -4306,15 +4308,17 @@ version: "11" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 45.10.8.0.1.1 + engine: Blink + engine_version: 91.0.4472.88 device: type: smartphone brand: OPPO model: A16k os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; U; Android 12; en-US; A151 Build/SP1A.210812.016) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.58 UCBrowser/13.7.0.1319 Mobile Safari/537.36 os: @@ -5580,15 +5584,17 @@ version: "14" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 40.8.30.3 + engine: Blink + engine_version: 90.0.4430.61 device: type: smartphone brand: OPPO model: A3 Pro 5G os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; U; Android 14; en-US; ASUS_AI2401_A Build/UKQ1.231003.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 OPR/12.140.205 Mobile Safari/537.36 os: diff --git a/spec/fixtures/detector/smartphone-4.yml b/spec/fixtures/detector/smartphone-4.yml index 8b9df10..1d43aa7 100644 --- a/spec/fixtures/detector/smartphone-4.yml +++ b/spec/fixtures/detector/smartphone-4.yml @@ -28,7 +28,7 @@ name: Chrome Webview version: 63.0.3239 engine: Blink - engine_version: 63.0.3239. + engine_version: 63.0.3239 device: type: smartphone brand: Doro diff --git a/spec/fixtures/detector/smartphone-40.yml b/spec/fixtures/detector/smartphone-40.yml index 42bf05e..49bbc23 100644 --- a/spec/fixtures/detector/smartphone-40.yml +++ b/spec/fixtures/detector/smartphone-40.yml @@ -5094,15 +5094,17 @@ version: "14" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 40.8.30.9 + engine: Blink + engine_version: 90.0.4430.61 device: type: smartphone brand: OPPO model: A3 5G os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; U; Android 14; zh-CN; PJX110 Build/UKQ1.231108.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.58 Quark/7.1.0.610 Mobile Safari/537.36 os: @@ -5470,15 +5472,17 @@ version: "14" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 40.8.34.3 + engine: Blink + engine_version: 90.0.4430.61 device: type: smartphone brand: Realme model: V60 os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; U; Android 14; zh-CN; 2407FRK8EC Build/UP1A.231005.007) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.58 Quark/7.2.0.630 Mobile Safari/537.36 os: @@ -6187,15 +6191,17 @@ version: "14" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 40.8.30.9 + engine: Blink + engine_version: 90.0.4430.61 device: type: smartphone brand: OPPO model: A3x 5G os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; U; Android 14; V2409 Build/UP1A.231005.007_MOD1; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/128.0.6613.146 Mobile Safari/537.36 OPR/85.0.2254.74019 os: diff --git a/spec/fixtures/detector/smartphone-41.yml b/spec/fixtures/detector/smartphone-41.yml index dc3033a..c1fc005 100644 --- a/spec/fixtures/detector/smartphone-41.yml +++ b/spec/fixtures/detector/smartphone-41.yml @@ -4699,15 +4699,17 @@ version: "15" platform: "" client: - type: mobile app + type: browser name: HeyTapBrowser version: 40.9.0.1 + engine: Blink + engine_version: 115.0.5790.168 device: type: smartphone brand: OPPO model: Find X8 Pro os_family: Android - browser_family: Unknown + browser_family: Chrome - user_agent: Mozilla/5.0 (Linux; U; Android 14; zh-CN; PJU110_A1 Build/TP1A.220905.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.58 Quark/7.5.5.700 Mobile Safari/537.36 os: diff --git a/spec/fixtures/detector/smartphone-42.yml b/spec/fixtures/detector/smartphone-42.yml index 594de45..fa52b5c 100644 --- a/spec/fixtures/detector/smartphone-42.yml +++ b/spec/fixtures/detector/smartphone-42.yml @@ -861,3 +861,4271 @@ model: A72 os_family: Android browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; U; Android 12; Nokia 02-4G Build/SP1A.210812.016; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/128.0.6613.6 Mobile Safari/537.36 OPR/83.1.2254.73239 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Opera Mobile + version: 83.1.2254.73239 + engine: Blink + engine_version: 128.0.6613.6 + device: + type: smartphone + brand: Nokia + model: 02-4G + os_family: Android + browser_family: Opera +- + user_agent: Dalvik/1.6.0 (Linux; U; Android 4.0.4; SBM106SH Build/S0028) + os: + name: Android + version: 4.0.4 + platform: "" + client: + type: browser + name: Android Browser + version: "" + engine: WebKit + engine_version: "" + device: + type: smartphone + brand: Sharp + model: 106SH + os_family: Android + browser_family: Android Browser +- + user_agent: Mozilla/5.0 (Linux; Android 14; SM-A356U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Samsung + model: Galaxy A35 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 4.4.2; Panasonic P55 Novo) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36 + os: + name: Android + version: 4.4.2 + platform: "" + client: + type: browser + name: Chrome Mobile + version: 70.0.3538.80 + engine: Blink + engine_version: 70.0.3538.80 + device: + type: smartphone + brand: Panasonic + model: P55 Novo 4G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; SM-A066E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Samsung + model: Galaxy A06 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; WP200 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.555 YaSearchBrowser/25.45.1 BroPP/1.0 YaSearchApp/25.45.1 webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.45.1 + engine: Blink + engine_version: 134.0.6998.555 + device: + type: smartphone + brand: Oukitel + model: WP200 Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; SM-A217X Build/BP1A.250305.020.T2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.6834.122 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 132.0.6834.122 + engine: Blink + engine_version: 132.0.6834.122 + device: + type: smartphone + brand: Samsung + model: Galaxy A21s + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; 25028RN03Y Build/AP3A.240905.015.A2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.125 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 136.0.7103.125 + engine: Blink + engine_version: 136.0.7103.125 + device: + type: smartphone + brand: Xiaomi + model: Redmi A5 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 10; Z5157Y) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.98 Mobile Safari/537.36 + os: + name: Android + version: "10" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 97.0.4692.98 + engine: Blink + engine_version: 97.0.4692.98 + device: + type: smartphone + brand: ZTE + model: Blade A3v + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; U; Android 6.0; Symphony P7 Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Mobile Safari/537.36 OPR/37.3.2254.133321 + os: + name: Android + version: "6.0" + platform: "" + client: + type: browser + name: Opera Mobile + version: 37.3.2254.133321 + engine: Blink + engine_version: 70.0.3538.110 + device: + type: smartphone + brand: Symphony + model: P7 + os_family: Android + browser_family: Opera +- + user_agent: Mozilla/5.0 (Linux; U; Android 5.1; Aura_Power Build/LMY47D; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.80 Mobile Safari/537.36 OPR/37.1.2254.132401 + os: + name: Android + version: "5.1" + platform: "" + client: + type: browser + name: Opera Mobile + version: 37.1.2254.132401 + engine: Blink + engine_version: 70.0.3538.80 + device: + type: smartphone + brand: Karbonn + model: Aura Power + os_family: Android + browser_family: Opera +- + user_agent: Mozilla/5.0 (Linux; Android 12; Blaupunkt_TX60) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 102.0.0.0 + engine: Blink + engine_version: 102.0.0.0 + device: + type: smartphone + brand: Blaupunkt + model: TX60 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; MARINE 1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Mobile Safari/537.36 OPR/89.0.0.0 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Opera Mobile + version: 89.0.0.0 + engine: Blink + engine_version: 135.0.0.0 + device: + type: smartphone + brand: OSCAL + model: Marine 1 + os_family: Android + browser_family: Opera +- + user_agent: Mozilla/5.0 (Linux; Android 15; Z2467 Build/AP3A.240905.015.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/137.0.7151.61 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Webview + version: 137.0.7151.61 + engine: Blink + engine_version: 137.0.7151.61 + device: + type: smartphone + brand: ZTE + model: Blade V70 Max + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; Z2464N Build/AP3A.240905.015.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/137.0.7151.88 Mobile Safari/537.36 Barcelona 384.0.0.33.86 Android (35/15; 400dpi; 900x2030; nubia; Z2464N; P780F01; ums9632_1h10; es_MX; 745210318) + os: + name: Android + version: "15" + platform: "" + client: + type: mobile app + name: Threads + version: 384.0.0.33.86 + device: + type: smartphone + brand: Nubia + model: Neo 3 GT 5G + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; RMX6688 Build/AP3A.240617.008) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.58 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 130.0.6723.58 + engine: Blink + engine_version: 130.0.6723.58 + device: + type: smartphone + brand: Realme + model: GT 7 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; WP55) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Oukitel + model: WP55 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; RMX5303) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Realme + model: C71 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; RMX5085) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Realme + model: GT 7T + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; RMX5079) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 EdgA/137.0.0.0 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Microsoft Edge + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Realme + model: P3 5G + os_family: Android + browser_family: Internet Explorer +- + user_agent: Mozilla/5.0 (Linux; Android 15; RMX5078) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Realme + model: 14T 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; RMX5061) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Realme + model: GT 7 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; RMX5032) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Realme + model: P3 Pro 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; RMX5031) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Realme + model: P3 Ultra 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; PKZ110) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: OPPO + model: Reno 14 Pro + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; PKX110) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: OnePlus + model: 13T + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; PKT110) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: OPPO + model: Find X8s + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; PILOT 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: OSCAL + model: Pilot 3 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; GVU6C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Mobile Safari/537.36 EdgA/130.0.0.0 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Microsoft Edge + version: 130.0.0.0 + engine: Blink + engine_version: 130.0.0.0 + device: + type: smartphone + brand: Google + model: Pixel 7 + os_family: Android + browser_family: Internet Explorer +- + user_agent: Mozilla/5.0 (Linux; Android 15; GB7N6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 127.0.0.0 + engine: Blink + engine_version: 127.0.0.0 + device: + type: smartphone + brand: Google + model: Pixel 6 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; G025H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 125.0.0.0 + engine: Blink + engine_version: 125.0.0.0 + device: + type: smartphone + brand: Google + model: Pixel 4a + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; Doogee V11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 121.0.0.0 + engine: Blink + engine_version: 121.0.0.0 + device: + type: smartphone + brand: Doogee + model: V11 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; 25028RN03L Build/AP3A.240905.015.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/137.0.7151.88 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Webview + version: 137.0.7151.88 + engine: Blink + engine_version: 137.0.7151.88 + device: + type: smartphone + brand: Xiaomi + model: Redmi A5 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; 25053RT47C Build/AQ3A.250107.001) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.86 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 130.0.6723.86 + engine: Blink + engine_version: 130.0.6723.86 + device: + type: smartphone + brand: Xiaomi + model: Redmi Turbo 4 Pro + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; 25028PC03I Build/AP3A.240905.015.A2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.125 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 136.0.7103.125 + engine: Blink + engine_version: 136.0.7103.125 + device: + type: smartphone + brand: POCO + model: C71 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; XT2255-1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 129.0.0.0 + engine: Blink + engine_version: 129.0.0.0 + device: + type: smartphone + brand: Motorola + model: Moto G72 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; SM-S938W) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Samsung + model: Galaxy S25 Ultra + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; SM-S938U1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Samsung + model: Galaxy S25 Ultra + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; SM-S938N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Samsung + model: Galaxy S25 Ultra + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; SM-S938B) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/28.0 Chrome/130.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Samsung Browser + version: "28.0" + engine: Blink + engine_version: 130.0.0.0 + device: + type: smartphone + brand: Samsung + model: Galaxy S25 Ultra + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; SM-S9380) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 136.0.0.0 + engine: Blink + engine_version: 136.0.0.0 + device: + type: smartphone + brand: Samsung + model: Galaxy S25 Ultra + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; SM-S937U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Samsung + model: Galaxy S25 Edge + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; SM-S936B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Samsung + model: Galaxy S25+ + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; SM-S931U1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Samsung + model: Galaxy S25 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; SM-S931N) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/28.0 Chrome/130.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Samsung Browser + version: "28.0" + engine: Blink + engine_version: 130.0.0.0 + device: + type: smartphone + brand: Samsung + model: Galaxy S25 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; NX779J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Nubia + model: Red Magic 10 Air + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; NX737J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Nubia + model: Z70s Ultra + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; Note 59) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Doogee + model: Note 59 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; Note 58) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Doogee + model: Note 58 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; Mblu 22 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 131.0.0.0 + engine: Blink + engine_version: 131.0.0.0 + device: + type: smartphone + brand: Meizu + model: Mblu 22 Pro + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; moto g15) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Motorola + model: Moto G15 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; CPH2729) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 131.0.0.0 + engine: Blink + engine_version: 131.0.0.0 + device: + type: smartphone + brand: OPPO + model: K13 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; Blade20 Turbo) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Doogee + model: Blade 20 Turbo + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; WAVE 8C Build/UP1A.231005.007) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.7151.88 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.7151.88 + engine: Blink + engine_version: 137.0.7151.88 + device: + type: smartphone + brand: Blackview + model: Wave 8C + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; V2357EA Build/UP1A.231005.007; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/15.13 SP-engine/3.36.0 bd_dvt/0 baiduboxapp/15.13.0.10 (Baidu; P1 14) NABar/1.0 + os: + name: Android + version: "14" + platform: "" + client: + type: mobile app + name: Baidu Box App + version: 15.13.0.10 + device: + type: smartphone + brand: Vivo + model: Y37m + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 14; Vocal V2 Lite Build/UP1A.231005.007; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/136.0.7103.125 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Webview + version: 136.0.7103.125 + engine: Blink + engine_version: 136.0.7103.125 + device: + type: smartphone + brand: VOCAL + model: V2 Lite + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; VOCAL V0Core Build/UP1A.231005.007) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/137.0.7151.61 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Webview + version: 137.0.7151.61 + engine: Blink + engine_version: 137.0.7151.61 + device: + type: smartphone + brand: VOCAL + model: V0Core + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; 24129PN74I) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 136.0.0.0 + engine: Blink + engine_version: 136.0.0.0 + device: + type: smartphone + brand: Xiaomi + model: "15" + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; 24108PCE2I) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 131.0.0.0 + engine: Blink + engine_version: 131.0.0.0 + device: + type: smartphone + brand: POCO + model: M7 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 4.2.1; Primo X2mini) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36 + os: + name: Android + version: 4.2.1 + platform: "" + client: + type: browser + name: Chrome Mobile + version: 70.0.3538.80 + engine: Blink + engine_version: 70.0.3538.80 + device: + type: smartphone + brand: Walton + model: Primo X2 Mini + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; V2464A Build/AP3A.240905.015.A2_V000L1; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/126.0.6478.71 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Webview + version: 126.0.6478.71 + engine: Blink + engine_version: 126.0.6478.71 + device: + type: smartphone + brand: Vivo + model: S30 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; V2454DA; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/123.0.6312.118 Mobile Safari/537.36 VivoBrowser/24.8.0.0 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: vivo Browser + version: 24.8.0.0 + engine: Blink + engine_version: 123.0.6312.118 + device: + type: smartphone + brand: Vivo + model: X200 Ultra + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; V2454A Build/AP3A.240905.015.A2_V000L1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.7151.61 Mobile Safari/537.36 OPX/2.8 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Opera GX + version: "2.8" + engine: Blink + engine_version: 137.0.7151.61 + device: + type: smartphone + brand: Vivo + model: X200 Ultra + os_family: Android + browser_family: Opera +- + user_agent: Mozilla/5.0 (Linux; Android 15; V2452A Build/AP3A.240905.015.A2_V000L1; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/126.0.6478.71 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Webview + version: 126.0.6478.71 + engine: Blink + engine_version: 126.0.6478.71 + device: + type: smartphone + brand: Vivo + model: iQOO Z10 Turbo + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; V2435 Build/AP3A.240905.015.A2_D1_V000L1; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/137.0.7151.61 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Webview + version: 137.0.7151.61 + engine: Blink + engine_version: 137.0.7151.61 + device: + type: smartphone + brand: Vivo + model: Y29 + os_family: Android + browser_family: Chrome +- + user_agent: 'Mozilla/5.0 (Linux; Android 15; V2507 Build/AP3A.240905.015.A2_NN; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/136.0.7103.125 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/510.0.0.67.109;]' + os: + name: Android + version: "15" + platform: "" + client: + type: mobile app + name: Facebook + version: 510.0.0.67.109 + device: + type: smartphone + brand: Vivo + model: Y19s Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; RMX5055 Build/UKQ1.231108.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/15.14 SP-engine/3.36.0 bd_dvt/0 baiduboxapp/15.15.0.10 (Baidu; P1 15) NABar/1.0 + os: + name: Android + version: "15" + platform: "" + client: + type: mobile app + name: Baidu Box App + version: 15.15.0.10 + device: + type: smartphone + brand: Realme + model: 14 Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; PLD110 Build/UKQ1.231108.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/15.14 SP-engine/3.36.0 bd_dvt/0 baiduboxapp/15.15.0.10 (Baidu; P1 15) NABar/1.0 + os: + name: Android + version: "15" + platform: "" + client: + type: mobile app + name: Baidu Box App + version: 15.15.0.10 + device: + type: smartphone + brand: OPPO + model: K12s 5G + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; PLB110 Build/AP3A.240617.008) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.58 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 130.0.6723.58 + engine: Blink + engine_version: 130.0.6723.58 + device: + type: smartphone + brand: OPPO + model: Find X8s+ + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; PKQ110 Build/AP3A.240617.008; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/130.0.6723.58 Mobile Safari/537.36 SP-engine/2.90.0 baiduboxapp/13.52.0.10 (Baidu; P1 15) NABar/1.0 + os: + name: Android + version: "15" + platform: "" + client: + type: mobile app + name: Baidu Box App + version: 13.52.0.10 + device: + type: smartphone + brand: OPPO + model: A5 5G + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; DNN-AN00 Build/HONORDNN-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/15.14 SP-engine/3.36.0 bd_dvt/0 baiduboxapp/15.14.0.10 (Baidu; P1 15) NABar/1.0 + os: + name: Android + version: "15" + platform: "" + client: + type: mobile app + name: Baidu Box App + version: 15.14.0.10 + device: + type: smartphone + brand: Huawei + model: Honor 400 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; DNP-NX9 Build/HONORDNP-N39) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/137.0.7151.89 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Webview + version: 137.0.7151.89 + engine: Blink + engine_version: 137.0.7151.89 + device: + type: smartphone + brand: Huawei + model: Honor 400 Pro + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; DNY-NX9 Build/HONORDNY-N39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.125 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 136.0.7103.125 + engine: Blink + engine_version: 136.0.7103.125 + device: + type: smartphone + brand: Huawei + model: Honor 400 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; DVD-AN80 Build/HONORDVD-AN80; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.83 SP-engine/3.24.0 baiduboxapp/13.83.0.10 (Baidu; P1 15) NABar/1.0 + os: + name: Android + version: "15" + platform: "" + client: + type: mobile app + name: Baidu Box App + version: 13.83.0.10 + device: + type: smartphone + brand: Huawei + model: Honor Power + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; DVD-AN00 Build/HONORDVD-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/15.3 SP-engine/3.31.0 baiduboxapp/15.4.0.10 (Baidu; P1 15) NABar/1.0 + os: + name: Android + version: "15" + platform: "" + client: + type: mobile app + name: Baidu Box App + version: 15.4.0.10 + device: + type: smartphone + brand: Huawei + model: Honor Power + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; AGI-AN00 Build/HONORAGI-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/15.14 SP-engine/3.36.0 bd_dvt/0 baiduboxapp/15.15.0.10 (Baidu; P1 15) NABar/1.0 + os: + name: Android + version: "15" + platform: "" + client: + type: mobile app + name: Baidu Box App + version: 15.15.0.10 + device: + type: smartphone + brand: Huawei + model: Honor X60 GT + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; ABR-NX1 Build/HONORABR-N31; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/137.0.7151.89 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Webview + version: 137.0.7151.89 + engine: Blink + engine_version: 137.0.7151.89 + device: + type: smartphone + brand: Huawei + model: Honor 400 Lite + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; ABR-LX3 Build/HONORABR-L33; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/137.0.7151.61 Mobile Safari/537.36 TwitterAndroid + os: + name: Android + version: "15" + platform: "" + client: + type: mobile app + name: Twitter + version: "" + device: + type: smartphone + brand: Huawei + model: Honor X8c + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; ABR-LX2 Build/HONORABR-L32; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/137.0.7151.88 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Webview + version: 137.0.7151.88 + engine: Blink + engine_version: 137.0.7151.88 + device: + type: smartphone + brand: Huawei + model: Honor X8c + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; PKU110) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.77 YaBrowser/25.4.5.77.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.4.5.77.00 + engine: Blink + engine_version: 134.0.6998.77 + device: + type: smartphone + brand: OPPO + model: Find X8 Ultra + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; PLA110) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.49 YaBrowser/25.4.6.49.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.4.6.49.00 + engine: Blink + engine_version: 134.0.6998.49 + device: + type: smartphone + brand: OPPO + model: Reno 14 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; SM-S936W) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.49 YaBrowser/25.4.6.49.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.4.6.49.00 + engine: Blink + engine_version: 134.0.6998.49 + device: + type: smartphone + brand: Samsung + model: Galaxy S25+ + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; motorola razr ultra 2025 Build/V2VL35.42-60-16; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/137.0.7151.61 Mobile Safari/537.36 TwitterAndroid + os: + name: Android + version: "15" + platform: "" + client: + type: mobile app + name: Twitter + version: "" + device: + type: smartphone + brand: Motorola + model: Moto Razr Ultra (2025) + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; XT2245-1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 129.0.0.0 + engine: Blink + engine_version: 129.0.0.0 + device: + type: smartphone + brand: Motorola + model: Edge 30 Neo + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; XT2235-2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Mobile Safari/537.36 EdgA/124.0.0.0 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Microsoft Edge + version: 124.0.0.0 + engine: Blink + engine_version: 124.0.0.0 + device: + type: smartphone + brand: Motorola + model: Moto G32 + os_family: Android + browser_family: Internet Explorer +- + user_agent: Mozilla/5.0 (Linux; Android 15; XT2231-1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 125.0.0.0 + engine: Blink + engine_version: 125.0.0.0 + device: + type: smartphone + brand: Motorola + model: Moto G22 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; V2453A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Vivo + model: iQOO Z10 Turbo Pro + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; V2445EA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 EdgA/137.0.0.0 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Microsoft Edge + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Vivo + model: Y300+ + os_family: Android + browser_family: Internet Explorer +- + user_agent: Mozilla/5.0 (Linux; Android 15; V2445A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Vivo + model: iQOO Z10x + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; V2443) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Vivo + model: Y39 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; V2428) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Vivo + model: V50e + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; SOG11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Sony + model: Xperia 10 V + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; SM-S9310) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/27.0 Chrome/125.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Samsung Browser + version: "27.0" + engine: Blink + engine_version: 125.0.0.0 + device: + type: smartphone + brand: Samsung + model: Galaxy S25 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; I2407) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Vivo + model: iQOO Z10 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; I2405) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Vivo + model: iQOO Neo 10 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; V1916T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.140 Mobile Safari/537.36 OPR/107.0.5045.15 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Opera Mobile + version: 107.0.5045.15 + engine: Blink + engine_version: 121.0.6167.140 + device: + type: smartphone + brand: Vivo + model: iQOO Pro 5G + os_family: Android + browser_family: Opera +- + user_agent: Mozilla/5.0 (Linux; Android 12; WLZ-TN00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.5829.0 Mobile Safari/537.36 OPR/102.0.4871.0 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Opera Mobile + version: 102.0.4871.0 + engine: Blink + engine_version: 116.0.5829.0 + device: + type: smartphone + brand: Huawei + model: Nova 6 5G + os_family: Android + browser_family: Opera +- + user_agent: Mozilla/5.0 (Linux; Android 14; LIVE 12) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: 'Krüger&Matz' + model: LIVE 12 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; JP2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Jambo + model: JamboPhone 2 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; HMD XR21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: HMD + model: XR21 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; HMD ARC) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: HMD + model: Arc + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; Hammer_Construction_2_Thermal_5G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Hammer + model: Construction 2 Thermal 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; Hammer_Construction_2_5G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Hammer + model: Construction 2 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; F112 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: FOSSiBOT + model: F112 Pro + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; DISCOVERY_2_ME) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: SPC + model: Discovery 2 Me + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; BOLD K50) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Blu + model: Bold K50 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; APEX_5G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Stylo + model: Apex 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; Magno Pro Build/TP1A.220624.014) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.7151.61 Mobile Safari/537.36 OPX/2.8 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Opera GX + version: "2.8" + engine: Blink + engine_version: 137.0.7151.61 + device: + type: smartphone + brand: Zuum + model: Magno Pro + os_family: Android + browser_family: Opera +- + user_agent: Mozilla/5.0 (Linux; Android 13; Magno C Plus Build/TP1A.220624.014) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.7151.61 Mobile Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.7151.61 + engine: Blink + engine_version: 137.0.7151.61 + device: + type: smartphone + brand: Zuum + model: Magno C Plus + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; KINGKONG POWER 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.105 YaBrowser/25.4.4.105.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.4.4.105.00 + engine: Blink + engine_version: 134.0.6998.105 + device: + type: smartphone + brand: CUBOT + model: King Kong Power 5 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; TECNO CM6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.77 YaBrowser/25.4.5.77.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.4.5.77.00 + engine: Blink + engine_version: 134.0.6998.77 + device: + type: smartphone + brand: Tecno Mobile + model: Camon 40 Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; TECNO CM8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.555 YaSearchBrowser/25.45.1 BroPP/1.0 YaSearchApp/25.45.1 webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.45.1 + engine: Blink + engine_version: 134.0.6998.555 + device: + type: smartphone + brand: Tecno Mobile + model: Camon 40 Premier 5G + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; A001) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.895 YaApp_Android/25.43.1 YaSearchBrowser/25.43.1 BroPP/1.0 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.43.1 + engine: Blink + engine_version: 134.0.6998.895 + device: + type: smartphone + brand: CMF + model: Phone 2 Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; S Punk Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.77 YaBrowser/25.4.5.77.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.4.5.77.00 + engine: Blink + engine_version: 134.0.6998.77 + device: + type: smartphone + brand: Doogee + model: S Punk Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; S cyber Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.77 YaBrowser/25.4.5.77.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.4.5.77.00 + engine: Blink + engine_version: 134.0.6998.77 + device: + type: smartphone + brand: Doogee + model: S Cyber Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 6.0; Panasonic ELUGA Tapp) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36 + os: + name: Android + version: "6.0" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 70.0.3538.80 + engine: Blink + engine_version: 70.0.3538.80 + device: + type: smartphone + brand: Panasonic + model: Eluga Tapp + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; 25053PC47G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 131.0.0.0 + engine: Blink + engine_version: 131.0.0.0 + device: + type: smartphone + brand: POCO + model: F7 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 8.1.0; INOI_5X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: 8.1.0 + platform: "" + client: + type: browser + name: Chrome Mobile + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: smartphone + brand: Inoi + model: 5X + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; L68_Ultra) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Logic + model: L68 Ultra + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 6.0; SOYES 7S Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/95.0.4638.74 Mobile Safari/537.36 + os: + name: Android + version: "6.0" + platform: "" + client: + type: browser + name: Chrome Webview + version: 95.0.4638.74 + engine: Blink + engine_version: 95.0.4638.74 + device: + type: smartphone + brand: Soyes + model: 7S + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; U; Android 14; zh-CN; PERM10_K10 Build/UKQ1.230924.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/123.0.6312.80 Quark/7.14.2.872 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Quark + version: 7.14.2.872 + engine: Blink + engine_version: 123.0.6312.80 + device: + type: smartphone + brand: OPPO + model: K10 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; CPH2725 Build/AP3A.240617.008; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.179 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Webview + version: 138.0.7204.179 + engine: Blink + engine_version: 138.0.7204.179 + device: + type: smartphone + brand: OPPO + model: A5x + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; 25078RA3EY) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.120 YaBrowser/25.6.2.120.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.2.120.00 + engine: Blink + engine_version: 136.0.7103.120 + device: + type: smartphone + brand: Xiaomi + model: Redmi 15C + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; 25067PYE3C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.422 YaApp_Android/25.62.1 YaSearchBrowser/25.62.1 BroPP/1.0 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.62.1 + engine: Blink + engine_version: 136.0.7103.422 + device: + type: smartphone + brand: Xiaomi + model: Civi 5 Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; 25042PN24C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.52 YaBrowser/25.6.6.52.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.52.00 + engine: Blink + engine_version: 136.0.7103.52 + device: + type: smartphone + brand: Xiaomi + model: 15S Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; V Max S) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.52 YaBrowser/25.6.6.52.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.52.00 + engine: Blink + engine_version: 136.0.7103.52 + device: + type: smartphone + brand: Doogee + model: V Max S + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; SOG13) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.55 YaBrowser/25.6.6.55.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.55.00 + engine: Blink + engine_version: 136.0.7103.55 + device: + type: smartphone + brand: Sony + model: Xperia 1 VI + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; SM-M166P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.91 YaSearchBrowser/25.66.1 BroPP/1.0 YaSearchApp/25.66.1 webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.91 + device: + type: smartphone + brand: Samsung + model: Galaxy M16 5G + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; SM-E166P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.107 YaBrowser/25.6.4.107.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.4.107.00 + engine: Blink + engine_version: 136.0.7103.107 + device: + type: smartphone + brand: Samsung + model: Galaxy F16 5G + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; SM-A356N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.6834.579 YaSearchBrowser/25.26.1 BroPP/1.0 YaSearchApp/25.26.1 webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.26.1 + engine: Blink + engine_version: 132.0.6834.579 + device: + type: smartphone + brand: Samsung + model: Galaxy A35 5G + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; SM-A166E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.945 YaSearchBrowser/25.61.1 BroPP/1.0 YaSearchApp/25.61.1 webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.61.1 + engine: Blink + engine_version: 136.0.7103.945 + device: + type: smartphone + brand: Samsung + model: Galaxy A16 5G + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; SM-A165F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.5993.409 YaSearchBrowser/23.115.1 BroPP/1.0 YaSearchApp/23.115.1 webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 23.115.1 + engine: Blink + engine_version: 118.0.5993.409 + device: + type: smartphone + brand: Samsung + model: Galaxy A16 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; SM-A1560) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.52 YaBrowser/25.6.6.52.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.52.00 + engine: Blink + engine_version: 136.0.7103.52 + device: + type: smartphone + brand: Samsung + model: Galaxy A15 5G + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; SL219C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.111 YaBrowser/25.6.5.111.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.5.111.00 + engine: Blink + engine_version: 136.0.7103.111 + device: + type: smartphone + brand: Cricket + model: Icon 6 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; SH-M29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.398 YaApp_Android/25.62.1 YaSearchBrowser/25.62.1 BroPP/1.0 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.62.1 + engine: Blink + engine_version: 136.0.7103.398 + device: + type: smartphone + brand: Sharp + model: Aquos Sense 9 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; S3 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.91 YaSearchBrowser/25.66.1 BroPP/1.0 YaSearchApp/25.66.1 webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.91 + device: + type: smartphone + brand: FOSSiBOT + model: S3 Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; S23 Pro Max) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.244 YaSearchBrowser/24.90.1 BroPP/1.0 YaSearchApp/24.90.1 webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 24.90.1 + engine: Blink + engine_version: 126.0.6478.244 + device: + type: smartphone + brand: Reeder + model: S23 Pro Max + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; S119) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.98 YaSearchBrowser/25.66.1 BroPP/1.0 YaSearchApp/25.66.1 webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.98 + device: + type: smartphone + brand: Doogee + model: S119 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; RMX3952) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.91 YaSearchBrowser/25.66.1 BroPP/1.0 YaSearchApp/25.66.1 webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.91 + device: + type: smartphone + brand: Realme + model: "13" + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; Play25_Pro_4G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.422 YaApp_Android/25.62/apad YaSearchBrowser/25.62/apad BroPP/1.0 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: "25.62" + engine: Blink + engine_version: 136.0.7103.422 + device: + type: smartphone + brand: CORN + model: Play 25 Pro 4G + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; OB-A98) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.98 YaSearchBrowser/25.66.1 BroPP/1.0 YaSearchApp/25.66.1 webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.98 + device: + type: smartphone + brand: Unihertz + model: Tank 4 Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; Nokia 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.91 YaSearchBrowser/25.66.1 BroPP/1.0 YaSearchApp/25.66.1 webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.91 + device: + type: smartphone + brand: Nokia + model: "8" + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; LT C26) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.52 YaBrowser/25.6.6.52.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.52.00 + engine: Blink + engine_version: 136.0.7103.52 + device: + type: smartphone + brand: LT Mobile + model: C26 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; KINGKONG X PRO) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.422 YaApp_Android/25.62.1 YaSearchBrowser/25.62.1 BroPP/1.0 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.62.1 + engine: Blink + engine_version: 136.0.7103.422 + device: + type: smartphone + brand: CUBOT + model: King Kong X Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; ajib i10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.91 YaSearchBrowser/25.66.1 BroPP/1.0 YaSearchApp/25.66.1 webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.91 + device: + type: smartphone + brand: Ajib + model: I10 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 13; U380AA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.52 YaBrowser/25.6.6.52.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "13" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.52.00 + engine: Blink + engine_version: 136.0.7103.52 + device: + type: smartphone + brand: 'AT&T' + model: Calypso 4 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 13; SM-A716S) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.311 YaBrowser/24.7.0.311.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "13" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 24.7.0.311.00 + engine: Blink + engine_version: 126.0.6478.311 + device: + type: smartphone + brand: Samsung + model: Galaxy A Quantum + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 13; RunGee x9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.55 YaBrowser/25.6.6.55.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "13" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.55.00 + engine: Blink + engine_version: 136.0.7103.55 + device: + type: smartphone + brand: RunGee + model: X9 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; Z2472) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: ZTE + model: Blade A36 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; XQ-FS72) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Sony + model: Xperia 1 VII + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; XQ-FS44) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Sony + model: Xperia 1 VII + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; RMX5062) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Realme + model: Neo 7 Turbo + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; PLF110) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: OnePlus + model: Ace 5 Race + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; PLC110) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: OnePlus + model: Ace 5 Ultra + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; PKC130) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: OPPO + model: Find X8 Pro + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; I2502) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Vivo + model: iQOO Z10 Lite + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; I2221) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Vivo + model: iQOO Neo 10R + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; 24095PCADI) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 131.0.0.0 + engine: Blink + engine_version: 131.0.0.0 + device: + type: smartphone + brand: POCO + model: X7 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; LT E18 Build/UP1A.231005.007; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.179 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Webview + version: 138.0.7204.179 + engine: Blink + engine_version: 138.0.7204.179 + device: + type: smartphone + brand: LT Mobile + model: E18 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; LT E16 Build/UP1A.231005.007) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.179 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Webview + version: 138.0.7204.179 + engine: Blink + engine_version: 138.0.7204.179 + device: + type: smartphone + brand: LT Mobile + model: E16 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; itel A671LC) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: iTel + model: A80 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; HMD Vibe) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: HMD + model: Vibe + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; Black_E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Kalley + model: Black E + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; ALT-LX3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Huawei + model: Honor X7c + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; 2411DRN47I) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 136.0.0.0 + engine: Blink + engine_version: 136.0.0.0 + device: + type: smartphone + brand: Xiaomi + model: Redmi 14C 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; 4G mega power) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.85 Mobile Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 94.0.4606.85 + engine: Blink + engine_version: 94.0.4606.85 + device: + type: smartphone + brand: CALME + model: 4G Mega Power + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; 4G MAXX) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.85 Mobile Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 94.0.4606.85 + engine: Blink + engine_version: 94.0.4606.85 + device: + type: smartphone + brand: CALME + model: 4G Maxx + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; 4G Hot Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.120 Mobile Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Chrome Webview + version: 83.0.4103.120 + engine: Blink + engine_version: 83.0.4103.120 + device: + type: smartphone + brand: CALME + model: 4G Hot + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; 4G-Hero) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.85 Mobile Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 94.0.4606.85 + engine: Blink + engine_version: 94.0.4606.85 + device: + type: smartphone + brand: CALME + model: 4G Hero + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 12; 4G SMART Build/O11019; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/58.0.3029.125 Mobile Safari/537.36 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Chrome Webview + version: 58.0.3029.125 + engine: Blink + engine_version: 58.0.3029.125 + device: + type: smartphone + brand: CALME + model: 4G Smart + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; U; Android 8.1.0; en-us; 4G Prime Build/JOP24G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.198 Mobile Safari/537.36 + os: + name: Android + version: 8.1.0 + platform: "" + client: + type: browser + name: Chrome Webview + version: 86.0.4240.198 + engine: Blink + engine_version: 86.0.4240.198 + device: + type: smartphone + brand: CALME + model: 4G Prime + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; U; Android 8.1.0; 4G Ultra Pro Build/O11019; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Mobile Safari/537.36 OPR/93.0.2254.78340 + os: + name: Android + version: 8.1.0 + platform: "" + client: + type: browser + name: Opera Mobile + version: 93.0.2254.78340 + engine: Blink + engine_version: 70.0.3538.110 + device: + type: smartphone + brand: GFive + model: 4G Ultra Pro + os_family: Android + browser_family: Opera +- + user_agent: Mozilla/5.0 (Linux; Android 8.1.0; 4G Style) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Mobile Safari/537.36 + os: + name: Android + version: 8.1.0 + platform: "" + client: + type: browser + name: Chrome Mobile + version: 70.0.3538.110 + engine: Blink + engine_version: 70.0.3538.110 + device: + type: smartphone + brand: GFive + model: 4G Style + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 8.1.0; 4G STAR) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Mobile Safari/537.36 + os: + name: Android + version: 8.1.0 + platform: "" + client: + type: browser + name: Chrome Mobile + version: 70.0.3538.110 + engine: Blink + engine_version: 70.0.3538.110 + device: + type: smartphone + brand: CALME + model: 4G Star + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 8.1.0; 4G SPARK) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Mobile Safari/537.36 + os: + name: Android + version: 8.1.0 + platform: "" + client: + type: browser + name: Chrome Mobile + version: 70.0.3538.110 + engine: Blink + engine_version: 70.0.3538.110 + device: + type: smartphone + brand: CALME + model: 4G Spark + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 8.1.0; 4G 6700) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Mobile Safari/537.36 + os: + name: Android + version: 8.1.0 + platform: "" + client: + type: browser + name: Chrome Mobile + version: 70.0.3538.110 + engine: Blink + engine_version: 70.0.3538.110 + device: + type: smartphone + brand: GFive + model: 4G 6700 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 7.0; 4G LITE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.193 Mobile Safari/537.36 OPR/79.6.4195.77168 + os: + name: Android + version: "7.0" + platform: "" + client: + type: browser + name: Opera Mobile + version: 79.6.4195.77168 + engine: Blink + engine_version: 119.0.6045.193 + device: + type: smartphone + brand: CALME + model: 4G Lite + os_family: Android + browser_family: Opera +- + user_agent: Mozilla/5.0 (Linux; Android 7.0; 4G POWER Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/51.0.2704.91 Mobile Safari/537.36 + os: + name: Android + version: "7.0" + platform: "" + client: + type: browser + name: Chrome Webview + version: 51.0.2704.91 + engine: Blink + engine_version: 51.0.2704.91 + device: + type: smartphone + brand: CALME + model: 4G Power + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 7.0; 4G Music Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/51.0.2704.91 Mobile Safari/537.36 + os: + name: Android + version: "7.0" + platform: "" + client: + type: browser + name: Chrome Webview + version: 51.0.2704.91 + engine: Blink + engine_version: 51.0.2704.91 + device: + type: smartphone + brand: CALME + model: 4G Music + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 7.0; 4G Cloud Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/51.0.2704.91 Mobile Safari/537.36 + os: + name: Android + version: "7.0" + platform: "" + client: + type: browser + name: Chrome Webview + version: 51.0.2704.91 + engine: Blink + engine_version: 51.0.2704.91 + device: + type: smartphone + brand: CALME + model: 4G Cloud + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; DNP-AN00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.98 YaSearchBrowser/25.66.1 BroPP/1.0 YaSearchApp/25.66.1 webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.98 + device: + type: smartphone + brand: Huawei + model: Honor 400 Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; Armor 34 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.55 YaBrowser/25.6.6.55.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.55.00 + engine: Blink + engine_version: 136.0.7103.55 + device: + type: smartphone + brand: Ulefone + model: Armor 34 Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; Action A5Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.102 YaBrowser/25.6.4.102.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.4.102.00 + engine: Blink + engine_version: 136.0.7103.102 + device: + type: smartphone + brand: F150 + model: Action A5 Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; Armor X16) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.136 YaSearchBrowser/25.65.1 BroPP/1.0 YaSearchApp/25.65.1 webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.65.1 + engine: Blink + engine_version: 136.0.7103.136 + device: + type: smartphone + brand: Ulefone + model: Armor X16 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; VIA X45) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.52 YaBrowser/25.6.6.52.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.52.00 + engine: Blink + engine_version: 136.0.7103.52 + device: + type: smartphone + brand: Casper + model: VIA X45 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; RMX5033) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.7204.179 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.7204.179 + engine: Blink + engine_version: 138.0.7204.179 + device: + type: smartphone + brand: Realme + model: Narzo 80 Pro 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; POCO X7 Pro Build/AP3A.240905.015.A2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.118 Mobile Safari/537.36 XiaoMi/MiuiBrowser/14.39.0-gn + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Mi Browser + version: 14.39.0 + engine: Blink + engine_version: 123.0.6312.118 + device: + type: smartphone + brand: POCO + model: X7 Pro + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; POCO X7 Build/AP3A.240905.015.A2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.118 Mobile Safari/537.36 XiaoMi/MiuiBrowser/14.39.0-gn + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Mi Browser + version: 14.39.0 + engine: Blink + engine_version: 123.0.6312.118 + device: + type: smartphone + brand: POCO + model: X7 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; POCO C61 Build/AP3A.240905.015.A2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.118 Mobile Safari/537.36 XiaoMi/MiuiBrowser/14.38.0-gn + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Mi Browser + version: 14.38.0 + engine: Blink + engine_version: 123.0.6312.118 + device: + type: smartphone + brand: POCO + model: C61 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; POCO F7 Build/AQ3A.250107.001) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.118 Mobile Safari/537.36 XiaoMi/MiuiBrowser/14.38.0-gn + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Mi Browser + version: 14.38.0 + engine: Blink + engine_version: 123.0.6312.118 + device: + type: smartphone + brand: POCO + model: F7 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; POCO F7 Pro Build/AQ3A.240829.003) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.118 Mobile Safari/537.36 XiaoMi/MiuiBrowser/14.38.0-gn + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Mi Browser + version: 14.38.0 + engine: Blink + engine_version: 123.0.6312.118 + device: + type: smartphone + brand: POCO + model: F7 Pro + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; POCO F7 Ultra Build/AQ3A.240829.003) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.118 Mobile Safari/537.36 XiaoMi/MiuiBrowser/14.38.0-gn + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Mi Browser + version: 14.38.0 + engine: Blink + engine_version: 123.0.6312.118 + device: + type: smartphone + brand: POCO + model: F7 Ultra + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; POCO M7 Pro 5G Build/AP3A.240905.015.A2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.118 Mobile Safari/537.36 XiaoMi/MiuiBrowser/14.38.0-gn + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Mi Browser + version: 14.38.0 + engine: Blink + engine_version: 123.0.6312.118 + device: + type: smartphone + brand: POCO + model: M7 Pro 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; NIC-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Mobile Safari/537.36 OPR/91.0.0.0 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Opera Mobile + version: 91.0.0.0 + engine: Blink + engine_version: 139.0.0.0 + device: + type: smartphone + brand: Huawei + model: Honor X6c + os_family: Android + browser_family: Opera +- + user_agent: Mozilla/5.0 (Linux; Android 15; NIC-AN00 Build/HONORNIC-AN00;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.2.0.3 (P1 15) NABar/1.0 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: HONOR Browser + version: 9.2.0.3 + engine: Blink + engine_version: 97.0.4692.98 + device: + type: smartphone + brand: Huawei + model: Honor Play 60 + os_family: Android + browser_family: Baidu +- + user_agent: 'Mozilla/5.0 (Linux; Android 15; NIC-LX2 Build/HONORNIC-L42; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.176 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/524.0.0.52.44;IABMV/1;]' + os: + name: Android + version: "15" + platform: "" + client: + type: mobile app + name: Facebook + version: 524.0.0.52.44 + device: + type: smartphone + brand: Huawei + model: Honor X6c + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; NIC-LX3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Huawei + model: Honor X6c + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; Note58 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Doogee + model: Note 58 Pro + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; Note59 Pro+) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Doogee + model: Note 59 Pro+ + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; Mblu 22) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Meizu + model: Mblu 22 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; Infinix X6885) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Infinix + model: Hot 60 Pro + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; Infinix X6728) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Infinix + model: Hot 60i + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; Infinix X6726B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 131.0.0.0 + engine: Blink + engine_version: 131.0.0.0 + device: + type: smartphone + brand: Infinix + model: Hot 60 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; Infinix X6725C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Infinix + model: Smart 10 Plus + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; Infinix X6882B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Infinix + model: Hot 50 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; Infinix SMART 8 Pro Build/TP1A.220624.014) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.118 Mobile Safari/537.36 XiaoMi/MiuiBrowser/14.38.0-gn + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Mi Browser + version: 14.38.0 + engine: Blink + engine_version: 123.0.6312.118 + device: + type: smartphone + brand: Infinix + model: Smart 8 Pro + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; Infinix SMART 8 Build/TP1A.220624.014) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.118 Mobile Safari/537.36 XiaoMi/MiuiBrowser/14.38.0-gn + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Mi Browser + version: 14.38.0 + engine: Blink + engine_version: 123.0.6312.118 + device: + type: smartphone + brand: Infinix + model: Smart 8 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; NET HIT) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: KRONO + model: NET HIT + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; NET ALPHA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: KRONO + model: NET ALPHA + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; AURA PRIME) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Zuum + model: Aura Prime + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; AURA M1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Zuum + model: Aura M1 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; AURA Z1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Zuum + model: Aura Z1 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; itel C671L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.33 YaBrowser/25.6.7.33.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.7.33.00 + engine: Blink + engine_version: 136.0.7103.33 + device: + type: smartphone + brand: iTel + model: City 100 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; itel A6610L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.52 YaBrowser/25.6.6.52.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.52.00 + engine: Blink + engine_version: 136.0.7103.52 + device: + type: smartphone + brand: iTel + model: A90 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; itel P666L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.91 YaSearchBrowser/25.66.1 BroPP/1.0 YaSearchApp/25.66.1 webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.91 + device: + type: smartphone + brand: iTel + model: P65C + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; F-51E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.52 YaBrowser/25.6.6.52.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.52.00 + engine: Blink + engine_version: 136.0.7103.52 + device: + type: smartphone + brand: Fujitsu + model: Arrows We Plus F-51E + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 13; W11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.6834.2037 YaApp_Android/25.20.1 YaSearchBrowser/25.20.1 BroPP/1.0 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "13" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.20.1 + engine: Blink + engine_version: 132.0.6834.2037 + device: + type: smartphone + brand: Hotwav + model: W11 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; U; Android 13; zh-CN; PHJ110_A1 Build/TP1A.220905.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.58 Quark/7.14.5.880 Mobile Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Quark + version: 7.14.5.880 + engine: Blink + engine_version: 100.0.4896.58 + device: + type: smartphone + brand: OPPO + model: A2x 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; U; Android 14; en-US; Infinix X6532C Build/UP1A.231005.007) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/123.0.6312.80 UCBrowser/14.8.0.1368 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: UC Browser + version: 14.8.0.1368 + engine: Blink + engine_version: 123.0.6312.80 + device: + type: smartphone + brand: Infinix + model: Smart 9 HD + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; U; Android 14; en-US; CPH2773 Build/UP1A.231005.007) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/123.0.6312.80 123.0.6312.80 UCBrowser/14.7.8.1367 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: UC Browser + version: 14.7.8.1367 + engine: Blink + engine_version: 123.0.6312.80 + device: + type: smartphone + brand: OPPO + model: A5i + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; U; Android 14; en-us; SENS G Build/JOP24G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.198 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome Webview + version: 86.0.4240.198 + engine: Blink + engine_version: 86.0.4240.198 + device: + type: smartphone + brand: Zuum + model: Sens G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; U; Android 12; zh-Hans-CN; CLS-AL00 Build/HUAWEICLS-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.58 Quark/7.14.8.883 Mobile Safari/537.36 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Quark + version: 7.14.8.883 + engine: Blink + engine_version: 100.0.4896.58 + device: + type: smartphone + brand: Huawei + model: Mate 70 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; U; Android 12; zh-Hans-CN; CLS-AL30 Build/HUAWEICLS-AL30) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/123.0.6312.80 Quark/7.14.8.883 Mobile Safari/537.36 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Quark + version: 7.14.8.883 + engine: Blink + engine_version: 123.0.6312.80 + device: + type: smartphone + brand: Huawei + model: Mate 70 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; U; Android 12; ar-ye; LT_6217 Build/SP1A.210812.016) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.7204.179 Mobile Safari/537.36 PHX/18.9 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Phoenix Browser + version: "18.9" + engine: Blink + engine_version: 138.0.7204.179 + device: + type: smartphone + brand: LT Mobile + model: M15 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; U; Android 11; zh-Hans-CN; Xenium S706 Build/RP1A.200720.011) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/123.0.6312.80 Quark/7.14.2.872 Mobile Safari/537.36 + os: + name: Android + version: "11" + platform: "" + client: + type: browser + name: Quark + version: 7.14.2.872 + engine: Blink + engine_version: 123.0.6312.80 + device: + type: smartphone + brand: Philips + model: Xenium S706 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; U; Android 11; zh-Hans-CN; MRK-BD00 Build/HinovaMRK-BD00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/123.0.6312.80 Quark/7.14.8.883 Mobile Safari/537.36 + os: + name: Android + version: "11" + platform: "" + client: + type: browser + name: Quark + version: 7.14.8.883 + engine: Blink + engine_version: 123.0.6312.80 + device: + type: smartphone + brand: Hi Nova + model: 10 SE 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; U; Android 11; zh-CN; SP210 Build/CMDCSP210) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/123.0.6312.80 UCBrowser/17.8.4.1415 Mobile Safari/537.36 + os: + name: Android + version: "11" + platform: "" + client: + type: browser + name: UC Browser + version: 17.8.4.1415 + engine: Blink + engine_version: 123.0.6312.80 + device: + type: smartphone + brand: China Mobile + model: SP210 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; U; Android 10; zh-CN; SP300 Build/CMDCSP300) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/123.0.6312.80 UCBrowser/17.8.6.1417 Mobile Safari/537.36 + os: + name: Android + version: "10" + platform: "" + client: + type: browser + name: UC Browser + version: 17.8.6.1417 + engine: Blink + engine_version: 123.0.6312.80 + device: + type: smartphone + brand: China Mobile + model: SP300 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; U; Android 10; zh-CN; SP200 Build/CMDCSP200) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/123.0.6312.80 UCBrowser/17.8.4.1415 Mobile Safari/537.36 + os: + name: Android + version: "10" + platform: "" + client: + type: browser + name: UC Browser + version: 17.8.4.1415 + engine: Blink + engine_version: 123.0.6312.80 + device: + type: smartphone + brand: China Mobile + model: SP200 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 12; BLK-LX9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 EdgA/138.0.0.0 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Microsoft Edge + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Huawei + model: Nova 13 + os_family: Android + browser_family: Internet Explorer +- + user_agent: Mozilla/5.0 (Linux; Android 12; BLK-AL80) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 135.0.0.0 + engine: Blink + engine_version: 135.0.0.0 + device: + type: smartphone + brand: Huawei + model: Nova 13 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 12; Bison1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: X-TIGI + model: Bison 1 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 12; Alpha 1R) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: smartphone + brand: Lanix + model: Alpha 1R + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 12; TLR-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5013.1 Mobile Safari/537.36 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 103.0.5013.1 + engine: Blink + engine_version: 103.0.5013.1 + device: + type: smartphone + brand: Huawei + model: Nova 14 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 11; ZEUS_4G_PRO) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.85 Mobile Safari/537.36 + os: + name: Android + version: "11" + platform: "" + client: + type: browser + name: Chrome Mobile + version: 94.0.4606.85 + engine: Blink + engine_version: 94.0.4606.85 + device: + type: smartphone + brand: SPC + model: Zeus 4G Pro + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (iPhone; CPU iPhone OS 19_0 like Mac OS X) AppleWebKit/19601.1.17.1 (KHTML, like Gecko) Mobile/23A344 Instagram 335.0.8.11.121 (iPhone18,1; iOS 19_0; ru_RU; ru; scale=3.00; 1170x2532; 320361397) NW/3 + os: + name: iOS + version: "26.0" + platform: "" + client: + type: mobile app + name: Instagram + version: 335.0.8.11.121 + device: + type: phablet + brand: Apple + model: iPhone 17 Pro + os_family: iOS + browser_family: Unknown +- + user_agent: Mozilla/5.0 (iPhone; CPU iPhone OS 19_0 like Mac OS X) WebKit/8612 (KHTML, like Gecko) Mobile/23A344 [FBAN/FBIOS;FBDV/iPhone18,2;FBMD/iPhone;FBSN/iOS;FBSV/19.0;FBSS/3;FBID/phone;FBLC/it_IT;FBOP/5] + os: + name: iOS + version: "26.0" + platform: "" + client: + type: mobile app + name: Facebook + version: "" + device: + type: phablet + brand: Apple + model: iPhone 17 Pro Max + os_family: iOS + browser_family: Unknown +- + user_agent: Mozilla/5.0 (iPhone; CPU iPhone OS 19_0 like Mac OS X) WebKit/8612 (KHTML, like Gecko) Mobile/23A344 [FBAN/FBIOS;FBDV/iPhone18,3;FBMD/iPhone;FBSN/iOS;FBSV/19.0;FBSS/3;FBID/phone;FBLC/it_IT;FBOP/5] + os: + name: iOS + version: "26.0" + platform: "" + client: + type: mobile app + name: Facebook + version: "" + device: + type: phablet + brand: Apple + model: iPhone 17 + os_family: iOS + browser_family: Unknown +- + user_agent: Mozilla/5.0 (iPhone; CPU iPhone OS 19_0 like Mac OS X) WebKit/8612 (KHTML, like Gecko) Mobile/23A344 [FBAN/FBIOS;FBDV/iPhone18,4;FBMD/iPhone;FBSN/iOS;FBSV/19.0;FBSS/3;FBID/phone;FBLC/ru_RU;FBOP/5] + os: + name: iOS + version: "26.0" + platform: "" + client: + type: mobile app + name: Facebook + version: "" + device: + type: phablet + brand: Apple + model: iPhone Air + os_family: iOS + browser_family: Unknown diff --git a/spec/fixtures/detector/tablet-12.yml b/spec/fixtures/detector/tablet-12.yml index 27fae2f..12ed02d 100644 --- a/spec/fixtures/detector/tablet-12.yml +++ b/spec/fixtures/detector/tablet-12.yml @@ -3599,3 +3599,1713 @@ model: EverPad DC-8015 os_family: Android browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; SM-X620) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.895 YaApp_Android/25.43/apad YaSearchBrowser/25.43/apad BroPP/1.0 SA/3 Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: "25.43" + engine: Blink + engine_version: 134.0.6998.895 + device: + type: tablet + brand: Samsung + model: Galaxy Tab S10 FE+ 13.1" + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; SM-X526B) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/28.0 Chrome/130.0.0.0 Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Samsung Browser + version: "28.0" + engine: Blink + engine_version: 130.0.0.0 + device: + type: tablet + brand: Samsung + model: Galaxy Tab S10 FE 10.9" 5G + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; Pad 100 Build/AP3A.240905.015.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/127.0.6533.103 Safari/537.36 YandexSearch/7.54/apad YandexSearchBrowser/7.54 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Yandex Browser + version: "7.54" + engine: Blink + engine_version: 127.0.6533.103 + device: + type: tablet + brand: OSCAL + model: Pad 100 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; Vitumi 10.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.678 YaSearchBrowser/24.61/apad BroPP/1.0 YaSearchApp/24.61/apad webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: "24.61" + engine: Blink + engine_version: 124.0.6367.678 + device: + type: tablet + brand: Vitumi + model: Kids TV46410B01 10.1" + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm; Android 9; G1000 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.6834.95 YaBrowser/25.2.7.95.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "9" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.2.7.95.00 + engine: Blink + engine_version: 132.0.6834.95 + device: + type: tablet + brand: G-Vill + model: G1000 Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm; Android 9; G1000) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.555 YaSearchBrowser/25.45.1 BroPP/1.0 YaSearchApp/25.45.1 webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "9" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.45.1 + engine: Blink + engine_version: 134.0.6998.555 + device: + type: tablet + brand: G-Vill + model: G1000 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm; Android 9; G2000) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.822 YaSearchBrowser/25.46 BroPP/1.0 YaSearchApp/25.46 webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "9" + platform: ARM + client: + type: browser + name: Yandex Browser + version: "25.46" + engine: Blink + engine_version: 134.0.6998.822 + device: + type: tablet + brand: G-Vill + model: G2000 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; P50_T_ROW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.77 YaBrowser/25.4.5.77.01 Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.4.5.77.01 + engine: Blink + engine_version: 134.0.6998.77 + device: + type: tablet + brand: Teclast + model: P50 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; P50_T_EEA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.107 YaBrowser/25.4.2.107.01 Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.4.2.107.01 + engine: Blink + engine_version: 134.0.6998.107 + device: + type: tablet + brand: Teclast + model: P50 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; P50_B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.77 YaBrowser/25.4.5.77.01 Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.4.5.77.01 + engine: Blink + engine_version: 134.0.6998.77 + device: + type: tablet + brand: Teclast + model: P50 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; P50Ai_ROW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.822 YaSearchBrowser/25.46/apad BroPP/1.0 YaSearchApp/25.46/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: "25.46" + engine: Blink + engine_version: 134.0.6998.822 + device: + type: tablet + brand: Teclast + model: P50Ai + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; T60Ai_ROW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.77 YaBrowser/25.4.5.77.01 Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.4.5.77.01 + engine: Blink + engine_version: 134.0.6998.77 + device: + type: tablet + brand: Teclast + model: T60Ai + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; OPD2409) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.895 YaApp_Android/25.43/apad YaSearchBrowser/25.43/apad BroPP/1.0 SA/3 Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: "25.43" + engine: Blink + engine_version: 134.0.6998.895 + device: + type: tablet + brand: OPPO + model: Pad 4 Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; OPD2404) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.895 YaApp_Android/25.43/apad YaSearchBrowser/25.43/apad BroPP/1.0 SA/3 Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: "25.43" + engine: Blink + engine_version: 134.0.6998.895 + device: + type: tablet + brand: OnePlus + model: Pad Pro 12.1" + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; OPD2401) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.49 YaBrowser/25.4.6.49.01 Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.4.6.49.01 + engine: Blink + engine_version: 134.0.6998.49 + device: + type: tablet + brand: OPPO + model: Pad 3 Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; L10-T11-EEA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.895 YaApp_Android/25.43/apad YaSearchBrowser/25.43/apad BroPP/1.0 SA/3 Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: "25.43" + engine: Blink + engine_version: 134.0.6998.895 + device: + type: tablet + brand: VASOUN + model: L10-T11 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; L10-T11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: tablet + brand: VASOUN + model: L10-T11 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; TB373FU) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: tablet + brand: Lenovo + model: IdeaTab Pro 12.7" (2025) + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; TB311XU) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: tablet + brand: Lenovo + model: Tab K10 (Gen 2) + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; I10_Plus) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: tablet + brand: BMAX + model: MaxPad I10 Plus + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; NOVUS TAB) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome + version: 124.0.0.0 + engine: Blink + engine_version: 124.0.0.0 + device: + type: tablet + brand: Zuum + model: Novus Tab + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; IT-801B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: tablet + brand: ATMPC + model: IT-801B + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; GLOBALSEC TAB TEN) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome + version: 137.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: tablet + brand: GlobalSec + model: Tab Ten + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; VTAB7 Build/TP1A.221005.003) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/136.0.7103.125 Mobile Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Chrome Webview + version: 136.0.7103.125 + engine: Blink + engine_version: 136.0.7103.125 + device: + type: tablet + brand: Vios + model: VTAB7 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; 2505DRP06G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.454 YaSearchBrowser/24.79/apad BroPP/1.0 YaSearchApp/24.79/apad webOmni SA/3 Mobile Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: "24.79" + engine: Blink + engine_version: 126.0.6478.454 + device: + type: tablet + brand: Xiaomi + model: Redmi Pad 2 4G + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; Zoom TA3E0P02) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.182 YaBrowser/25.4.3.182.01 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.4.3.182.01 + engine: Blink + engine_version: 134.0.6998.182 + device: + type: tablet + brand: Digma + model: Pro Zoom TA3E0P02 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; Zenith TA2D1P01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.1823 YaApp_Android/24.120/apad YaSearchBrowser/24.120/apad BroPP/1.0 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: "24.120" + engine: Blink + engine_version: 130.0.6723.1823 + device: + type: tablet + brand: Digma + model: Pro Zenith TA2D1P01 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; TL65611S01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.49 YaBrowser/25.4.6.49.01 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.4.6.49.01 + engine: Blink + engine_version: 134.0.6998.49 + device: + type: tablet + brand: LUNNEN + model: Ground 11 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; TL4648S01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.201 YaBrowser/25.6.0.201.01 (beta) Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.0.201.01 beta + engine: Blink + engine_version: 136.0.7103.201 + device: + type: tablet + brand: LUNNEN + model: Ground 8.4 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 4.4.2; ImPAD 6414 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.90 Safari/537.36 OPR/52.2.2517.139816 + os: + name: Android + version: 4.4.2 + platform: "" + client: + type: browser + name: Opera + version: 52.2.2517.139816 + engine: Blink + engine_version: 73.0.3683.90 + device: + type: tablet + brand: Impression + model: ImPad 6414 + os_family: Android + browser_family: Opera +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; ELN2-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.52 YaBrowser/25.6.6.52.01 Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.52.01 + engine: Blink + engine_version: 136.0.7103.52 + device: + type: tablet + brand: Huawei + model: Honor Pad X9a 11.5" LTE + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; 25040RP0AG) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.91 YaSearchBrowser/25.66.1/apad BroPP/1.0 YaSearchApp/25.66.1/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.91 + device: + type: tablet + brand: Xiaomi + model: Redmi Pad 2 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; T70_ROW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.945 YaSearchBrowser/25.61/apad BroPP/1.0 YaSearchApp/25.61/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: "25.61" + engine: Blink + engine_version: 136.0.7103.945 + device: + type: tablet + brand: Teclast + model: T70 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; T50Max_ROW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.422 YaApp_Android/25.62/apad YaSearchBrowser/25.62/apad BroPP/1.0 SA/3 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: "25.62" + engine: Blink + engine_version: 136.0.7103.422 + device: + type: tablet + brand: Teclast + model: T50 Max + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; T50Max_EEA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.98 YaSearchBrowser/25.66.1/apad BroPP/1.0 YaSearchApp/25.66.1/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.98 + device: + type: tablet + brand: Teclast + model: T50 Max + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; T50HD_ROW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.98 YaBrowser/25.6.3.98.01 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.3.98.01 + engine: Blink + engine_version: 136.0.7103.98 + device: + type: tablet + brand: Teclast + model: T50HD + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; T50HD_EEA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.95 YaBrowser/25.6.1.95.01 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.1.95.01 + engine: Blink + engine_version: 136.0.7103.95 + device: + type: tablet + brand: Teclast + model: T50HD + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; T30 Max) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.107 YaBrowser/25.6.4.107.01 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.4.107.01 + engine: Blink + engine_version: 136.0.7103.107 + device: + type: tablet + brand: Doogee + model: T30 Max + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; T1201) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.822 YaSearchBrowser/25.46/apad BroPP/1.0 YaSearchApp/25.46/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: "25.46" + engine: Blink + engine_version: 134.0.6998.822 + device: + type: tablet + brand: AllDocube + model: iPlay 60 Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; T10Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.91 YaSearchBrowser/25.66.1/apad BroPP/1.0 YaSearchApp/25.66.1/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.91 + device: + type: tablet + brand: Doogee + model: T10 Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; SM-X516C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.91 YaSearchBrowser/25.66.1/apad BroPP/1.0 YaSearchApp/25.66.1/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.91 + device: + type: tablet + brand: Samsung + model: Galaxy Tab S9 FE 10.9" 5G + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; SM-X218B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.52 YaBrowser/25.6.6.52.01 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.52.01 + engine: Blink + engine_version: 136.0.7103.52 + device: + type: tablet + brand: Samsung + model: Galaxy Tab A9+ 11.0" 5G + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; SM-T636B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.91 YaSearchBrowser/25.66.1/apad BroPP/1.0 YaSearchApp/25.66.1/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.91 + device: + type: tablet + brand: Samsung + model: Galaxy Tab Active 4 Pro 10.1" 5G + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; Sirius Plus Tab 10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.52 YaBrowser/25.6.6.52.00 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.52.00 + engine: Blink + engine_version: 136.0.7103.52 + device: + type: tablet + brand: Stylo + model: Sirius Plus Tab 10 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; Quantum TA2D5P01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.55 YaBrowser/25.6.6.55.01 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.55.01 + engine: Blink + engine_version: 136.0.7103.55 + device: + type: tablet + brand: Digma + model: Pro Quantum TA2D5P01 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; Pad Pro E111) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.91 YaSearchBrowser/25.66.1/apad BroPP/1.0 YaSearchApp/25.66.1/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.91 + device: + type: tablet + brand: KENSHI + model: Pad Pro E111 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; Pad Pro E110) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.98 YaSearchBrowser/25.66.1/apad BroPP/1.0 YaSearchApp/25.66.1/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.98 + device: + type: tablet + brand: KENSHI + model: Pad Pro E110 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; P50_ROW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.98 YaBrowser/25.6.3.98.01 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.3.98.01 + engine: Blink + engine_version: 136.0.7103.98 + device: + type: tablet + brand: Teclast + model: P50 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; P50_EEA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.7204.194 YaBrowser/25.8.0.194.01 (alpha) Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.8.0.194.01 alpha + engine: Blink + engine_version: 138.0.7204.194 + device: + type: tablet + brand: Teclast + model: P50 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; Optima 8430E 4G DA1C8P01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.6834.2144 YaApp_Android/25.20.1/apad YaSearchBrowser/25.20.1/apad BroPP/1.0 SA/3 Mobile Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.20.1 + engine: Blink + engine_version: 132.0.6834.2144 + device: + type: tablet + brand: Digma + model: Optima 8430E 4G + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; OB-P10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.990 YaSearchBrowser/25.61/apad BroPP/1.0 YaSearchApp/25.61/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: "25.61" + engine: Blink + engine_version: 136.0.7103.990 + device: + type: tablet + brand: Unihertz + model: Tank Pad P10 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; OB-P08) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.55 YaBrowser/25.6.6.55.01 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.55.01 + engine: Blink + engine_version: 136.0.7103.55 + device: + type: tablet + brand: Unihertz + model: Tank Pad P08 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; L10_T08_EEA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.422 YaApp_Android/25.62/apad YaSearchBrowser/25.62/apad BroPP/1.0 SA/3 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: "25.62" + engine: Blink + engine_version: 136.0.7103.422 + device: + type: tablet + brand: VASOUN + model: L10-T08 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; K10 DA1C0P01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.98 YaBrowser/25.6.3.98.01 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.3.98.01 + engine: Blink + engine_version: 136.0.7103.98 + device: + type: tablet + brand: Digma + model: K10 DA1C0P01 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; Jaculus V2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.91 YaSearchBrowser/25.66.1/apad BroPP/1.0 YaSearchApp/25.66.1/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.91 + device: + type: tablet + brand: GTX + model: Jaculus V2 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; iPlay60_Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.990 YaSearchBrowser/25.61/apad BroPP/1.0 YaSearchApp/25.61/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: "25.61" + engine: Blink + engine_version: 136.0.7103.990 + device: + type: tablet + brand: AllDocube + model: iPlay 60 Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; hoco_HI11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.136 YaSearchBrowser/25.65/apad BroPP/1.0 YaSearchApp/25.65/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: "25.65" + engine: Blink + engine_version: 136.0.7103.136 + device: + type: tablet + brand: hoco + model: HI11 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; ACD-Tab-10S) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.91 YaSearchBrowser/25.66.1/apad BroPP/1.0 YaSearchApp/25.66.1/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.91 + device: + type: tablet + brand: ACD + model: Tab 10S + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 13; U10 Kid) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.91 YaSearchBrowser/25.66.1/apad BroPP/1.0 YaSearchApp/25.66.1/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "13" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.91 + device: + type: tablet + brand: Doogee + model: U10 Kid + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 13; U320) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.55 YaBrowser/25.6.6.55.01 Safari/537.36 + os: + name: Android + version: "13" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.55.01 + engine: Blink + engine_version: 136.0.7103.55 + device: + type: tablet + brand: YUMKEM + model: U320 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 13; PRIME 18 MS1003PL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.98 YaBrowser/25.6.3.98.01 Safari/537.36 + os: + name: Android + version: "13" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.3.98.01 + engine: Blink + engine_version: 136.0.7103.98 + device: + type: tablet + brand: Digma + model: Pro Prime 18 11" 3G + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 13; PRIME 18 MS1002PL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.55 YaBrowser/25.6.6.55.01 Safari/537.36 + os: + name: Android + version: "13" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.55.01 + engine: Blink + engine_version: 136.0.7103.55 + device: + type: tablet + brand: Digma + model: Pro Prime 18 11" 3G + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 13; PRIME 18 MS1001PL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.98 YaBrowser/25.6.3.98.01 Safari/537.36 + os: + name: Android + version: "13" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.3.98.01 + engine: Blink + engine_version: 136.0.7103.98 + device: + type: tablet + brand: Digma + model: Pro Prime 18 11" 3G + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 13; Pad6 PLUS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.52 YaBrowser/25.6.6.52.01 Safari/537.36 + os: + name: Android + version: "13" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.52.01 + engine: Blink + engine_version: 136.0.7103.52 + device: + type: tablet + brand: YIKEMI + model: Pad 6 Plus + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 13; OT6 Kids) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.52 YaBrowser/25.6.6.52.01 Safari/537.36 + os: + name: Android + version: "13" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.52.01 + engine: Blink + engine_version: 136.0.7103.52 + device: + type: tablet + brand: Oukitel + model: OT6 Kids + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; ELN2-W29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 OPR/90.0.0.0 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Opera + version: 90.0.0.0 + engine: Blink + engine_version: 137.0.0.0 + device: + type: tablet + brand: Huawei + model: Honor Pad X9a 11.5" WiFi + os_family: Android + browser_family: Opera +- + user_agent: Mozilla/5.0 (Linux; Android 15; 25040RP0AE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: tablet + brand: Xiaomi + model: Redmi Pad 2 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; A10-21_EEA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: tablet + brand: Acer + model: Iconia A10 M1 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; 100146663) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: tablet + brand: ONN + model: "100146663" + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; 100146660) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: tablet + brand: ONN + model: "100146660" + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; 100135924) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: tablet + brand: ONN + model: "100135924" + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; 100135920) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: tablet + brand: ONN + model: "100135920" + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 14; 100135794) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 + os: + name: Android + version: "14" + platform: "" + client: + type: browser + name: Chrome + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: tablet + brand: ONN + model: "100135794" + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; Bigtech_B_RU Build/TP1A.220624.014;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.168 Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Chrome Webview + version: 138.0.7204.168 + engine: Blink + engine_version: 138.0.7204.168 + device: + type: tablet + brand: Bigben + model: BigTech B + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 15; Active 12 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.55 YaBrowser/25.6.6.55.01 Safari/537.36 + os: + name: Android + version: "15" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.6.55.01 + engine: Blink + engine_version: 136.0.7103.55 + device: + type: tablet + brand: Blackview + model: Active 12 Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; T60Plus_ROW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.100 YaBrowser/25.4.1.100.01 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.4.1.100.01 + engine: Blink + engine_version: 134.0.6998.100 + device: + type: tablet + brand: Teclast + model: T60 Plus + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; T60Plus_EEA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.98 YaBrowser/25.6.3.98.01 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.3.98.01 + engine: Blink + engine_version: 136.0.7103.98 + device: + type: tablet + brand: Teclast + model: T60 Plus + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; T65Max_ROW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.98 YaSearchBrowser/25.66.1/apad BroPP/1.0 YaSearchApp/25.66.1/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.98 + device: + type: tablet + brand: Teclast + model: T65 Max + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; T65Max_EEA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.91 YaSearchBrowser/25.66.1/apad BroPP/1.0 YaSearchApp/25.66.1/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.91 + device: + type: tablet + brand: Teclast + model: T65 Max + os_family: Android + browser_family: Unknown +- + user_agent: 'Mozilla/5.0 (Linux; Android 15; T50Mini_ROW Build/AP3A.240905.015.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.7204.169 YaBrowser/25.2.0.51 (lite) Safari/537.36' + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 25.2.0.51 + engine: Blink + engine_version: 138.0.7204.169 + device: + type: tablet + brand: Teclast + model: T50 Mini + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 15; ROL-W60 Build/HONORROL-W60; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/124.0.6367.82 Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Webview + version: 124.0.6367.82 + engine: Blink + engine_version: 124.0.6367.82 + device: + type: tablet + brand: Huawei + model: Honor Pad GT 11.5" WiFi + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; ROD2-W69 Build/HONORROD2-W69; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.179 Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome Webview + version: 138.0.7204.179 + engine: Blink + engine_version: 138.0.7204.179 + device: + type: tablet + brand: Huawei + model: Honor Pad GT Pro 12.3" WiFi + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 15; M10_R04) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 + os: + name: Android + version: "15" + platform: "" + client: + type: browser + name: Chrome + version: 138.0.0.0 + engine: Blink + engine_version: 138.0.0.0 + device: + type: tablet + brand: Pritom + model: M10 R04 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; Edge TA3D1M01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.115 YaBrowser/25.6.2.115.01 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.2.115.01 + engine: Blink + engine_version: 136.0.7103.115 + device: + type: tablet + brand: Digma + model: Pro Edge TA3D1M01 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; Eclipse TA3E1P02) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.98 YaBrowser/25.6.3.98.01 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.6.3.98.01 + engine: Blink + engine_version: 136.0.7103.98 + device: + type: tablet + brand: Digma + model: Pro Eclipse TA3E1P02 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; Empire TA3E2M01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 YaBrowser/23.1.7.38.01 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 23.1.7.38.01 + engine: Blink + engine_version: 108.0.0.0 + device: + type: tablet + brand: Digma + model: Pro Empire TA3E2M01 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; AGM PAD T3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.7103.91 YaSearchBrowser/25.66.1/apad BroPP/1.0 YaSearchApp/25.66.1/apad webOmni SA/3 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.66.1 + engine: Blink + engine_version: 136.0.7103.91 + device: + type: tablet + brand: AGM + model: Pad T3 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; U; Android 12; zh-Hans-CN; BVE-W10 Build/HUAWEIBVE-W10) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/123.0.6312.80 Quark/7.14.8.883 Mobile Safari/537.36 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Quark + version: 7.14.8.883 + engine: Blink + engine_version: 123.0.6312.80 + device: + type: tablet + brand: Huawei + model: Qinyun C5z 10.4" WiFi + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; U; Android 12; zh-CN; Readboy_C26Pro Build/SP1A.210812.016) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.58 UCBrowser/16.6.9.1320 Mobile Safari/537.36 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: UC Browser + version: 16.6.9.1320 + engine: Blink + engine_version: 100.0.4896.58 + device: + type: tablet + brand: Readboy + model: C26 Pro + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; U; Android 12; en-us; FunPad-8Max Build/JOP24G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.198 Mobile Safari/537.36 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Chrome Webview + version: 86.0.4240.198 + engine: Blink + engine_version: 86.0.4240.198 + device: + type: tablet + brand: FMT + model: FunPad 8 Max + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 12; BTKR-W09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Chrome + version: 133.0.0.0 + engine: Blink + engine_version: 133.0.0.0 + device: + type: tablet + brand: Huawei + model: MatePad 11.5" (2024) WiFi + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 12; AGS5-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Chrome + version: 133.0.0.0 + engine: Blink + engine_version: 133.0.0.0 + device: + type: tablet + brand: Huawei + model: MatePad 10.4" SE + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 11; TOREX831B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.130 Mobile Safari/537.36 OPR/76.0.4027.73219 + os: + name: Android + version: "11" + platform: "" + client: + type: browser + name: Opera Mobile + version: 76.0.4027.73219 + engine: Blink + engine_version: 114.0.5735.130 + device: + type: tablet + brand: Torex + model: Pad 831B + os_family: Android + browser_family: Opera +- + user_agent: Mozilla/5.0 (Linux; Android 12; TK_E720_EEA Build/SQ1A.220105.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.7204.179 YaBrowser/25.2.0.51 (lite) Safari/537.36 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 25.2.0.51 + engine: Blink + engine_version: 138.0.7204.179 + device: + type: tablet + brand: Great Asia + model: TK-E720 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 12; TechPad_832 Build/SQ1A.220105.002) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.7204.169 Safari/537.36 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Chrome + version: 138.0.7204.169 + engine: Blink + engine_version: 138.0.7204.169 + device: + type: tablet + brand: TechPad + model: "832" + os_family: Android + browser_family: Chrome diff --git a/spec/fixtures/detector/tv-2.yml b/spec/fixtures/detector/tv-2.yml index db271c7..816d212 100644 --- a/spec/fixtures/detector/tv-2.yml +++ b/spec/fixtures/detector/tv-2.yml @@ -3682,7 +3682,8 @@ device: type: tv brand: Lime - model: Z2 Plus + #Previosly "Z2 Plus", but changed to official name from https://tvbox.limehd.tv/z2 + model: TV Box Z2+ os_family: Android browser_family: Chrome - diff --git a/spec/fixtures/detector/tv-4.yml b/spec/fixtures/detector/tv-4.yml index 10d786c..1a1707b 100644 --- a/spec/fixtures/detector/tv-4.yml +++ b/spec/fixtures/detector/tv-4.yml @@ -104,7 +104,7 @@ device: type: tv brand: Yuno - model: ULX-43FTCS2234 + model: ULX-43FTCS2234-T9 os_family: Android browser_family: Unknown - diff --git a/spec/fixtures/detector/tv-5.yml b/spec/fixtures/detector/tv-5.yml index 6a25d16..be32c17 100644 --- a/spec/fixtures/detector/tv-5.yml +++ b/spec/fixtures/detector/tv-5.yml @@ -2527,3 +2527,651 @@ model: H32H5000SA os_family: Android browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 9; SUN-LED50XU400 Build/PPR2.180905.006.A1; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.120 YaBrowser/24.12.0.453 (lite) TV Safari/537.36 + os: + name: Android + version: "9" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.12.0.453 + engine: Blink + engine_version: 83.0.4103.120 + device: + type: tv + brand: SUNWIND + model: SUN-LED50XU400 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 12; Box R Lite 4K Build/STTC.220803.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/133.0.6943.49 YaBrowser/24.12.0.453 (lite) TV Safari/537.36 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.12.0.453 + engine: Blink + engine_version: 133.0.6943.49 + device: + type: tv + brand: Homatics + model: Box R Lite 4K + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 12; BQ_43FS38B Build/SP1A.210812.016; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/91.0.4472.114 YaBrowser/24.1.2.182 (lite) Safari/537.36 TV + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.1.2.182 + engine: Blink + engine_version: 91.0.4472.114 + device: + type: tv + brand: bq + model: 43FS38B + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 13; 43OV4000AF Build/TP1A.220905.004.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/101.0.4951.61 YaBrowser/25.6.1.561 (lite) Safari/537.36 TV + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 25.6.1.561 + engine: Blink + engine_version: 101.0.4951.61 + device: + type: tv + brand: ONVO + model: 43OV4000AF + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 13; 43LU6000T Build/TP1A.220905.004.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/101.0.4951.61 YaBrowser/24.1.2.86 (lite) Safari/537.36 TV + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.1.2.86 + engine: Blink + engine_version: 101.0.4951.61 + device: + type: tv + brand: Asano + model: 43LU6000T 43.0" + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 7.0; 40LF7030ST Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/51.0.2704.91 Safari/537.36 + os: + name: Android + version: "7.0" + platform: "" + client: + type: browser + name: Chrome Webview + version: 51.0.2704.91 + engine: Blink + engine_version: 51.0.2704.91 + device: + type: tv + brand: Asano + model: 40LF7030ST 40.0" + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; TDTV50CS06U Build/TP1A.220905.004.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/101.0.4951.61 YaBrowser/24.1.2.86 (lite) Safari/537.36 TV + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.1.2.86 + engine: Blink + engine_version: 101.0.4951.61 + device: + type: tv + brand: TopDevice + model: TDTV50CS06U + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 13; TDTV50CQ08U Build/TP1A.220905.004.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/101.0.4951.61 YaBrowser/24.1.2.86 (lite) Safari/537.36 TV + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.1.2.86 + engine: Blink + engine_version: 101.0.4951.61 + device: + type: tv + brand: TopDevice + model: TDTV50CQ08U + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 13; TDTV24BS02H_WE Build/TP1A.220905.004.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/101.0.4951.61 YaBrowser/24.1.2.86 (lite) Safari/537.36 TV + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.1.2.86 + engine: Blink + engine_version: 101.0.4951.61 + device: + type: tv + brand: TopDevice + model: TDTV24BS02H + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 13; TDTV24BS01H_BK Build/TP1A.220905.004.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/101.0.4951.61 YaBrowser/24.1.2.86 (lite) Safari/537.36 TV + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.1.2.86 + engine: Blink + engine_version: 101.0.4951.61 + device: + type: tv + brand: TopDevice + model: TDTV24BS01H + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 13; SM-LED32M07S Build/TP1A.220905.004.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/101.0.4951.61 YaBrowser/24.1.2.86 (lite) Safari/537.36 TV + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.1.2.86 + engine: Blink + engine_version: 101.0.4951.61 + device: + type: tv + brand: Soundmax + model: SM-LED32M07S + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 13; SM-QLED50T21SU Build/TP1A.220905.004.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/101.0.4951.61 YaBrowser/24.1.2.86 (lite) Safari/537.36 TV + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.1.2.86 + engine: Blink + engine_version: 101.0.4951.61 + device: + type: tv + brand: Soundmax + model: SM-QLED50T21SU + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 13; SL-LED65S01T2SU Build/TP1A.220905.004.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/101.0.4951.61 YaBrowser/24.1.2.86 (lite) Safari/537.36 TV + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.1.2.86 + engine: Blink + engine_version: 101.0.4951.61 + device: + type: tv + brand: Scoole + model: SL-LED65S01T2SU + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 13; HX-43F01FB Build/TP1A.220905.004.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/101.0.4951.61 Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Chrome Webview + version: 101.0.4951.61 + engine: Blink + engine_version: 101.0.4951.61 + device: + type: tv + brand: Hi + model: HX-43F01FB + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; HX-32H01FB Build/TP1A.220905.004.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/101.0.4951.61 YaBrowser/22.8.0.223 (lite) Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 22.8.0.223 + engine: Blink + engine_version: 101.0.4951.61 + device: + type: tv + brand: Hi + model: HX-32H01FB + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 13; HX-43U01FB Build/TP1A.220905.004.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/101.0.4951.61 Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Chrome Webview + version: 101.0.4951.61 + engine: Blink + engine_version: 101.0.4951.61 + device: + type: tv + brand: Hi + model: HX-43U01FB + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; HX-50U01FB Build/TP1A.220905.004.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/101.0.4951.61 YaBrowser/22.8.0.223 (lite) Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 22.8.0.223 + engine: Blink + engine_version: 101.0.4951.61 + device: + type: tv + brand: Hi + model: HX-50U01FB + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 13; HX-55U01FB Build/TP1A.220905.004.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/101.0.4951.61 Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Chrome Webview + version: 101.0.4951.61 + engine: Blink + engine_version: 101.0.4951.61 + device: + type: tv + brand: Hi + model: HX-55U01FB + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; HX-32F01FB Build/TP1A.220905.004.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/101.0.4951.61 Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Chrome Webview + version: 101.0.4951.61 + engine: Blink + engine_version: 101.0.4951.61 + device: + type: tv + brand: Hi + model: HX-32F01FB + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 13; HX-24H01FB Build/TP1A.220905.004.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/101.0.4951.61 YaBrowser/22.8.0.223 (lite) Safari/537.36 + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 22.8.0.223 + engine: Blink + engine_version: 101.0.4951.61 + device: + type: tv + brand: Hi + model: HX-24H01FB + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 13; 50LU6000T Build/TP1A.220905.004.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/101.0.4951.61 YaBrowser/25.7.1.605 (lite) Safari/537.36 TV + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 25.7.1.605 + engine: Blink + engine_version: 101.0.4951.61 + device: + type: tv + brand: Asano + model: 50LU6000T 50.0" + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 13; 32QWS9002 Build/TP1A.220905.004.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/101.0.4951.61 YaBrowser/24.1.2.86 (lite) Safari/537.36 TV + os: + name: Android + version: "13" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.1.2.86 + engine: Blink + engine_version: 101.0.4951.61 + device: + type: tv + brand: WildRed + model: 32QWS9002 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 12; AN-232) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 + os: + name: Android + version: "12" + platform: "" + client: + type: browser + name: Chrome + version: 119.0.0.0 + engine: Blink + engine_version: 119.0.0.0 + device: + type: tv + brand: Eplutus + model: AN-232 + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 11; ZALA SmartBox DV9135 Build/RT; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.169 YaBrowser/25.7.1.605 (lite) TV Safari/537.36 + os: + name: Android + version: "11" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 25.7.1.605 + engine: Blink + engine_version: 138.0.7204.169 + device: + type: tv + brand: ZALA + model: DV9135 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 11; YNDX-00095 Build/RD2A.211001.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/113.0.5672.163 YaBrowser/24.12.0.453 (lite) TV Safari/537.36 + os: + name: Android + version: "11" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.12.0.453 + engine: Blink + engine_version: 113.0.5672.163 + device: + type: tv + brand: Yandex + model: YNDX-00095 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 11; YNDX-00094 Build/RD2A.211001.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/113.0.5672.163 YaBrowser/24.12.0.453 (lite) TV Safari/537.36 + os: + name: Android + version: "11" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.12.0.453 + engine: Blink + engine_version: 113.0.5672.163 + device: + type: tv + brand: Yandex + model: YNDX-00094 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 11; YNDX-00093 Build/RD2A.211001.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/113.0.5672.163 YaBrowser/24.12.0.453 (lite) TV Safari/537.36 + os: + name: Android + version: "11" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.12.0.453 + engine: Blink + engine_version: 113.0.5672.163 + device: + type: tv + brand: Yandex + model: YNDX-00093 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 11; WinkBox Mini Build/RD2A.211001.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/125.0.6422.147 YaBrowser/24.1.2.260 (lite) TV Safari/537.36 + os: + name: Android + version: "11" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.1.2.260 + engine: Blink + engine_version: 125.0.6422.147 + device: + type: tv + brand: Wink + model: Box Mini + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 11; WinkBox 3 Build/RD2A.211001.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/125.0.6422.147 YaBrowser/24.1.2.260 (lite) TV Safari/537.36 + os: + name: Android + version: "11" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.1.2.260 + engine: Blink + engine_version: 125.0.6422.147 + device: + type: tv + brand: Wink + model: Box 3 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 11; waipu tv stick Build/RTT0.211009.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.169 YaBrowser/25.7.1.605 (lite) TV Safari/537.36 + os: + name: Android + version: "11" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 25.7.1.605 + engine: Blink + engine_version: 138.0.7204.169 + device: + type: tv + brand: waipu.tv + model: 4K Stick + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 11; ULX-24TCS221-T9 Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/113.0.5672.163 YaBrowser/24.12.0.453 (lite) TV Safari/537.36 + os: + name: Android + version: "11" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.12.0.453 + engine: Blink + engine_version: 113.0.5672.163 + device: + type: tv + brand: Yuno + model: ULX-24TCS221-T9 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 11; ULX-32TCS226-T9 Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/113.0.5672.163 YaBrowser/22.8.0.12 (lite) TV Safari/537.36 + os: + name: Android + version: "11" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 22.8.0.12 + engine: Blink + engine_version: 113.0.5672.163 + device: + type: tv + brand: Yuno + model: ULX-32TCS226-T9 + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 11; SM-LED55M04SU Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/113.0.5672.163 YaBrowser/24.12.0.453 (lite) TV Safari/537.36 + os: + name: Android + version: "11" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 24.12.0.453 + engine: Blink + engine_version: 113.0.5672.163 + device: + type: tv + brand: Soundmax + model: SM-LED55M04SU + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; Android 11; SM-LED43M03SU Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/113.0.5672.163 Mobile Safari/537.36 + os: + name: Android + version: "11" + platform: "" + client: + type: browser + name: Chrome Webview + version: 113.0.5672.163 + engine: Blink + engine_version: 113.0.5672.163 + device: + type: tv + brand: Soundmax + model: SM-LED43M03SU + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 11; SM-LED32M15S Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/113.0.5672.163 Mobile Safari/537.36 + os: + name: Android + version: "11" + platform: "" + client: + type: browser + name: Chrome Webview + version: 113.0.5672.163 + engine: Blink + engine_version: 113.0.5672.163 + device: + type: tv + brand: Soundmax + model: SM-LED32M15S + os_family: Android + browser_family: Chrome +- + user_agent: Mozilla/5.0 (Linux; Android 11; SM-LED24M11S Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.120 YaBrowser/23.1.0.39 (lite) Safari/537.36 TV + os: + name: Android + version: "11" + platform: "" + client: + type: browser + name: Yandex Browser Lite + version: 23.1.0.39 + engine: Blink + engine_version: 83.0.4103.120 + device: + type: tv + brand: Soundmax + model: SM-LED24M11S + os_family: Android + browser_family: Unknown diff --git a/spec/fixtures/detector/wearable.yml b/spec/fixtures/detector/wearable.yml index 5bb8f1c..3abe56f 100644 --- a/spec/fixtures/detector/wearable.yml +++ b/spec/fixtures/detector/wearable.yml @@ -2662,3 +2662,39 @@ model: Watch Series 10 46mm os_family: iOS browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; Quest 3S) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.111 YaBrowser/25.4.4.111.01 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.4.4.111.01 + engine: Blink + engine_version: 134.0.6998.111 + device: + type: wearable + brand: Meta + model: Quest 3S + os_family: Android + browser_family: Unknown +- + user_agent: Mozilla/5.0 (Linux; arm_64; Android 14; Quest 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.6998.49 YaBrowser/25.4.6.49.01 Safari/537.36 + os: + name: Android + version: "14" + platform: ARM + client: + type: browser + name: Yandex Browser + version: 25.4.6.49.01 + engine: Blink + engine_version: 134.0.6998.49 + device: + type: wearable + brand: Meta + model: Quest 3 + os_family: Android + browser_family: Unknown diff --git a/spec/fixtures/parser/oss.yml b/spec/fixtures/parser/oss.yml index 7a19f60..5d44af5 100644 --- a/spec/fixtures/parser/oss.yml +++ b/spec/fixtures/parser/oss.yml @@ -6061,3 +6061,55 @@ version: "26" platform: "" family: Mac +- + user_agent: KolibriOS libHTTP/1.1 + os: + name: KolibriOS + short_name: KOL + version: "" + platform: "" + family: Real-time OS +- + user_agent: Mozilla/5.0 (Phone; OpenHarmony 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 ArkWeb/4.1.6.1 Mobile MicroMessenger/8.0.9.39(0xf3100927) Weixin NetType/WIFI Language/zh_CN MMWEBID/2777 MMWEBSDK/202507060011 XWEB/1140307 + os: + name: OpenHarmony + short_name: OHS + version: "5.1" + platform: "" + family: Android +- + user_agent: Mozilla/5.0 (X11; CrOS x86_64 14541.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 + os: + name: Chrome OS + short_name: COS + version: "" + platform: x64 + family: Chrome OS + headers: + Sec-CH-UA-Platform: Android + Sec-CH-UA-Platform-Version: 13.0.0 + Sec-CH-UA-Model: rauru +- + user_agent: Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.270 Safari/537.36 WebAppManager + os: + name: webOS + short_name: WOS + version: "25" + platform: "" + family: Other Mobile +- + user_agent: Mozilla/5.0 (iPhone; CPU iPhone OS 26_0_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/376.0.777690323 Mobile/15E148 Safari/604.1 + os: + name: iOS + short_name: IOS + version: 26.0.0 + platform: "" + family: iOS +- + user_agent: Mozilla/5.0 (iPhone; CPU iPhone OS 19_0 like Mac OS X) WebKit/8612 (KHTML, like Gecko) Mobile/23A344 [FBAN/FBIOS;FBDV/iPhone18,4;FBMD/iPhone;FBSN/iOS;FBSV/19.0;FBSS/3;FBID/phone;FBLC/ru_RU;FBOP/5] + os: + name: iOS + short_name: IOS + version: "26.0" + platform: "" + family: iOS diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 39e7962..2d807ee 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -15,20 +15,28 @@ # it. # # See https://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration -$:.unshift(File.expand_path('../lib', __dir__)) -require 'device_detector' -require 'byebug' +require 'bootsnap' -def str_or_nil(string) - return nil if string.nil? - return nil if string == '' +BOOTSNAP_CACHE_DIR = File.expand_path('../tmp', __dir__) - string.to_s -end +Bootsnap.setup( + cache_dir: BOOTSNAP_CACHE_DIR, + development_mode: true, + load_path_cache: true, + compile_cache_iseq: true, + compile_cache_yaml: true +) + +$LOAD_PATH.unshift(File.expand_path('../lib', __dir__)) +require 'device_detector' +require 'byebug' + +helpers_dir = File.expand_path('./support', __dir__) +Dir["#{helpers_dir}/**/*.rb"].each { |helper_file| require helper_file } RSpec.configure do |config| - config.example_status_persistence_file_path = 'rspec-status.file' + config.example_status_persistence_file_path = 'tmp/rspec-status.file' # rspec-expectations config goes here. You can use an alternate # assertion/expectation library such as wrong or the stdlib/minitest @@ -62,51 +70,59 @@ def str_or_nil(string) # The settings below are suggested to provide a good initial experience # with RSpec, but feel free to customize to your heart's content. - # # This allows you to limit a spec run to individual examples or groups - # # you care about by tagging them with `:focus` metadata. When nothing - # # is tagged with `:focus`, all examples get run. RSpec also provides - # # aliases for `it`, `describe`, and `context` that include `:focus` - # # metadata: `fit`, `fdescribe` and `fcontext`, respectively. - # config.filter_run_when_matching :focus - # - # # Allows RSpec to persist some state between runs in order to support - # # the `--only-failures` and `--next-failure` CLI options. We recommend - # # you configure your source control system to ignore this file. - # config.example_status_persistence_file_path = "spec/examples.txt" - # - # # Limits the available syntax to the non-monkey patched syntax that is - # # recommended. For more details, see: - # # https://rspec.info/features/3-12/rspec-core/configuration/zero-monkey-patching-mode/ - # config.disable_monkey_patching! - # - # # This setting enables warnings. It's recommended, but in some cases may - # # be too noisy due to issues in dependencies. - # config.warnings = true - # - # # Many RSpec users commonly either run the entire suite or an individual - # # file, and it's useful to allow more verbose output when running an - # # individual spec file. - # if config.files_to_run.one? - # # Use the documentation formatter for detailed output, - # # unless a formatter has already been configured - # # (e.g. via a command-line flag). - # config.default_formatter = "doc" - # end - # - # # Print the 10 slowest examples and example groups at the - # # end of the spec run, to help surface which specs are running - # # particularly slow. - # config.profile_examples = 10 - # - # # Run specs in random order to surface order dependencies. If you find an - # # order dependency and want to debug it, you can fix the order by providing - # # the seed, which is printed after each run. - # # --seed 1234 - # config.order = :random - # - # # Seed global randomization in this process using the `--seed` CLI option. - # # Setting this allows you to use `--seed` to deterministically reproduce - # # test failures related to randomization by passing the same `--seed` value - # # as the one that triggered the failure. - # Kernel.srand config.seed + # This allows you to limit a spec run to individual examples or groups + # you care about by tagging them with `:focus` metadata. When nothing + # is tagged with `:focus`, all examples get run. RSpec also provides + # aliases for `it`, `describe`, and `context` that include `:focus` + # metadata: `fit`, `fdescribe` and `fcontext`, respectively. + # config.filter_run_when_matching :focus + + # Allows RSpec to persist some state between runs in order to support + # the `--only-failures` and `--next-failure` CLI options. We recommend + # you configure your source control system to ignore this file. + # config.example_status_persistence_file_path = "spec/examples.txt" + + # Limits the available syntax to the non-monkey patched syntax that is + # recommended. For more details, see: + # https://rspec.info/features/3-12/rspec-core/configuration/zero-monkey-patching-mode/ + # config.disable_monkey_patching! + + # This setting enables warnings. It's recommended, but in some cases may + # be too noisy due to issues in dependencies. + # config.warnings = true + + # Many RSpec users commonly either run the entire suite or an individual + # file, and it's useful to allow more verbose output when running an + # individual spec file. + # if config.files_to_run.one? + # # Use the documentation formatter for detailed output, + # # unless a formatter has already been configured + # # (e.g. via a command-line flag). + # config.default_formatter = "doc" + # end + + # Print the 10 slowest examples and example groups at the + # end of the spec run, to help surface which specs are running + # particularly slow. + # config.profile_examples = 10 + + # Run specs in random order to surface order dependencies. If you find an + # order dependency and want to debug it, you can fix the order by providing + # the seed, which is printed after each run. + # --seed 1234 + config.order = :random + + # Seed global randomization in this process using the `--seed` CLI option. + # Setting this allows you to use `--seed` to deterministically reproduce + # test failures related to randomization by passing the same `--seed` value + # as the one that triggered the failure. + Kernel.srand config.seed + + # Include matcher helpers + config.include MatcherHelper + config.include FixtureNormalizerHelper + + # Extend class helpers + config.extend ConditionalHelper + config.extend FixturesLoaderHelper end diff --git a/spec/support/conditional_helper.rb b/spec/support/conditional_helper.rb new file mode 100644 index 0000000..c49ea2e --- /dev/null +++ b/spec/support/conditional_helper.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +module ConditionalHelper + def client_engine?(fixture) + extract_and_check(fixture, 'client', 'engine') + end + + def client_engine_version?(fixture) + extract_and_check(fixture, 'client', 'engine_version') + end + + def client_family?(fixture) + extract_and_check(fixture, 'client', 'family') + end + + def client_version?(fixture) + extract_and_check(fixture, 'client', 'version') + end + + def device_model?(fixture) + extract_and_check(fixture, 'device', 'model') + end + + def os_platform?(fixture) + extract_and_check(fixture, 'os', 'platform') + end + + def os_version?(fixture) + extract_and_check(fixture, 'os', 'version') + end + + private + + def extract_and_check(fixture, *path) + value = fixture.dig(*path) + !value.to_s.empty? + end +end diff --git a/spec/support/custom_regexes/custom_bot.yml b/spec/support/custom_regexes/custom_bot.yml new file mode 100644 index 0000000..feb791b --- /dev/null +++ b/spec/support/custom_regexes/custom_bot.yml @@ -0,0 +1,6 @@ +- regex: 'ChromeBrother' + name: 'My custom User-Agent Bot' + category: 'Spec bot' + producer: + name: 'Nick Kugaevsky' + url: 'https://github.com/kugaevsky' diff --git a/spec/support/fixture_loader_helper.rb b/spec/support/fixture_loader_helper.rb new file mode 100644 index 0000000..648779f --- /dev/null +++ b/spec/support/fixture_loader_helper.rb @@ -0,0 +1,78 @@ +# frozen_string_literal: true + +require 'yaml' +require 'oj' +require 'fileutils' + +module FixturesLoaderHelper + CACHE_PATH = File.join(DeviceDetector.root, 'tmp/cache/fixtures.json') + + def fixtures_dir + File.join(DeviceDetector.root, 'spec/fixtures') + end + + def load_fixtures(paths = '**/*.yml') + file_list = + case paths + when String + paths = "#{fixtures_dir}/#{paths}" + Dir.glob(paths) + when Array then paths + else + raise ArgumentError, "Expected String or Array, got #{paths.class}" + end + + raise ArgumentError, "No files found within these paths: #{paths}" if file_list.empty? + + yaml_data.slice(*file_list).values.flatten + end + + private + + def yaml_data + @yaml_data ||= load_with_cache.freeze + end + + def load_with_cache + if cache_valid? + warn "[YAML Loader] Using json cache: #{CACHE_PATH}\n" + return Oj.load_file(CACHE_PATH) + end + + warn '[YAML Loader] Cache not found or outdated. Rebuilding...' + + data = load_all_yaml(fixtures_dir) + ensure_cache_dir! + Oj.to_file(CACHE_PATH, data, mode: :compat, indent: 2) + data + end + + def cache_valid? + return false unless File.exist?(CACHE_PATH) + + cache_mtime = File.mtime(CACHE_PATH) + yaml_files = Dir.glob(File.join(fixtures_dir, '**/*.yml')) + latest_yaml_mtime = yaml_files.map { |f| File.mtime(f) }.max + + latest_yaml_mtime && cache_mtime > latest_yaml_mtime + end + + def load_all_yaml(base_dir) + paths = Dir.glob(File.join(base_dir, '**/*.yml')) + warn "[YAML Loader] Loading #{paths.size} YAML-files from #{base_dir}..." + + results = paths.map do |path| + [path, YAML.load_file(path)] + rescue StandardError => e + warn "[YAML Loader] Error parsing #{path}: #{e.message}" + [path, {}] + end + + results.to_h + end + + def ensure_cache_dir! + dir = File.dirname(CACHE_PATH) + FileUtils.mkdir_p(dir) + end +end diff --git a/spec/support/fixture_normalizer_helper.rb b/spec/support/fixture_normalizer_helper.rb new file mode 100644 index 0000000..052ab18 --- /dev/null +++ b/spec/support/fixture_normalizer_helper.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +module FixtureNormalizerHelper + # Transform keys to symbols, values to strings and remove nil or empty values + def normalize_fixture(hash) + hash.map do |key, value| + value.to_s.empty? ? nil : [key.to_sym, value.to_s] + end.compact.to_h + end +end diff --git a/spec/support/matcher_helper.rb b/spec/support/matcher_helper.rb new file mode 100644 index 0000000..0ec21a5 --- /dev/null +++ b/spec/support/matcher_helper.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +module MatcherHelper + def str_or_nil(string) + return nil if string.nil? + return nil if string == '' + + string.to_s + end +end diff --git a/spec/support/shared_examples/detector_examples.rb b/spec/support/shared_examples/detector_examples.rb new file mode 100644 index 0000000..4d12634 --- /dev/null +++ b/spec/support/shared_examples/detector_examples.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +shared_examples 'detector bot examples' do + let(:bot) { fixture['bot'] } + + it 'should detect bot' do + expect(subject.bot?).to eq true + end + + it 'should detect bot name' do + expect(subject.bot_name).to eq bot['name'] + end +end + +shared_examples 'detector client examples' do + let(:client_result) { subject.send(:client_result) } + let(:client) { normalize_fixture(fixture['client']) } + + it 'should detect client name' do + expect(subject.name).to eq client[:name] + end + + it 'should have client as in fixture' do + expect(client_result).to include(client) + end +end + +shared_examples 'detector OS examples' do + let(:os_result) { subject.send(:os_result) } + let(:os) { normalize_fixture(fixture['os']) } + + it 'should detect expected OS name' do + expect(subject.os_name).to eq os[:name] + end + + it 'should have OS as in fixture' do + expect(os_result).to include(os) + end +end + +shared_examples 'detector device examples' do + let(:device) { normalize_fixture(fixture['device']) } + + it 'should detect expected device type' do + expect(subject.device_type).to eq device[:type] + end + + it 'should detect expected device brand' do + expect(subject.device_brand).to eq device[:brand] + end + + it 'should detect expected device model' do + expect(subject.device_name).to eq device[:model] + end +end