same_site_ua_checker 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +4 -0
- data/Gemfile.lock +32 -0
- data/_cli/generate_regex_classes.rb +56 -0
- data/_cli/generate_tests.rb +40 -0
- data/lib/same_site_ua_checker.rb +54 -0
- data/lib/same_site_ua_checker/gem_version.rb +3 -0
- data/lib/same_site_ua_checker/regex_list_abstract.rb +11 -0
- data/lib/same_site_ua_checker/regex_list_same_site_none_bug.rb +10 -0
- data/lib/same_site_ua_checker/regex_list_same_site_not_supported.rb +10 -0
- data/lib/same_site_ua_checker/regex_list_same_site_strict_bug.rb +10 -0
- data/lib/same_site_ua_checker/regex_version_abstract.rb +23 -0
- data/lib/same_site_ua_checker/regex_version_chrome.rb +8 -0
- data/lib/same_site_ua_checker/regex_version_ucbrowser.rb +8 -0
- data/lib/same_site_ua_checker/version.rb +26 -0
- data/readme.md +28 -0
- data/same_site_ua_checker.gemspec +21 -0
- data/spec/same_site_ua_checker_spec.rb +670 -0
- metadata +21 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cac5f900f23e94ca45ed79f15b2f0d1f07c70a21
|
4
|
+
data.tar.gz: ec49bc4aa4dac6f4e703ab5f87159617b9b78f64
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5b0b9e49364ae17fb2fbd9a72cd5c387ff0403d4329e75d958ac671ebe8482dc0fd2641a9ae2a7ecb1fc73f25d1a26b0db6baba66f0f90347a40aa3a1b862085
|
7
|
+
data.tar.gz: 61d68de36adf8974013970b3a9f6d3c6eaadb86ebb579f2a24aa5ab21fc5f7b5f14428e9d82d2998a65952896bdc72bf7a42e81a7a3461b7321b3a5cc65802bb
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
same_site_ua_checker (0.0.2)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
diff-lcs (1.4.4)
|
10
|
+
rspec (3.7.0)
|
11
|
+
rspec-core (~> 3.7.0)
|
12
|
+
rspec-expectations (~> 3.7.0)
|
13
|
+
rspec-mocks (~> 3.7.0)
|
14
|
+
rspec-core (3.7.1)
|
15
|
+
rspec-support (~> 3.7.0)
|
16
|
+
rspec-expectations (3.7.0)
|
17
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
18
|
+
rspec-support (~> 3.7.0)
|
19
|
+
rspec-mocks (3.7.0)
|
20
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
21
|
+
rspec-support (~> 3.7.0)
|
22
|
+
rspec-support (3.7.1)
|
23
|
+
|
24
|
+
PLATFORMS
|
25
|
+
ruby
|
26
|
+
|
27
|
+
DEPENDENCIES
|
28
|
+
rspec (~> 3.7.0, >= 3.7.0)
|
29
|
+
same_site_ua_checker!
|
30
|
+
|
31
|
+
BUNDLED WITH
|
32
|
+
1.16.1
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
def fix_regex(regex_string)
|
4
|
+
regex_string.sub('~', '/').reverse.sub('~', '/').reverse
|
5
|
+
end
|
6
|
+
|
7
|
+
def generate_version_class(client, regex)
|
8
|
+
file_name = "regex_version_#{client}.rb"
|
9
|
+
code = <<-CODE
|
10
|
+
# Generated by generate_regex_classes.rb
|
11
|
+
class SameSiteUaChecker
|
12
|
+
class RegexVersion#{client.capitalize} < RegexVersionAbstract
|
13
|
+
def regex_version
|
14
|
+
#{fix_regex(regex)}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
CODE
|
19
|
+
File.open(File.join(__dir__, '..', 'lib', 'same_site_ua_checker', file_name), 'w') { |f| f.puts(code) }
|
20
|
+
end
|
21
|
+
|
22
|
+
def generate_name_class(case_name, regexs)
|
23
|
+
parts = case_name.split('-')
|
24
|
+
file_name = "regex_list_#{parts.join('_')}.rb"
|
25
|
+
code = <<-CODE
|
26
|
+
# Generated by generate_regex_classes.rb
|
27
|
+
class SameSiteUaChecker
|
28
|
+
class RegexList#{parts.map(&:capitalize).join} < RegexListAbstract
|
29
|
+
def regex_list
|
30
|
+
[
|
31
|
+
#{regexs.map { |regex| fix_regex(regex) }.join(', ')}
|
32
|
+
]
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
CODE
|
37
|
+
File.open(File.join(__dir__, '..', 'lib', 'same_site_ua_checker', file_name), 'w') { |f| f.puts(code) }
|
38
|
+
end
|
39
|
+
|
40
|
+
Dir[File.join(__dir__, '..', '..', '..', 'regex', 'version-match', '*')].each do |path|
|
41
|
+
f = File.open(path)
|
42
|
+
regex = f.read
|
43
|
+
f.close
|
44
|
+
client = Pathname.new(path).basename.to_s
|
45
|
+
|
46
|
+
generate_version_class(client, regex)
|
47
|
+
end
|
48
|
+
|
49
|
+
Dir[File.join(__dir__, '..', '..', '..', 'regex', 'check', '*')].each do |path|
|
50
|
+
f = File.open(path)
|
51
|
+
content = f.read
|
52
|
+
f.close
|
53
|
+
client = Pathname.new(path).basename.to_s
|
54
|
+
|
55
|
+
generate_name_class(client, content.split("\n"))
|
56
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
code = <<-CODE
|
4
|
+
# Generated by generate_tests.rb
|
5
|
+
require_relative '../lib/same_site_ua_checker'
|
6
|
+
|
7
|
+
describe SameSiteUaChecker do
|
8
|
+
subject { SameSiteUaChecker.call(ua_string) }
|
9
|
+
CODE
|
10
|
+
|
11
|
+
def generate_test_case(line)
|
12
|
+
line = line.strip
|
13
|
+
matches = line.match(/(true|false)\t(.+)/)
|
14
|
+
return '' if line == ''
|
15
|
+
return "\n # #{line}" unless matches
|
16
|
+
|
17
|
+
<<-CODE
|
18
|
+
|
19
|
+
context '#{matches[2]}' do
|
20
|
+
let(:ua_string) { '#{matches[2]}' }
|
21
|
+
it { should eq #{matches[1]} }
|
22
|
+
end
|
23
|
+
CODE
|
24
|
+
end
|
25
|
+
|
26
|
+
Dir[File.join(__dir__, '..', '..', '..', 'test-suite', '*')].each do |path|
|
27
|
+
f = File.open(path)
|
28
|
+
lines = f.readlines
|
29
|
+
f.close
|
30
|
+
set_name = Pathname.new(path).basename.to_s
|
31
|
+
|
32
|
+
code += "\n # Set name: #{set_name}"
|
33
|
+
lines.each do |line|
|
34
|
+
code += generate_test_case(line)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
code += "end\n"
|
39
|
+
|
40
|
+
File.open(File.join(__dir__, '..', 'spec', 'same_site_ua_checker_spec.rb'), 'w') { |f| f.puts(code) }
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require_relative 'same_site_ua_checker/version'
|
2
|
+
|
3
|
+
require_relative 'same_site_ua_checker/regex_version_abstract'
|
4
|
+
require_relative 'same_site_ua_checker/regex_version_chrome'
|
5
|
+
require_relative 'same_site_ua_checker/regex_version_ucbrowser'
|
6
|
+
|
7
|
+
require_relative 'same_site_ua_checker/regex_list_abstract'
|
8
|
+
require_relative 'same_site_ua_checker/regex_list_same_site_none_bug'
|
9
|
+
require_relative 'same_site_ua_checker/regex_list_same_site_not_supported'
|
10
|
+
require_relative 'same_site_ua_checker/regex_list_same_site_strict_bug'
|
11
|
+
|
12
|
+
class SameSiteUaChecker
|
13
|
+
# @param [String] user_agent_string
|
14
|
+
# @return [Boolean] Browser has bug and should NOT receive SameSite=None cookie attribute
|
15
|
+
def self.call(user_agent_string)
|
16
|
+
new.check(user_agent_string)
|
17
|
+
end
|
18
|
+
|
19
|
+
def check(user_agent_string)
|
20
|
+
raise ArgumentError, 'Only string argument is allowed' unless user_agent_string.is_a?(String)
|
21
|
+
|
22
|
+
check_same_site_not_supported(user_agent_string) ||
|
23
|
+
check_same_site_strict_bug(user_agent_string) ||
|
24
|
+
check_same_site_none_bug(user_agent_string)
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def check_same_site_not_supported(user_agent_string)
|
30
|
+
RegexListSameSiteNotSupported.new.check(user_agent_string)
|
31
|
+
end
|
32
|
+
|
33
|
+
def check_same_site_none_bug(user_agent_string)
|
34
|
+
# Additional check for chrome browser version
|
35
|
+
is_chrome_based_browser = RegexListSameSiteNoneBug.new.check(user_agent_string)
|
36
|
+
|
37
|
+
return false unless is_chrome_based_browser
|
38
|
+
|
39
|
+
ucbrowser_version = RegexVersionUcbrowser.new.detect(user_agent_string)
|
40
|
+
return !ucbrowser_version.at_least?(12, 13, 2) if ucbrowser_version.major != 0
|
41
|
+
|
42
|
+
chrome_browser_version = RegexVersionChrome.new.detect(user_agent_string)
|
43
|
+
return chrome_browser_version.major_between_inc?(51, 66) if chrome_browser_version.major != 0
|
44
|
+
|
45
|
+
false
|
46
|
+
end
|
47
|
+
|
48
|
+
def check_same_site_strict_bug(user_agent_string)
|
49
|
+
is_chrome_based_browser = RegexListSameSiteNoneBug.new.check(user_agent_string)
|
50
|
+
return false if is_chrome_based_browser
|
51
|
+
|
52
|
+
RegexListSameSiteStrictBug.new.check(user_agent_string)
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# Generated by generate_regex_classes.rb
|
2
|
+
class SameSiteUaChecker
|
3
|
+
class RegexListSameSiteStrictBug < RegexListAbstract
|
4
|
+
def regex_list
|
5
|
+
[
|
6
|
+
/(iPhone; CPU iPhone OS 1[0-3]|iPad; CPU OS 1[0-3]|iPod touch; CPU iPhone OS 1[0-3]|Macintosh; Intel Mac OS X.*Version\x2F1[0-3].*Safari|Macintosh;.*Mac OS X 10_14.* AppleWebKit.*Version\x2F1[0-3].*Safari)/
|
7
|
+
]
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class SameSiteUaChecker
|
2
|
+
class RegexVersionAbstract
|
3
|
+
def regex_version
|
4
|
+
raise NotImplementedError
|
5
|
+
end
|
6
|
+
|
7
|
+
# @return [Version]
|
8
|
+
def detect(string_to_check)
|
9
|
+
version = Version.new
|
10
|
+
matches = string_to_check.match(regex_version)
|
11
|
+
|
12
|
+
return version unless matches
|
13
|
+
|
14
|
+
groups_count = matches.size - 1
|
15
|
+
|
16
|
+
version.major = matches[1].to_i
|
17
|
+
version.minor = matches[2].to_i if groups_count >= 2
|
18
|
+
version.build = matches[3].to_i if groups_count >= 3
|
19
|
+
|
20
|
+
version
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class SameSiteUaChecker
|
2
|
+
class Version
|
3
|
+
# integers
|
4
|
+
attr_accessor :major, :minor, :build
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@major = 0
|
8
|
+
@minor = 0
|
9
|
+
@build = 0
|
10
|
+
end
|
11
|
+
|
12
|
+
def at_least?(major, minor = nil, build = nil)
|
13
|
+
return false if self.major < major
|
14
|
+
|
15
|
+
return false if !minor.nil? && self.minor < minor
|
16
|
+
|
17
|
+
return false if !build.nil? && self.build < build
|
18
|
+
|
19
|
+
true
|
20
|
+
end
|
21
|
+
|
22
|
+
def major_between_inc?(from, to)
|
23
|
+
major >= from && major <= to
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/readme.md
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# Installation
|
2
|
+
|
3
|
+
```ruby
|
4
|
+
# from RubyGems
|
5
|
+
gem 'same_site_ua_checker', '~> 0.0.2'
|
6
|
+
|
7
|
+
# from Git
|
8
|
+
gem 'same_site_ua_checker',
|
9
|
+
git: 'ssh://git@stash.sapient.ru:7999/com/same_site_ua_checker.git',
|
10
|
+
branch: 'master',
|
11
|
+
glob: 'src/ruby/*.gemspec'
|
12
|
+
```
|
13
|
+
|
14
|
+
# Usage
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
SameSiteUaChecker.call(headers['User-Agent'])
|
18
|
+
# => true, so SameSite=None should NOT be added
|
19
|
+
```
|
20
|
+
|
21
|
+
# Testing
|
22
|
+
|
23
|
+
```bash
|
24
|
+
# gem install bundler -v 1.16.1
|
25
|
+
# bundle install
|
26
|
+
# bundle exec rspec
|
27
|
+
> 132 examples, 0 failures
|
28
|
+
```
|
@@ -0,0 +1,21 @@
|
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'same_site_ua_checker/gem_version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'same_site_ua_checker'
|
7
|
+
spec.version = SameSiteUaChecker::VERSION
|
8
|
+
spec.authors = ['Ivan Reshetnikov']
|
9
|
+
spec.email = []
|
10
|
+
spec.summary = 'Check if User-Agent supports SameSite=None'
|
11
|
+
spec.description = ''
|
12
|
+
spec.homepage = ''
|
13
|
+
spec.license = 'private'
|
14
|
+
|
15
|
+
spec.files = Dir['**/*']
|
16
|
+
spec.executables = []
|
17
|
+
spec.test_files = spec.files.grep(%r{^spec/})
|
18
|
+
spec.require_paths = ['lib']
|
19
|
+
|
20
|
+
spec.add_development_dependency 'rspec', '~> 3.7.0', '>= 3.7.0'
|
21
|
+
end
|
@@ -0,0 +1,670 @@
|
|
1
|
+
# Generated by generate_tests.rb
|
2
|
+
require_relative '../lib/same_site_ua_checker'
|
3
|
+
|
4
|
+
describe SameSiteUaChecker do
|
5
|
+
subject { SameSiteUaChecker.call(ua_string) }
|
6
|
+
|
7
|
+
# Set name: check-same-site-none-bug
|
8
|
+
context 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.19 Safari/537.36' do
|
9
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.19 Safari/537.36' }
|
10
|
+
it { should eq true }
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.4670.1154 Mobile Safari/537.36' do
|
14
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.4670.1154 Mobile Safari/537.36' }
|
15
|
+
it { should eq true }
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2710.19 Safari/537.36' do
|
19
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2710.19 Safari/537.36' }
|
20
|
+
it { should eq true }
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2725.20 Safari/537.36' do
|
24
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2725.20 Safari/537.36' }
|
25
|
+
it { should eq true }
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3032.32 Safari/537.36' do
|
29
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3032.32 Safari/537.36' }
|
30
|
+
it { should eq true }
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3065.70 Safari/537.36' do
|
34
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3065.70 Safari/537.36' }
|
35
|
+
it { should eq true }
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'Mozilla/5.0 (Linux; Android 6.0; X-StyleTab_A102 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Safari/537.36' do
|
39
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; Android 6.0; X-StyleTab_A102 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Safari/537.36' }
|
40
|
+
it { should eq true }
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'Mozilla/5.0 (Linux; Android 7.1.2; Redmi 5A Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 YaApp_Android/9.75 YaSearchBrowser/9.75' do
|
44
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; Android 7.1.2; Redmi 5A Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 YaApp_Android/9.75 YaSearchBrowser/9.75' }
|
45
|
+
it { should eq true }
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3089.32 Safari/537.36' do
|
49
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3089.32 Safari/537.36' }
|
50
|
+
it { should eq true }
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'Mozilla/5.0 (Linux; Android 7.1.1; MI MAX 2 Build/NMF26F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36 YaApp_Android/9.35 YaSearchBrowser/9.35' do
|
54
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; Android 7.1.1; MI MAX 2 Build/NMF26F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36 YaApp_Android/9.35 YaSearchBrowser/9.35' }
|
55
|
+
it { should eq true }
|
56
|
+
end
|
57
|
+
|
58
|
+
context 'Mozilla/5.0 (Linux; Android 8.1.0; SM-J260M Build/M1AJB) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.126 Mobile Safari/537.36' do
|
59
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; Android 8.1.0; SM-J260M Build/M1AJB) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.126 Mobile Safari/537.36' }
|
60
|
+
it { should eq true }
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'Mozilla/5.0 (Linux; Android 9; PAR-AL00 Build/HUAWEIPAR-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.155 Mobile Safari/537.36 Zeus' do
|
64
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; Android 9; PAR-AL00 Build/HUAWEIPAR-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.155 Mobile Safari/537.36 Zeus' }
|
65
|
+
it { should eq true }
|
66
|
+
end
|
67
|
+
|
68
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36' do
|
69
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36' }
|
70
|
+
it { should eq true }
|
71
|
+
end
|
72
|
+
|
73
|
+
context 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3521.47 Safari/537.36' do
|
74
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3521.47 Safari/537.36' }
|
75
|
+
it { should eq true }
|
76
|
+
end
|
77
|
+
|
78
|
+
context 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3329.0 Safari/537.36' do
|
79
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3329.0 Safari/537.36' }
|
80
|
+
it { should eq true }
|
81
|
+
end
|
82
|
+
|
83
|
+
context 'Mozilla/5.0 (Linux; Android 6.0.1; ASUS_X00DDB Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.89 Mobile Safari/537.36' do
|
84
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; Android 6.0.1; ASUS_X00DDB Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.89 Mobile Safari/537.36' }
|
85
|
+
it { should eq false }
|
86
|
+
end
|
87
|
+
|
88
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2695.54 Safari/537.36' do
|
89
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2695.54 Safari/537.36' }
|
90
|
+
it { should eq false }
|
91
|
+
end
|
92
|
+
|
93
|
+
context 'Mozilla/5.0 (Linux; Android 6.0; M10A Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36' do
|
94
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; Android 6.0; M10A Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36' }
|
95
|
+
it { should eq false }
|
96
|
+
end
|
97
|
+
|
98
|
+
context 'Mozilla/5.0 (Linux; Android 9; SM-J600FN Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3371.0 Mobile Safari/537.36' do
|
99
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; Android 9; SM-J600FN Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3371.0 Mobile Safari/537.36' }
|
100
|
+
it { should eq false }
|
101
|
+
end
|
102
|
+
|
103
|
+
context 'Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3074.87 Safari/537.36' do
|
104
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3074.87 Safari/537.36' }
|
105
|
+
it { should eq false }
|
106
|
+
end
|
107
|
+
|
108
|
+
context 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3388.0 Safari/537.36' do
|
109
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3388.0 Safari/537.36' }
|
110
|
+
it { should eq false }
|
111
|
+
end
|
112
|
+
|
113
|
+
context 'Mozilla/5.0 (Linux; Android 8.1.0; CPH1825) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36' do
|
114
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; Android 8.1.0; CPH1825) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36' }
|
115
|
+
it { should eq false }
|
116
|
+
end
|
117
|
+
|
118
|
+
context 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36 Roku/DVP-8.10 (468.10E04145A)' do
|
119
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36 Roku/DVP-8.10 (468.10E04145A)' }
|
120
|
+
it { should eq false }
|
121
|
+
end
|
122
|
+
|
123
|
+
context 'Mozilla/5.0 (Linux; Android 10; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4112.0 Mobile Safari/537.36' do
|
124
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; Android 10; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4112.0 Mobile Safari/537.36' }
|
125
|
+
it { should eq false }
|
126
|
+
end
|
127
|
+
|
128
|
+
context 'Mozilla/5.0 (X11; CrOS x86_64 13041.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4114.0 Safari/537.36' do
|
129
|
+
let(:ua_string) { 'Mozilla/5.0 (X11; CrOS x86_64 13041.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4114.0 Safari/537.36' }
|
130
|
+
it { should eq false }
|
131
|
+
end
|
132
|
+
|
133
|
+
context 'Mozilla/5.0 (Windows NT 6.1; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4115.5 Safari/537.36' do
|
134
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.1; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4115.5 Safari/537.36' }
|
135
|
+
it { should eq false }
|
136
|
+
end
|
137
|
+
|
138
|
+
context 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4116.5 Safari/537.36' do
|
139
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4116.5 Safari/537.36' }
|
140
|
+
it { should eq false }
|
141
|
+
end
|
142
|
+
|
143
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4112.0 Safari/537.36' do
|
144
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4112.0 Safari/537.36' }
|
145
|
+
it { should eq false }
|
146
|
+
end
|
147
|
+
|
148
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4115.1 Safari/537.36' do
|
149
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4115.1 Safari/537.36' }
|
150
|
+
it { should eq false }
|
151
|
+
end
|
152
|
+
|
153
|
+
context 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/50.0.2661.102 Chrome/50.0.2661.102 Safari/537.36' do
|
154
|
+
let(:ua_string) { 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/50.0.2661.102 Chrome/50.0.2661.102 Safari/537.36' }
|
155
|
+
it { should eq false }
|
156
|
+
end
|
157
|
+
|
158
|
+
context 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/55.0.2883.87 Chrome/55.0.2883.87 Safari/537.36' do
|
159
|
+
let(:ua_string) { 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/55.0.2883.87 Chrome/55.0.2883.87 Safari/537.36' }
|
160
|
+
it { should eq true }
|
161
|
+
end
|
162
|
+
|
163
|
+
context 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) blackPanther OS Chromium/63.0.3239.108 Chrome/63.0.3239.108 Safari/537.36' do
|
164
|
+
let(:ua_string) { 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) blackPanther OS Chromium/63.0.3239.108 Chrome/63.0.3239.108 Safari/537.36' }
|
165
|
+
it { should eq true }
|
166
|
+
end
|
167
|
+
|
168
|
+
context 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/63.0.3239.84 Chrome/63.0.3239.84 Safari/537.36' do
|
169
|
+
let(:ua_string) { 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/63.0.3239.84 Chrome/63.0.3239.84 Safari/537.36' }
|
170
|
+
it { should eq true }
|
171
|
+
end
|
172
|
+
|
173
|
+
context 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.181 HeadlessChrome/66.0.3359.181 Safari/537.36' do
|
174
|
+
let(:ua_string) { 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.181 HeadlessChrome/66.0.3359.181 Safari/537.36' }
|
175
|
+
it { should eq true }
|
176
|
+
end
|
177
|
+
|
178
|
+
context 'Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.139 Chrome/66.0.3359.139 Safari/537.36' do
|
179
|
+
let(:ua_string) { 'Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.139 Chrome/66.0.3359.139 Safari/537.36' }
|
180
|
+
it { should eq true }
|
181
|
+
end
|
182
|
+
|
183
|
+
context 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/67.0.3396.99 Chrome/67.0.3396.99 Safari/537.36' do
|
184
|
+
let(:ua_string) { 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/67.0.3396.99 Chrome/67.0.3396.99 Safari/537.36' }
|
185
|
+
it { should eq false }
|
186
|
+
end
|
187
|
+
|
188
|
+
context 'Mozilla/5.0 (X11; Linux x86_64; SMARTEMB Build/3.2.2010) AppleWebKit/537.36 (KHTML, like Gecko) Chromium/70.0.3538.64 Chrome/70.0.3538.64 Safari/537.36' do
|
189
|
+
let(:ua_string) { 'Mozilla/5.0 (X11; Linux x86_64; SMARTEMB Build/3.2.2010) AppleWebKit/537.36 (KHTML, like Gecko) Chromium/70.0.3538.64 Chrome/70.0.3538.64 Safari/537.36' }
|
190
|
+
it { should eq false }
|
191
|
+
end
|
192
|
+
|
193
|
+
context 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/82.0.4085.12 Chrome/82.0.4085.12 Safari/537.36' do
|
194
|
+
let(:ua_string) { 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/82.0.4085.12 Chrome/82.0.4085.12 Safari/537.36' }
|
195
|
+
it { should eq false }
|
196
|
+
end
|
197
|
+
|
198
|
+
context 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 YaBrowser/16.3.0.7146 Yowser/2.5 Safari/537.36' do
|
199
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 YaBrowser/16.3.0.7146 Yowser/2.5 Safari/537.36' }
|
200
|
+
it { should eq false }
|
201
|
+
end
|
202
|
+
|
203
|
+
context 'Mozilla/5.0 (Linux; Android 6.0; GEM-702L Build/HUAWEIGEM-702L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 YaBrowser/16.9.1.1616.00 Mobile Safari/537.36' do
|
204
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; Android 6.0; GEM-702L Build/HUAWEIGEM-702L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 YaBrowser/16.9.1.1616.00 Mobile Safari/537.36' }
|
205
|
+
it { should eq true }
|
206
|
+
end
|
207
|
+
|
208
|
+
context 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 YaBrowser/16.9.1.1131 Yowser/2.5 Safari/CD81CA' do
|
209
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 YaBrowser/16.9.1.1131 Yowser/2.5 Safari/CD81CA' }
|
210
|
+
it { should eq true }
|
211
|
+
end
|
212
|
+
|
213
|
+
context 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 YaBrowser/17.9.0.2081 Yowser/2.5 Safari/537.36' do
|
214
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 YaBrowser/17.9.0.2081 Yowser/2.5 Safari/537.36' }
|
215
|
+
it { should eq true }
|
216
|
+
end
|
217
|
+
|
218
|
+
context 'Mozilla/5.0 (Linux; arm_64; Android 8.0.0; SM-A730F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 YaBrowser/19.12.1.121.00 Mobile Safari/537.36' do
|
219
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; arm_64; Android 8.0.0; SM-A730F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 YaBrowser/19.12.1.121.00 Mobile Safari/537.36' }
|
220
|
+
it { should eq false }
|
221
|
+
end
|
222
|
+
|
223
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.99 YaBrowser/19.1.1.573 (beta) Yowser/2.5 Safari/537.36' do
|
224
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.99 YaBrowser/19.1.1.573 (beta) Yowser/2.5 Safari/537.36' }
|
225
|
+
it { should eq false }
|
226
|
+
end
|
227
|
+
|
228
|
+
context 'Mozilla/5.0 (Linux; arm_64; Android 9; HTC U12+) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 YaBrowser/19.12.3.101.00 Mobile Safari/537.36' do
|
229
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; arm_64; Android 9; HTC U12+) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 YaBrowser/19.12.3.101.00 Mobile Safari/537.36' }
|
230
|
+
it { should eq false }
|
231
|
+
end
|
232
|
+
|
233
|
+
context 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 YaBrowser/19.9.2.167 Yowser/2.5 Safari/537.36' do
|
234
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 YaBrowser/19.9.2.167 Yowser/2.5 Safari/537.36' }
|
235
|
+
it { should eq false }
|
236
|
+
end
|
237
|
+
|
238
|
+
context 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 YaBrowser/19.4.0.2397 Yowser/2.5 Safari/D9B371' do
|
239
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 YaBrowser/19.4.0.2397 Yowser/2.5 Safari/D9B371' }
|
240
|
+
it { should eq false }
|
241
|
+
end
|
242
|
+
|
243
|
+
context 'Mozilla/5.0 (Linux; arm_64; Android 7.0; Lenovo TB-7504X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 YaBrowser/19.9.6.88.00 Mobile Safari/537.36' do
|
244
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; arm_64; Android 7.0; Lenovo TB-7504X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 YaBrowser/19.9.6.88.00 Mobile Safari/537.36' }
|
245
|
+
it { should eq false }
|
246
|
+
end
|
247
|
+
|
248
|
+
context 'Mozilla/5.0 (Linux; arm_64; Android 10; SM-A805F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 YaBrowser/19.9.6.88.00 Mobile Safari/537.36' do
|
249
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; arm_64; Android 10; SM-A805F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 YaBrowser/19.9.6.88.00 Mobile Safari/537.36' }
|
250
|
+
it { should eq false }
|
251
|
+
end
|
252
|
+
|
253
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2220 Yowser/2.5 Yptp/1.21 Safari/537.36' do
|
254
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2220 Yowser/2.5 Yptp/1.21 Safari/537.36' }
|
255
|
+
it { should eq false }
|
256
|
+
end
|
257
|
+
|
258
|
+
context 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.195 Amigo/50.0.2661.195 MRCHROME SOC Safari/537.36' do
|
259
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.195 Amigo/50.0.2661.195 MRCHROME SOC Safari/537.36' }
|
260
|
+
it { should eq false }
|
261
|
+
end
|
262
|
+
|
263
|
+
context 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.191 Amigo/54.0.2840.191 MRCHROME SOC Safari/537.36' do
|
264
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.191 Amigo/54.0.2840.191 MRCHROME SOC Safari/537.36' }
|
265
|
+
it { should eq true }
|
266
|
+
end
|
267
|
+
|
268
|
+
context 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.197 Amigo/56.0.2924.197 MRCHROME SOC Safari/537.36' do
|
269
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.197 Amigo/56.0.2924.197 MRCHROME SOC Safari/537.36' }
|
270
|
+
it { should eq true }
|
271
|
+
end
|
272
|
+
|
273
|
+
context 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.125 Amigo/61.0.3163.125 MRCHROME SOC Safari/537.36' do
|
274
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.125 Amigo/61.0.3163.125 MRCHROME SOC Safari/537.36' }
|
275
|
+
it { should eq true }
|
276
|
+
end
|
277
|
+
|
278
|
+
context 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3029.110 Amigo/68.0.3029.110 MRCHROME SOC Safari/647.36' do
|
279
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3029.110 Amigo/68.0.3029.110 MRCHROME SOC Safari/647.36' }
|
280
|
+
it { should eq false }
|
281
|
+
end
|
282
|
+
|
283
|
+
context 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 SputnikBrowser/2.2.1162.0 Safari/537.36' do
|
284
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 SputnikBrowser/2.2.1162.0 Safari/537.36' }
|
285
|
+
it { should eq false }
|
286
|
+
end
|
287
|
+
|
288
|
+
context 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 SputnikBrowser/3.2.1694.0 (GOST) Safari/537.36' do
|
289
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 SputnikBrowser/3.2.1694.0 (GOST) Safari/537.36' }
|
290
|
+
it { should eq true }
|
291
|
+
end
|
292
|
+
|
293
|
+
context 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 SputnikBrowser/4.1.2801.0 Safari/537.36' do
|
294
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 SputnikBrowser/4.1.2801.0 Safari/537.36' }
|
295
|
+
it { should eq true }
|
296
|
+
end
|
297
|
+
|
298
|
+
context 'Mozilla/5.0 (Linux; U; Android 8.0.0; zh-CN; STF-AL00 Build/HUAWEISTF-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/11.9.7.977 Mobile Safari/537.36NULL' do
|
299
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; U; Android 8.0.0; zh-CN; STF-AL00 Build/HUAWEISTF-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/11.9.7.977 Mobile Safari/537.36NULL' }
|
300
|
+
it { should eq true }
|
301
|
+
end
|
302
|
+
|
303
|
+
context 'Mozilla/5.0 (Linux; U; Android 5.0.2; zh-CN; Redmi Note 2 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.9.0.1070 Mobile Safari/537.36' do
|
304
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; U; Android 5.0.2; zh-CN; Redmi Note 2 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.9.0.1070 Mobile Safari/537.36' }
|
305
|
+
it { should eq true }
|
306
|
+
end
|
307
|
+
|
308
|
+
context 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-US; FX100,8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.11.3.1204 Mobile Safari/537.36' do
|
309
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-US; FX100,8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.11.3.1204 Mobile Safari/537.36' }
|
310
|
+
it { should eq true }
|
311
|
+
end
|
312
|
+
|
313
|
+
context 'Mozilla/5.0 (Linux; U; Android 8.1.0; en-US; SM-G615FU Build/M1AJQ) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.13.0.1207 Mobile Safari/537.36' do
|
314
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; U; Android 8.1.0; en-US; SM-G615FU Build/M1AJQ) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.13.0.1207 Mobile Safari/537.36' }
|
315
|
+
it { should eq true }
|
316
|
+
end
|
317
|
+
|
318
|
+
context 'Mozilla/5.0 (Linux; U; Android 10; en-US; SM-A515F Build/QP1A.190711.020) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.13.2.1208 Mobile Safari/537.36' do
|
319
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; U; Android 10; en-US; SM-A515F Build/QP1A.190711.020) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.13.2.1208 Mobile Safari/537.36' }
|
320
|
+
it { should eq false }
|
321
|
+
end
|
322
|
+
|
323
|
+
context 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-US; GT-I9500 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.13.5.1209 Mobile Safari/537.36' do
|
324
|
+
let(:ua_string) { 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-US; GT-I9500 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.13.5.1209 Mobile Safari/537.36' }
|
325
|
+
it { should eq false }
|
326
|
+
end
|
327
|
+
|
328
|
+
# Set name: check-same-site-strict-bug
|
329
|
+
context 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_1_2 like Mac OS X) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0 Mobile/15B202 Safari/604.3' do
|
330
|
+
let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_1_2 like Mac OS X) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0 Mobile/15B202 Safari/604.3' }
|
331
|
+
it { should eq true }
|
332
|
+
end
|
333
|
+
|
334
|
+
context 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Hotjar Version/11.0 Mobile/15E148 Safari/604.1' do
|
335
|
+
let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Hotjar Version/11.0 Mobile/15E148 Safari/604.1' }
|
336
|
+
it { should eq true }
|
337
|
+
end
|
338
|
+
|
339
|
+
context 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X; Tesseract/1.0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1' do
|
340
|
+
let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X; Tesseract/1.0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1' }
|
341
|
+
it { should eq true }
|
342
|
+
end
|
343
|
+
|
344
|
+
context 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 YaBrowser/20.3.1.252.10 Mobile/15E148 Safari/604.1' do
|
345
|
+
let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 YaBrowser/20.3.1.252.10 Mobile/15E148 Safari/604.1' }
|
346
|
+
it { should eq true }
|
347
|
+
end
|
348
|
+
|
349
|
+
context 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/605.1.15' do
|
350
|
+
let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/605.1.15' }
|
351
|
+
it { should eq true }
|
352
|
+
end
|
353
|
+
|
354
|
+
context 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 YaBrowser/20.2.3.326.10 Mobile/15E148 Safari/604.1' do
|
355
|
+
let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 YaBrowser/20.2.3.326.10 Mobile/15E148 Safari/604.1' }
|
356
|
+
it { should eq true }
|
357
|
+
end
|
358
|
+
|
359
|
+
context 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Mobile/15E148 Safari/945AE' do
|
360
|
+
let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Mobile/15E148 Safari/945AE' }
|
361
|
+
it { should eq true }
|
362
|
+
end
|
363
|
+
|
364
|
+
context 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/605.1.15/Smooz/1.100.0.2839' do
|
365
|
+
let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/605.1.15/Smooz/1.100.0.2839' }
|
366
|
+
it { should eq true }
|
367
|
+
end
|
368
|
+
|
369
|
+
context 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/604.1' do
|
370
|
+
let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/604.1' }
|
371
|
+
it { should eq true }
|
372
|
+
end
|
373
|
+
|
374
|
+
context 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A362 Safari/604.1' do
|
375
|
+
let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A362 Safari/604.1' }
|
376
|
+
it { should eq true }
|
377
|
+
end
|
378
|
+
|
379
|
+
context 'Mozilla/5.0 (iPad; CPU OS 11_2 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) Version/11.0 Mobile/15C107 Safari/604.1' do
|
380
|
+
let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 11_2 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) Version/11.0 Mobile/15C107 Safari/604.1' }
|
381
|
+
it { should eq true }
|
382
|
+
end
|
383
|
+
|
384
|
+
context 'Mozilla/5.0 (iPad; CPU OS 11_2_5 like Mac OS X) AppleWebKit/604.5.6 (KHTML, like Gecko) Version/11.0 EdgiOS/44.13.6 Mobile/15D60 Safari/604.5.6' do
|
385
|
+
let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 11_2_5 like Mac OS X) AppleWebKit/604.5.6 (KHTML, like Gecko) Version/11.0 EdgiOS/44.13.6 Mobile/15D60 Safari/604.5.6' }
|
386
|
+
it { should eq true }
|
387
|
+
end
|
388
|
+
|
389
|
+
context 'Mozilla/5.0 (iPad; CPU OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 EdgiOS/42.3.6 Mobile/15G77 Safari/605.1.15' do
|
390
|
+
let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 EdgiOS/42.3.6 Mobile/15G77 Safari/605.1.15' }
|
391
|
+
it { should eq true }
|
392
|
+
end
|
393
|
+
|
394
|
+
context 'Mozilla/5.0 (iPad; CPU OS 12_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 YaBrowser/20.3.2.277.11 Mobile/15E148 Safari/604.1' do
|
395
|
+
let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 12_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 YaBrowser/20.3.2.277.11 Mobile/15E148 Safari/604.1' }
|
396
|
+
it { should eq true }
|
397
|
+
end
|
398
|
+
|
399
|
+
context 'Mozilla/5.0 (iPad; CPU OS 12_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/605.1.15' do
|
400
|
+
let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 12_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/605.1.15' }
|
401
|
+
it { should eq true }
|
402
|
+
end
|
403
|
+
|
404
|
+
context 'Mozilla/5.0 (iPad; CPU OS 12_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 EdgiOS/44.13.7 Mobile/15E148 Safari/605.1.15' do
|
405
|
+
let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 12_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 EdgiOS/44.13.7 Mobile/15E148 Safari/605.1.15' }
|
406
|
+
it { should eq true }
|
407
|
+
end
|
408
|
+
|
409
|
+
context 'Mozilla/5.0 (iPad; CPU OS 13_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 YaBrowser/20.3.2.277.11 Mobile/15E148 Safari/604.1' do
|
410
|
+
let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 13_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 YaBrowser/20.3.2.277.11 Mobile/15E148 Safari/604.1' }
|
411
|
+
it { should eq true }
|
412
|
+
end
|
413
|
+
|
414
|
+
context 'Mozilla/5.0 (iPad; CPU OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/605.1.15' do
|
415
|
+
let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/605.1.15' }
|
416
|
+
it { should eq true }
|
417
|
+
end
|
418
|
+
|
419
|
+
context 'Mozilla/5.0 (iPad; CPU OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/605.1 NAVER(inapp; search; 700; 10.20.0)' do
|
420
|
+
let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/605.1 NAVER(inapp; search; 700; 10.20.0)' }
|
421
|
+
it { should eq true }
|
422
|
+
end
|
423
|
+
|
424
|
+
context 'Mozilla/5.0 (iPad; CPU OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 EdgiOS/45.2.16 Mobile/15E148 Safari/605.1.15' do
|
425
|
+
let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 EdgiOS/45.2.16 Mobile/15E148 Safari/605.1.15' }
|
426
|
+
it { should eq true }
|
427
|
+
end
|
428
|
+
|
429
|
+
context 'Mozilla/5.0 (iPad; CPU OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 EdgiOS/45.2.16 Mobile/15E148 Safari/605.1.15' do
|
430
|
+
let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 EdgiOS/45.2.16 Mobile/15E148 Safari/605.1.15' }
|
431
|
+
it { should eq true }
|
432
|
+
end
|
433
|
+
|
434
|
+
context 'Mozilla/5.0 (iPod touch; CPU iPhone OS 11_0_1 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A402 Safari/604.1' do
|
435
|
+
let(:ua_string) { 'Mozilla/5.0 (iPod touch; CPU iPhone OS 11_0_1 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A402 Safari/604.1' }
|
436
|
+
it { should eq true }
|
437
|
+
end
|
438
|
+
|
439
|
+
context 'Mozilla/5.0 (iPod touch; CPU iPhone OS 11_0_2 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A421 Safari/604.1' do
|
440
|
+
let(:ua_string) { 'Mozilla/5.0 (iPod touch; CPU iPhone OS 11_0_2 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A421 Safari/604.1' }
|
441
|
+
it { should eq true }
|
442
|
+
end
|
443
|
+
|
444
|
+
context 'Mozilla/5.0 (iPod touch; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1' do
|
445
|
+
let(:ua_string) { 'Mozilla/5.0 (iPod touch; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1' }
|
446
|
+
it { should eq true }
|
447
|
+
end
|
448
|
+
|
449
|
+
context 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko)' do
|
450
|
+
let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko)' }
|
451
|
+
it { should eq true }
|
452
|
+
end
|
453
|
+
|
454
|
+
context 'Mozilla/5.0 (iPod touch; CPU iPhone OS 12_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0' do
|
455
|
+
let(:ua_string) { 'Mozilla/5.0 (iPod touch; CPU iPhone OS 12_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0' }
|
456
|
+
it { should eq true }
|
457
|
+
end
|
458
|
+
|
459
|
+
context 'Mozilla/5.0 (iPod touch; CPU iPhone OS 13_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.1 Mobile/15E148 Safari/604.1' do
|
460
|
+
let(:ua_string) { 'Mozilla/5.0 (iPod touch; CPU iPhone OS 13_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.1 Mobile/15E148 Safari/604.1' }
|
461
|
+
it { should eq true }
|
462
|
+
end
|
463
|
+
|
464
|
+
context 'Mozilla/5.0 (iPod touch; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/605.1.15' do
|
465
|
+
let(:ua_string) { 'Mozilla/5.0 (iPod touch; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/605.1.15' }
|
466
|
+
it { should eq true }
|
467
|
+
end
|
468
|
+
|
469
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/11.0.3 Safari/603.3.8' do
|
470
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/11.0.3 Safari/603.3.8' }
|
471
|
+
it { should eq true }
|
472
|
+
end
|
473
|
+
|
474
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1; en-US) AppleWebKit/536.26.21 (KHTML, like Gecko) Version/11.0.2 Safari/536.26.21' do
|
475
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1; en-US) AppleWebKit/536.26.21 (KHTML, like Gecko) Version/11.0.2 Safari/536.26.21' }
|
476
|
+
it { should eq true }
|
477
|
+
end
|
478
|
+
|
479
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1; en-IE) AppleWebKit/601.5.4 (KHTML, like Gecko) Version/12.0.4 Safari/601.5.4' do
|
480
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1; en-IE) AppleWebKit/601.5.4 (KHTML, like Gecko) Version/12.0.4 Safari/601.5.4' }
|
481
|
+
it { should eq true }
|
482
|
+
end
|
483
|
+
|
484
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/11.0.1 Safari/601.3.9' do
|
485
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/11.0.1 Safari/601.3.9' }
|
486
|
+
it { should eq true }
|
487
|
+
end
|
488
|
+
|
489
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Safari/604.1.38' do
|
490
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Safari/604.1.38' }
|
491
|
+
it { should eq true }
|
492
|
+
end
|
493
|
+
|
494
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/13.0 Safari/604.1' do
|
495
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/13.0 Safari/604.1' }
|
496
|
+
it { should eq true }
|
497
|
+
end
|
498
|
+
|
499
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/604.4.3 (KHTML, like Gecko) Version/11.0.2 Safari/604.4.3' do
|
500
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/604.4.3 (KHTML, like Gecko) Version/11.0.2 Safari/604.4.3' }
|
501
|
+
it { should eq true }
|
502
|
+
end
|
503
|
+
|
504
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/17D50 Safari/604.1' do
|
505
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/17D50 Safari/604.1' }
|
506
|
+
it { should eq true }
|
507
|
+
end
|
508
|
+
|
509
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15/Smooz/1.96.6.2725' do
|
510
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15/Smooz/1.96.6.2725' }
|
511
|
+
it { should eq true }
|
512
|
+
end
|
513
|
+
|
514
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.4 Safari/605.1.15' do
|
515
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.4 Safari/605.1.15' }
|
516
|
+
it { should eq true }
|
517
|
+
end
|
518
|
+
|
519
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/627.9.17 (KHTML, like Gecko) Version/13.0.4 Safari/627.9.17' do
|
520
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/627.9.17 (KHTML, like Gecko) Version/13.0.4 Safari/627.9.17' }
|
521
|
+
it { should eq true }
|
522
|
+
end
|
523
|
+
|
524
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15 DuckDuckGo/7' do
|
525
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15 DuckDuckGo/7' }
|
526
|
+
it { should eq true }
|
527
|
+
end
|
528
|
+
|
529
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1; en-US) AppleWebKit/604.4.6 (KHTML, like Gecko) Version/12.0.1 Safari/604.4.6' do
|
530
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1; en-US) AppleWebKit/604.4.6 (KHTML, like Gecko) Version/12.0.1 Safari/604.4.6' }
|
531
|
+
it { should eq true }
|
532
|
+
end
|
533
|
+
|
534
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15,gzip(gfe)' do
|
535
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15,gzip(gfe)' }
|
536
|
+
it { should eq true }
|
537
|
+
end
|
538
|
+
|
539
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.05 Safari/605.1.15' do
|
540
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.05 Safari/605.1.15' }
|
541
|
+
it { should eq true }
|
542
|
+
end
|
543
|
+
|
544
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Chrome/81.0.4044.62 Vivaldi/2.6.1566.49 Safari/605.1.15' do
|
545
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Chrome/81.0.4044.62 Vivaldi/2.6.1566.49 Safari/605.1.15' }
|
546
|
+
it { should eq false }
|
547
|
+
end
|
548
|
+
|
549
|
+
context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Version/13.0 Safari/605.1.15 Chrome/75.0.3770.145 Vivaldi/2.6.1566.49' do
|
550
|
+
let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Version/13.0 Safari/605.1.15 Chrome/75.0.3770.145 Vivaldi/2.6.1566.49' }
|
551
|
+
it { should eq false }
|
552
|
+
end
|
553
|
+
|
554
|
+
# Set name: check-same-site-not-supported
|
555
|
+
context 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)' do
|
556
|
+
let(:ua_string) { 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)' }
|
557
|
+
it { should eq true }
|
558
|
+
end
|
559
|
+
|
560
|
+
context 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)' do
|
561
|
+
let(:ua_string) { 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)' }
|
562
|
+
it { should eq true }
|
563
|
+
end
|
564
|
+
|
565
|
+
context 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)' do
|
566
|
+
let(:ua_string) { 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)' }
|
567
|
+
it { should eq true }
|
568
|
+
end
|
569
|
+
|
570
|
+
context 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)' do
|
571
|
+
let(:ua_string) { 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)' }
|
572
|
+
it { should eq true }
|
573
|
+
end
|
574
|
+
|
575
|
+
context 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)' do
|
576
|
+
let(:ua_string) { 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)' }
|
577
|
+
it { should eq true }
|
578
|
+
end
|
579
|
+
|
580
|
+
context 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)' do
|
581
|
+
let(:ua_string) { 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)' }
|
582
|
+
it { should eq true }
|
583
|
+
end
|
584
|
+
|
585
|
+
context 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; KTXN)' do
|
586
|
+
let(:ua_string) { 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; KTXN)' }
|
587
|
+
it { should eq true }
|
588
|
+
end
|
589
|
+
|
590
|
+
context 'Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 125LA; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)' do
|
591
|
+
let(:ua_string) { 'Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 125LA; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)' }
|
592
|
+
it { should eq true }
|
593
|
+
end
|
594
|
+
|
595
|
+
context 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2)' do
|
596
|
+
let(:ua_string) { 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2)' }
|
597
|
+
it { should eq true }
|
598
|
+
end
|
599
|
+
|
600
|
+
context 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)' do
|
601
|
+
let(:ua_string) { 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)' }
|
602
|
+
it { should eq true }
|
603
|
+
end
|
604
|
+
|
605
|
+
context 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)' do
|
606
|
+
let(:ua_string) { 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)' }
|
607
|
+
it { should eq true }
|
608
|
+
end
|
609
|
+
|
610
|
+
context 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; Trident/7.0; rv:11.0) like Gecko' do
|
611
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; Trident/7.0; rv:11.0) like Gecko' }
|
612
|
+
it { should eq true }
|
613
|
+
end
|
614
|
+
|
615
|
+
context 'Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko' do
|
616
|
+
let(:ua_string) { 'Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko' }
|
617
|
+
it { should eq true }
|
618
|
+
end
|
619
|
+
|
620
|
+
context 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko' do
|
621
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko' }
|
622
|
+
it { should eq true }
|
623
|
+
end
|
624
|
+
|
625
|
+
context 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko' do
|
626
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko' }
|
627
|
+
it { should eq true }
|
628
|
+
end
|
629
|
+
|
630
|
+
context 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko' do
|
631
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko' }
|
632
|
+
it { should eq true }
|
633
|
+
end
|
634
|
+
|
635
|
+
context 'Mozilla/5.0 CK={} (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko' do
|
636
|
+
let(:ua_string) { 'Mozilla/5.0 CK={} (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko' }
|
637
|
+
it { should eq true }
|
638
|
+
end
|
639
|
+
|
640
|
+
# Set name: check
|
641
|
+
context 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:58.0) Gecko/20100101 Firefox/60.0' do
|
642
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:58.0) Gecko/20100101 Firefox/60.0' }
|
643
|
+
it { should eq false }
|
644
|
+
end
|
645
|
+
|
646
|
+
context 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0' do
|
647
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0' }
|
648
|
+
it { should eq false }
|
649
|
+
end
|
650
|
+
|
651
|
+
context 'Mozilla/5.0 (X11; Linux x86_64; rv:60.9) Gecko/20100101 Goanna/4.4 Firefox/60.9 PaleMoon/28.7.2' do
|
652
|
+
let(:ua_string) { 'Mozilla/5.0 (X11; Linux x86_64; rv:60.9) Gecko/20100101 Goanna/4.4 Firefox/60.9 PaleMoon/28.7.2' }
|
653
|
+
it { should eq false }
|
654
|
+
end
|
655
|
+
|
656
|
+
context 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:60.9) Gecko/20100101 Goanna/4.4 Firefox/60.9 PaleMoon/28.7.1' do
|
657
|
+
let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:60.9) Gecko/20100101 Goanna/4.4 Firefox/60.9 PaleMoon/28.7.1' }
|
658
|
+
it { should eq false }
|
659
|
+
end
|
660
|
+
|
661
|
+
context 'Opera/9.80 (Windows NT 5.1; MRA 8.0 (build 5880)) Presto/2.12.388 Version/12.18' do
|
662
|
+
let(:ua_string) { 'Opera/9.80 (Windows NT 5.1; MRA 8.0 (build 5880)) Presto/2.12.388 Version/12.18' }
|
663
|
+
it { should eq false }
|
664
|
+
end
|
665
|
+
|
666
|
+
context 'Opera/9.80 (Windows NT 6.1; U; MRA 5.9 (build 4953); en) Presto/2.10.229 Version/11.61' do
|
667
|
+
let(:ua_string) { 'Opera/9.80 (Windows NT 6.1; U; MRA 5.9 (build 4953); en) Presto/2.10.229 Version/11.61' }
|
668
|
+
it { should eq false }
|
669
|
+
end
|
670
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: same_site_ua_checker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Reshetnikov
|
@@ -35,7 +35,24 @@ email: []
|
|
35
35
|
executables: []
|
36
36
|
extensions: []
|
37
37
|
extra_rdoc_files: []
|
38
|
-
files:
|
38
|
+
files:
|
39
|
+
- Gemfile
|
40
|
+
- Gemfile.lock
|
41
|
+
- _cli/generate_regex_classes.rb
|
42
|
+
- _cli/generate_tests.rb
|
43
|
+
- lib/same_site_ua_checker.rb
|
44
|
+
- lib/same_site_ua_checker/gem_version.rb
|
45
|
+
- lib/same_site_ua_checker/regex_list_abstract.rb
|
46
|
+
- lib/same_site_ua_checker/regex_list_same_site_none_bug.rb
|
47
|
+
- lib/same_site_ua_checker/regex_list_same_site_not_supported.rb
|
48
|
+
- lib/same_site_ua_checker/regex_list_same_site_strict_bug.rb
|
49
|
+
- lib/same_site_ua_checker/regex_version_abstract.rb
|
50
|
+
- lib/same_site_ua_checker/regex_version_chrome.rb
|
51
|
+
- lib/same_site_ua_checker/regex_version_ucbrowser.rb
|
52
|
+
- lib/same_site_ua_checker/version.rb
|
53
|
+
- readme.md
|
54
|
+
- same_site_ua_checker.gemspec
|
55
|
+
- spec/same_site_ua_checker_spec.rb
|
39
56
|
homepage: ''
|
40
57
|
licenses:
|
41
58
|
- private
|
@@ -60,4 +77,5 @@ rubygems_version: 2.6.11
|
|
60
77
|
signing_key:
|
61
78
|
specification_version: 4
|
62
79
|
summary: Check if User-Agent supports SameSite=None
|
63
|
-
test_files:
|
80
|
+
test_files:
|
81
|
+
- spec/same_site_ua_checker_spec.rb
|