browserino 4.1.0 → 4.2.0
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/.codeclimate.yml +19 -0
- data/.gitignore +2 -0
- data/.rspec +1 -1
- data/.rubocop.yml +10 -4
- data/.travis.yml +3 -2
- data/browserino.gemspec +4 -2
- data/lib/browserino/client.rb +89 -120
- data/lib/browserino/config.rb +20 -24
- data/lib/browserino/definitions/aliasses.rb +13 -8
- data/lib/browserino/definitions/filters.rb +40 -26
- data/lib/browserino/definitions/labels.rb +36 -35
- data/lib/browserino/definitions/matchers/bots.rb +208 -0
- data/lib/browserino/definitions/matchers/browsers.rb +377 -0
- data/lib/browserino/definitions/matchers/emails.rb +22 -0
- data/lib/browserino/definitions/matchers/global.rb +52 -0
- data/lib/browserino/definitions/matchers/libraries.rb +16 -0
- data/lib/browserino/definitions/matchers/mediaplayers.rb +12 -0
- data/lib/browserino/definitions/matchers/rss.rb +46 -0
- data/lib/browserino/definitions/matchers/validators.rb +37 -0
- data/lib/browserino/definitions/matchers.rb +7 -555
- data/lib/browserino/matcher.rb +5 -5
- data/lib/browserino/methods.rb +18 -17
- data/lib/browserino/options.rb +8 -0
- data/lib/browserino/version.rb +4 -4
- metadata +34 -11
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Browserino.config.emails do
|
4
|
+
match %r{outlook}i, name: :outlook
|
5
|
+
match %r{airmail}i, name: :airmail, engine: :webkit
|
6
|
+
match %r{barca}i, name: :barca, version: %r{barca(?:pro)?/([\d\.]+)}i
|
7
|
+
|
8
|
+
match %r{ggpht}i do
|
9
|
+
name :gmail
|
10
|
+
engine %r{(trident|gecko|webkit|presto|blink|servo|edge)}i
|
11
|
+
engine_version %r{(?:rv:|trident|webkit|presto|blink
|
12
|
+
|servo|edge)[\s/]?([\d\.]+)}i
|
13
|
+
end
|
14
|
+
|
15
|
+
# these are the same as above except with engine set to gecko and
|
16
|
+
# to look for engine_version using gecko version pattern
|
17
|
+
preset engine: :gecko, engine_version: %r{rv:\s?([\d\.]+)}i do
|
18
|
+
match %r{thunderbird}i, name: :thunderbird
|
19
|
+
match %r{spicebird}i, name: :spicebird
|
20
|
+
match %r{postbox}i, name: :postbox
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Browserino.config.define do
|
4
|
+
# Aside from the logic going on in this file, the order in which things are
|
5
|
+
# written is important! If you would move the :midori matcher below the
|
6
|
+
# :safari matcher and you would run rspec, you would see failures due to
|
7
|
+
# the change in order. The order can be changed - no problem,
|
8
|
+
# as long as the tests keep running
|
9
|
+
|
10
|
+
# a set of global matchers that will use formatted properties found earlier
|
11
|
+
# they will also be applied to every matcher unless that matcher has it's own
|
12
|
+
# (or inherited a property through like) property set up for
|
13
|
+
# the defined smart matcher
|
14
|
+
smart_match :version, with: ':name[\s/]?v?([\d\._]+)', flags: [:i]
|
15
|
+
smart_match :engine_version, with: ':engine[\s/]?([\d\._]+)', flags: [:i]
|
16
|
+
|
17
|
+
# a simple set of global matchers that will be merged and scanned
|
18
|
+
# with a specific matcher when the final client object is created
|
19
|
+
match do
|
20
|
+
locale %r{(?<!nintendo)[;\s(]([a-z]{2}(?:[-_][a-z]{2})?)\-?[;)]}i
|
21
|
+
architecture %r{((?:(?:x|x86_|amd|wow|win)64)|i[36]86|arm)}i
|
22
|
+
|
23
|
+
smarttv %r{(?:smart[\-\s]|hbb|apple\s|google|g)(tv)}i
|
24
|
+
|
25
|
+
tablet %r{(ipad|transformer|slider|a\d+f;|tablet|lenovo
|
26
|
+
|\s\w+tab\s)}xi
|
27
|
+
|
28
|
+
mobile %r{(bolt|nokia|samsung(?!b)|mobi(?:le)?|i?p(?:[ao]d|hone)
|
29
|
+
|android|bb\d+|blackberry|iemobile|fennec|bada|meego
|
30
|
+
|tizen|vodafone|kindle|kf\w\w|palmos|huawei|moto|lumia
|
31
|
+
|oneplus|fxos|nexus|opera\sm(?:ob|in)i|zte|htc(?!\-))}xi
|
32
|
+
|
33
|
+
platform %r{.*(wiiu?|nintendo\sds|playstation|windows\sphone|windows
|
34
|
+
|kf\w\w|mac(?:intosh|\sos\sx)|android|ip(?:[ao]d|hone)
|
35
|
+
|blackberry|linux|ubuntu|beos|unix|bsd|s(?:unos|olaris)
|
36
|
+
|tizen|xbox|amigaos|w(?:eb)?os|(?<!mi)cros|bada|palmos
|
37
|
+
|kindle|symbiano?s?|sailfish|meego|darwin|syllable|fxos
|
38
|
+
|(?<!en)risc|rim\stablet\sos|haiku|morphos|debian)}xi
|
39
|
+
|
40
|
+
platform_version %r{(?:windows(?:\sphone(?:\sos)?)?|nt|android|linux/?|fxos
|
41
|
+
|mac\sos\sx(?:\s\w+\s)?|(?:cpu\s|ip(?:[ao]d|hone)\s)os
|
42
|
+
|blackberry|bb|s(?:unos|olaris)/?|w(?:eb)?os/|tizen
|
43
|
+
|risc\s*|amigaos/?|cros\s[\w-]+|ows\sxp|darwin|palmos
|
44
|
+
|bada/?|symbianos/?|rim\stablet\sos)\s?([\d\._]+)}xi
|
45
|
+
|
46
|
+
device %r{(alcatel|all(?:tell|view)|htc|kindle|kf\w\w|apple\s?tv
|
47
|
+
|iphone|ipad|a\d+f;|archos|transformer|slider|me\d+x|zte
|
48
|
+
|blackberry|\d+dl|venue|desire|oneplus|lenovo|lumia|moto
|
49
|
+
|huawei\b|motorola|nokia|nexus|\b\w+tab\b|lg[-l]
|
50
|
+
|(?<!p)hp)}xi
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# automatically set type to :library for each defined matcher
|
4
|
+
# additionally, set text to true to each of the matchers automatically
|
5
|
+
Browserino.config.libraries text: true do
|
6
|
+
match %r{Go-http-client}i, name: :golang, version: %r{-client/([\d\.]+)}i
|
7
|
+
match %r{python}i, name: :python, version: %r{-urllib/([\d\.]+)}i
|
8
|
+
match %r{luakit}i, name: :luakit, engine: :webkit
|
9
|
+
match %r{webfetch}i, name: :webfetch
|
10
|
+
match %r{pycurl}i, name: :pycurl
|
11
|
+
match %r{perl}i, name: :perl
|
12
|
+
match %r{java}i, name: :java
|
13
|
+
match %r{curl}i, name: :curl
|
14
|
+
match %r{wget}i, name: :wget
|
15
|
+
match %r{php}i, name: :php
|
16
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Browserino.config.mediaplayers do
|
4
|
+
match %r{itunes}i, name: :itunes
|
5
|
+
match %r{dailymotion}i, name: :dailymotion
|
6
|
+
match %r{flycast}i, name: :flycast
|
7
|
+
match %r{coreplayer}i, name: :coreplayer
|
8
|
+
match %r{banshee}i, name: :banshee
|
9
|
+
match %r{foobar2000}i, name: :foobar2000
|
10
|
+
match %r{boxee}i, name: :boxee
|
11
|
+
match %r{gomplayer}i, name: :gomplayer, version: %r{yer\s([\d,\s]+)}i
|
12
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Browserino.config.rss do
|
4
|
+
match %r{windows-rss}i, name: :windows_rss
|
5
|
+
match %r{apple-pubsub}i, name: :apple_pubsub
|
6
|
+
match %r{applesyndication}i, name: :safari_rss
|
7
|
+
match %r{sharpreader}i, name: :sharpreader
|
8
|
+
match %r{netnewswire}i, name: :netnewswire
|
9
|
+
match %r{omea\sreader}i, name: :omea_reader
|
10
|
+
match %r{rssbandit}i, name: :rssbandit
|
11
|
+
match %r{feeddemon}i, name: :feeddemon
|
12
|
+
match %r{lucknews}i, name: :lucknews
|
13
|
+
match %r{inoreader}i, name: :inoreader
|
14
|
+
match %r{rss\smenu}i, name: :rss_menu
|
15
|
+
match %r{rss\spopper}i, name: :rss_popper
|
16
|
+
match %r{homepage\srss\sread}i, name: :seznam_rss
|
17
|
+
match %r{nfreader}i, name: :nfreader
|
18
|
+
match %r{magpierss}i, name: :magpierss
|
19
|
+
match %r{gregarius}i, name: :gregarius
|
20
|
+
match %r{newsbreak}i, name: :newsbreak
|
21
|
+
match %r{blogbridge}i, name: :blogbridge
|
22
|
+
match %r{yeahreader}i, name: :yeahreader
|
23
|
+
match %r{newsbeuter}i, name: :newsbeuter
|
24
|
+
match %r{greatnews}i, name: :greatnews
|
25
|
+
match %r{bloglines}i, name: :bloglines
|
26
|
+
match %r{icatcher}i, name: :icatcher
|
27
|
+
match %r{newsfox}i, name: :newsfox
|
28
|
+
match %r{quiterss}i, name: :quiterss
|
29
|
+
match %r{liferea}i, name: :liferea
|
30
|
+
match %r{aiderss}i, name: :aiderss
|
31
|
+
match %r{reeder}i, name: :reeder
|
32
|
+
match %r{rssowl}i, name: :rssowl
|
33
|
+
match %r{feedly}i, name: :feedly
|
34
|
+
match %r{abilon}i, name: :abilon
|
35
|
+
match %r{shrook}i, name: :shrook
|
36
|
+
match %r{awasu}i, name: :awasu
|
37
|
+
match %r{sage}i, name: :sage
|
38
|
+
match %r{akregator}i, name: :akregator
|
39
|
+
match %r{trileet\snewsroom}i, name: :trileet_newsroom
|
40
|
+
match %r{dragonfly\srss}i, name: :dragonfly_rss
|
41
|
+
match %r{digg\sfeed\sfetcher}i, name: :digg_feed_fetcher
|
42
|
+
match %r{yahoofeedseeker}i, name: :yahoofeedseeker
|
43
|
+
match %r{universalfeedparser}i, name: :universalfeedparser
|
44
|
+
match %r{feedfetcher-google}i, name: :feedfetcher_google
|
45
|
+
match %r{fastladder\sfeed}i, name: :fastladder_feedfetcher
|
46
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# automatically set type to :validator for each defined matcher
|
4
|
+
# additionally, set text to true to each of the matchers automatically
|
5
|
+
Browserino.config.validators do
|
6
|
+
match %r{xenu\slink\ssleuth}i, name: :xenu_link_sleuth
|
7
|
+
match %r{screaming\sfrog\sseo}i, name: :screaming_frog_seo_spider
|
8
|
+
match %r{rel\slink\schecker}i, name: :rel_link_checker_lite
|
9
|
+
match %r{a1\swebsite\sanalyze}i, name: :a1_website_analyzer
|
10
|
+
match %r{w3c_multipage_valida}i, name: :w3c_multipage_validator
|
11
|
+
match %r{cse\shtml\svalidator}i, name: :cse_html_validator
|
12
|
+
match %r{p3p\svalidator}i, name: :p3p_validator
|
13
|
+
match %r{w3c-checklink}i, name: :w3c_checklink
|
14
|
+
match %r{w3c_i18n-checker}i, name: :w3c_i18n_checker
|
15
|
+
match %r{w3c_unicorn}i, name: :w3c_unicorn
|
16
|
+
match %r{w3c-mobileok}i, name: :w3c_mobileok
|
17
|
+
match %r{wdg_validator}i, name: :wdg_validator
|
18
|
+
match %r{w3c_validator}i, name: :w3c_validator
|
19
|
+
match %r{fplinkchecker}i, name: :fplinkchecker
|
20
|
+
match %r{linkchecker}i, name: :linkchecker
|
21
|
+
match %r{linkwalker}i, name: :linkwalker
|
22
|
+
match %r{linkexaminer}i, name: :linkexaminer
|
23
|
+
match %r{feedvalidator}i, name: :feedvalidator
|
24
|
+
match %r{htmlparser}i, name: :htmlparser
|
25
|
+
match %r{csscheck}i, name: :csscheck
|
26
|
+
match %r{checkbot}i, name: :checkbot
|
27
|
+
match %r{cynthia}i, name: :cynthia
|
28
|
+
|
29
|
+
match %r{validator\.nu}i, name: :validator_nu,
|
30
|
+
version: %r{idator\.nu/([\d\.]+)}i
|
31
|
+
|
32
|
+
match %r{htmlchecker}i, name: :anw_htmlchecker,
|
33
|
+
version: %r{htmlchecker/([\d\.]+)}i
|
34
|
+
|
35
|
+
match %r{w3c_css_validator}i, name: :w3c_css_validator,
|
36
|
+
version: %r{validator_jfouffa/([\d\.]+)}i
|
37
|
+
end
|
@@ -1,557 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
# a set of global matchers that will use formatted properties found earlier
|
11
|
-
# they will also be applied to every matcher unless that matcher has it's own
|
12
|
-
# (or inherited a property through like) property set up for
|
13
|
-
# the defined smart matcher
|
14
|
-
smart_match :version, with: ':name[\s/]?v?([\d\._]+)', flags: [:i]
|
15
|
-
smart_match :engine_version, with: ':engine[\s/]?([\d\._]+)', flags: [:i]
|
16
|
-
|
17
|
-
# a simple set of global matchers that will be merged and scanned
|
18
|
-
# with a specific matcher when the final client object is created
|
19
|
-
match do
|
20
|
-
locale %r{(?<!nintendo)[;\s(]([a-z]{2}(?:[-_][a-z]{2})?)[;)]}i
|
21
|
-
architecture %r{((?:(?:x|x86_|amd|wow|win)64)|i[36]86|arm)}i
|
22
|
-
|
23
|
-
mobile %r{(bolt|nokia|samsung(?!b)|mobi(?:le)?|i?p(?:[ao]d|hone)
|
24
|
-
|android|bb\d+|blackberry|iemobile|fennec|bada|meego
|
25
|
-
|tizen|vodafone|t\-mobile|kindle|kf\w\w
|
26
|
-
|opera\sm(?:ob|in)i)}xi
|
27
|
-
|
28
|
-
platform %r{.*(wiiu?|nintendo\sds|playstation|windows(?:\sphone)?
|
29
|
-
|kf\w\w|mac(?:intosh|\sos\sx)|android|ip(?:[ao]d|hone)
|
30
|
-
|blackberry|risc|linux|ubuntu|x11|bsd|s(?:unos|olaris)
|
31
|
-
|tizen|xbox|amigaos|w(?:eb)?os|(?<!mi)cros|kindle)}xi
|
32
|
-
|
33
|
-
platform_version %r{(?:windows(?:\sphone(?:\sos)?)?|nt|android|linux/?
|
34
|
-
|mac\sos\sx(?:\s\w+\s)?|(?:cpu\s|ip(?:[ao]d|hone)\s)os
|
35
|
-
|blackberry|bb|s(?:unos|olaris)/?|w(?:eb)?os/|tizen
|
36
|
-
|risc\s*|amigaos/?|cros\s[\w-]+|ows\sxp)\s?([\d\._]+)}xi
|
37
|
-
end
|
38
|
-
|
39
|
-
# automatically set type to :email for each defined matcher
|
40
|
-
emails do
|
41
|
-
match %r{outlook}i, name: :outlook
|
42
|
-
match %r{airmail}i, name: :airmail, engine: :webkit
|
43
|
-
match %r{barca}i, name: :barca, version: %r{barca(?:pro)?/([\d\.]+)}i
|
44
|
-
|
45
|
-
match %r{ggpht}i do
|
46
|
-
name :gmail
|
47
|
-
engine %r{(trident|gecko|webkit|presto|blink|servo|edge)}i
|
48
|
-
engine_version %r{(?:rv:|trident|webkit|presto|blink
|
49
|
-
|servo|edge)[\s/]?([\d\.]+)}i
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
# these are the same as above except with engine set to gecko and
|
54
|
-
# to look for engine_version using gecko version pattern
|
55
|
-
emails engine: :gecko, engine_version: %r{rv:\s?([\d\.]+)}i do
|
56
|
-
match %r{thunderbird}i, name: :thunderbird
|
57
|
-
match %r{postbox}i, name: :postbox
|
58
|
-
end
|
59
|
-
|
60
|
-
# automatically set type to :browser for each defined matcher
|
61
|
-
browsers do
|
62
|
-
# a single matcher that will create a matcher for a specific match
|
63
|
-
# matchers are added in an array in order of definition - higher is better
|
64
|
-
# aliasses are prepended to the list instead of appended (e.g. like blocks)
|
65
|
-
# this ensures that aliasses will be matched before any regular matcher
|
66
|
-
match %r{maxthon}i do
|
67
|
-
# define properties by calling a method with the desired name and:
|
68
|
-
# -- value # => will create a static method that returns that value
|
69
|
-
# -- /(pat)/ # => will create a method that scans the UA and
|
70
|
-
# saves the first capture group
|
71
|
-
# -- { blk } # => will create a dynamic method that returns the result
|
72
|
-
# of the block, it will be executed within an
|
73
|
-
# instantiated Client object (right after creation)
|
74
|
-
name :maxthon
|
75
|
-
engine %r{(webkit|presto|gecko|trident)}i
|
76
|
-
end
|
77
|
-
|
78
|
-
match %r{ucbrowser}i do
|
79
|
-
name :ucbrowser
|
80
|
-
engine %r{(trident|gecko|webkit|presto)}i
|
81
|
-
end
|
82
|
-
|
83
|
-
match %r{edge}i do
|
84
|
-
name :edge
|
85
|
-
engine :edge
|
86
|
-
modern? true
|
87
|
-
end
|
88
|
-
|
89
|
-
match %r{ope?ra?\smini}i do
|
90
|
-
name :opera_mini
|
91
|
-
version %r{ope?ra?\smini/([\d\.]+)}i
|
92
|
-
engine %r{(presto|webkit)}i
|
93
|
-
end
|
94
|
-
|
95
|
-
match %r{opera[^\w]}i do
|
96
|
-
name :opera
|
97
|
-
version %r{(?:opera[\s/]|version/)([\d\.]+)}i
|
98
|
-
engine %r{(presto|webkit)}i
|
99
|
-
end
|
100
|
-
|
101
|
-
# escape has to come before IE
|
102
|
-
match %r{escape}i, name: :escape
|
103
|
-
|
104
|
-
match %r{flock}i, name: :flock, engine: %r{(webkit|gecko|servo)}i,
|
105
|
-
engine_version: %r{(?:webkit|rv:|servo)[\s/]?([\d\.]+)}i
|
106
|
-
|
107
|
-
match %r{sunrise}i, name: :sunrise, engine: %r{(webkit|gecko|servo)}i,
|
108
|
-
engine_version: %r{(?:webkit|rv:|servo)[\s/]?([\d\.]+)}i
|
109
|
-
|
110
|
-
match %r{msie|trident}i do
|
111
|
-
name :ie
|
112
|
-
engine :trident
|
113
|
-
version %r{(?:(?:ms)?ie\s|rv:)([\d\.]+)}i
|
114
|
-
modern? { version >= 10 }
|
115
|
-
end
|
116
|
-
|
117
|
-
match %r{chrome(?:ium)?}i do
|
118
|
-
name :chrome
|
119
|
-
version %r{chrome(?:ium)?/([\d\.]+)}i
|
120
|
-
engine %r{(webkit|blink)}i
|
121
|
-
modern? { version >= 50 }
|
122
|
-
end
|
123
|
-
|
124
|
-
match %r{nintendobrowser}i, name: :nintendobrowser, engine: :webkit
|
125
|
-
match %r{deskbrowse}i, name: :deskbrowse, engine: :webkit
|
126
|
-
match %r{qupzilla}i, name: :qupzilla, engine: :webkit
|
127
|
-
match %r{midori}i, name: :midori, engine: :webkit
|
128
|
-
match %r{shiira}i, name: :shiira, engine: :webkit
|
129
|
-
match %r{amigavoyager}i, name: :amigavoyager
|
130
|
-
match %r{(?<!(?:net))surf}i, name: :surf
|
131
|
-
|
132
|
-
match %r{sundance}i, name: :sundance,
|
133
|
-
version: %r{(?:version/|sundance/)([\d\.]+)}i
|
134
|
-
|
135
|
-
match %r{inet\sbrowser}i, name: :inet_browser, platform: :star_blade_os,
|
136
|
-
version: %r{browser[\s/]?([\d\.]+)}i
|
137
|
-
|
138
|
-
match %r{ibm\swebexplorer}i, name: :ibm_webexplorer, platform: :os2,
|
139
|
-
version: %r{bexplorer\s?/v?([\d\.]+)}i
|
140
|
-
|
141
|
-
match %r{element\sbrowser}i, name: :element_browser, engine: :webkit,
|
142
|
-
version: %r{browser[\s/]([\d\.]+)}i
|
143
|
-
|
144
|
-
match %r{navscape}i, name: :navscape, engine: :webkit,
|
145
|
-
version: %r{navscape/(?:\w+-)?([\d\.]+)}i
|
146
|
-
|
147
|
-
match %r{firefox|phoenix}i do
|
148
|
-
name :firefox
|
149
|
-
engine %r{(gecko|servo)}i
|
150
|
-
engine_version %r{(?:rv:\s?|servo/)([\d\.]+)}i
|
151
|
-
modern? { version >= 50 }
|
152
|
-
end
|
153
|
-
|
154
|
-
match %r{safari}i do
|
155
|
-
name :safari
|
156
|
-
engine :webkit
|
157
|
-
version %r{(?:safari|version)/([\d\.]+)}i
|
158
|
-
modern? { version >= 9 }
|
159
|
-
end
|
160
|
-
|
161
|
-
match %r{epiphany}i, name: :epiphany, engine: :webkit
|
162
|
-
match %r{uzbl}i, name: :uzbl, engine: :webkit
|
163
|
-
match %r{roccat}i, name: :roccat, engine: :webkit
|
164
|
-
match %r{adobeair}i, name: :adobeair, engine: :webkit
|
165
|
-
match %r{abrowse}i, name: :abrowse, engine: :webkit
|
166
|
-
match %r{vimprobable}i, name: :vimprobable, engine: :webkit
|
167
|
-
match %r{amaya}i, name: :amaya, text: true
|
168
|
-
match %r{lynx}i, name: :lynx, text: true
|
169
|
-
match %r{linemode}i, name: :linemode, text: true
|
170
|
-
match %r{elinks}i, name: :elinks, text: true
|
171
|
-
match %r{netpositive}i, name: :netpositive
|
172
|
-
match %r{onebrowser}i, name: :onebrowser
|
173
|
-
match %r{flashfire}i, name: :flashfire
|
174
|
-
match %r{konqueror}i, name: :konqueror
|
175
|
-
match %r{cyberdog}i, name: :cyberdog
|
176
|
-
match %r{hotjava}i, name: :hotjava
|
177
|
-
match %r{netsurf}i, name: :netsurf
|
178
|
-
match %r{contiki}i, name: :contiki
|
179
|
-
match %r{mosaic|ibrowse[^r]}i, name: :mosaic
|
180
|
-
match %r{dillo}i, name: :dillo
|
181
|
-
|
182
|
-
match %r{alienblue}i, name: :alienblue,
|
183
|
-
version: %r{alienblue(?:hd)?/([\d\.]+)}i
|
184
|
-
|
185
|
-
match %r{obigo}i, name: :obigo, engine: :webkit,
|
186
|
-
version: %r{obigo/w?([\d\.]+)}i
|
187
|
-
|
188
|
-
match %r{ovibrowser}i, name: :ovibrowser, engine: :gecko,
|
189
|
-
engine_version: %r{rv:\s?([\d\.]+)}i
|
190
|
-
|
191
|
-
match %r{osb\-browser}i, name: :osb_browser, engine: :webkit,
|
192
|
-
version: %r{\-browser/([\d\.]+)}i
|
193
|
-
|
194
|
-
match %r{links}i, name: :links,
|
195
|
-
version: %r{links\s\(([\d\.]+)}i
|
196
|
-
|
197
|
-
match %r{oregano}i, name: :oregano,
|
198
|
-
locale: %r{\[(\w{2}(?:\-\w{2})?)\]}i
|
199
|
-
|
200
|
-
match %r{dooble}i, name: :dooble, engine: :webkit,
|
201
|
-
locale: %r{\((\w{2}(?:[-_]\w{2})?)\)}i
|
202
|
-
|
203
|
-
match %r{retawq}i, name: :retawq, text: true,
|
204
|
-
locale: %r{\[(\w{2}(?:\-\w{2})?)\]}i
|
205
|
-
end
|
206
|
-
|
207
|
-
# automatically set type to :bot for each defined matcher
|
208
|
-
# additionally, set text to true to each of the matchers automatically
|
209
|
-
bots text: true do
|
210
|
-
match %r{huaweisymantecspider}i, name: :huaweisymantecspider
|
211
|
-
match %r{atomic_email_hunter}i, name: :atomic_email_hunter
|
212
|
-
match %r{netresearchserver}i, name: :netresearchserver
|
213
|
-
match %r{autoemailspider}i, name: :auto_email_spider
|
214
|
-
match %r{flaming\sattackbot}i, name: :flaming_attackbot
|
215
|
-
match %r{addsugarspiderbot}i, name: :addsugarspiderbot
|
216
|
-
match %r{dataparksearch}i, name: :dataparksearch
|
217
|
-
match %r{boston[_ ]project}i, name: :boston_project
|
218
|
-
match %r{emailcollector}i, name: :emailcollector
|
219
|
-
match %r{4anything}i, name: :four_anything
|
220
|
-
match %r{aqua_products}i, name: :aqua_products
|
221
|
-
match %r{arachnophilia}i, name: :arachnophilia
|
222
|
-
match %r{emeraldshield}i, name: :emeraldshield
|
223
|
-
match %r{issuecrawler}i, name: :issuecrawler
|
224
|
-
match %r{jaxified\sbot}i, name: :jaxified_bot
|
225
|
-
match %r{stackrambler}i, name: :stackrambler
|
226
|
-
match %r{turnitinbot}i, name: :turnitinbot
|
227
|
-
match %r{alkaline}i, name: :alkalinebot
|
228
|
-
match %r{yahoo\!\sslurp}i, name: :yahoo_slurp
|
229
|
-
match %r{emailsiphon}i, name: :emailsiphon
|
230
|
-
match %r{backdoorbot}i, name: :backdoorbot
|
231
|
-
match %r{terrawizbot}i, name: :terrawizbot
|
232
|
-
match %r{searchsight}i, name: :searchsight
|
233
|
-
match %r{baiduspider}i, name: :baiduspider
|
234
|
-
match %r{linguee\sbot}i, name: :linguee_bot
|
235
|
-
match %r{sandcrawler}i, name: :sandcrawler
|
236
|
-
match %r{big\sbrother}i, name: :big_brother
|
237
|
-
match %r{noxtrumbot}i, name: :noxtrumbot
|
238
|
-
match %r{black\shole}i, name: :black_hole
|
239
|
-
match %r{blackwidow}i, name: :blackwidow
|
240
|
-
match %r{sosospider}i, name: :sosospider
|
241
|
-
match %r{duckduckgo}i, name: :duckduckgo
|
242
|
-
match %r{beslistbot}i, name: :beslistbot
|
243
|
-
match %r{twitterbot}i, name: :twitterbot
|
244
|
-
match %r{linkdexbot}i, name: :linkdexbot
|
245
|
-
match %r{aitcsrobot}i, name: :aitcsrobot
|
246
|
-
match %r{litefinder}i, name: :litefinder
|
247
|
-
match %r{linkwalker}i, name: :linkwalker
|
248
|
-
match %r{mabontland}i, name: :mabontland
|
249
|
-
match %r{ahrefsbot}i, name: :ahrefsbot
|
250
|
-
match %r{mojeekbot}i, name: :mojeekbot
|
251
|
-
match %r{seznambot}i, name: :seznambot
|
252
|
-
match %r{girafabot}i, name: :girafabot
|
253
|
-
match %r{becomebot}i, name: :becomebot
|
254
|
-
match %r{dts\sagent}i, name: :dts_agent
|
255
|
-
match %r{emailwolf}i, name: :emailwolf
|
256
|
-
match %r{googlebot}i, name: :googlebot
|
257
|
-
match %r{omgilibot}i, name: :omgilibot
|
258
|
-
match %r{altavista}i, name: :altavista
|
259
|
-
match %r{yandexbot}i, name: :yandexbot
|
260
|
-
match %r{newsgator}i, name: :newsgator
|
261
|
-
match %r{instagram}i, name: :instagram
|
262
|
-
match %r{pinterest}i, name: :pinterest
|
263
|
-
match %r{gurujibot}i, name: :gurujibot
|
264
|
-
match %r{lapozzbot}i, name: :lapozzbot
|
265
|
-
match %r{mvaclient}i, name: :mvaclient
|
266
|
-
match %r{ldspider}i, name: :ldspider
|
267
|
-
match %r{lexxebot}i, name: :lexxebot
|
268
|
-
match %r{scoutjet}i, name: :scoutjet
|
269
|
-
match %r{linkedinbot}i, name: :linkedin
|
270
|
-
match %r{bullseye}i, name: :bullseye
|
271
|
-
match %r{alexibot}i, name: :alexibot
|
272
|
-
match %r{face(?:bookexternalhit|bot)}i, name: :facebook
|
273
|
-
match %r{getright}i, name: :getright
|
274
|
-
match %r{asterias}i, name: :asterias
|
275
|
-
match %r{catchbot}i, name: :catchbot
|
276
|
-
match %r{discobot}i, name: :discobot
|
277
|
-
match %r{geniebot}i, name: :geniebot
|
278
|
-
match %r{koepabot}i, name: :koepabot
|
279
|
-
match %r{synoobot}i, name: :synoobot
|
280
|
-
match %r{rufusbot}i, name: :rufusbot
|
281
|
-
match %r{rampybot}i, name: :rampybot
|
282
|
-
match %r{mogimogi}i, name: :mogimogi
|
283
|
-
match %r{jyxobot}i, name: :jyxobot
|
284
|
-
match %r{orbiter}i, name: :orbiter
|
285
|
-
match %r{polybot}i, name: :polybot
|
286
|
-
match %r{accoona}i, name: :accoona
|
287
|
-
match %r{mj12bot}i, name: :mj12bot
|
288
|
-
match %r{aspider}i, name: :aspider
|
289
|
-
match %r{blexbot}i, name: :blexbot
|
290
|
-
match %r{bspider}i, name: :bspider
|
291
|
-
match %r{auresys}i, name: :auresys
|
292
|
-
match %r{bingbot}i, name: :bingbot
|
293
|
-
match %r{gaisbot}i, name: :gaisbot
|
294
|
-
match %r{backrub}i, name: :backrub
|
295
|
-
match %r{harvest}i, name: :harvest
|
296
|
-
match %r{nymesis}i, name: :nymesis
|
297
|
-
match %r{radian6}i, name: :radian6
|
298
|
-
match %r{scrubby}i, name: :scrubby
|
299
|
-
match %r{snappy}i, name: :snappy
|
300
|
-
match %r{vortex}i, name: :vortex
|
301
|
-
match %r{tineye}i, name: :tineye
|
302
|
-
match %r{sqworm}i, name: :sqworm
|
303
|
-
match %r{qseero}i, name: :qseero
|
304
|
-
match %r{pompos}i, name: :pompos
|
305
|
-
match %r{ichiro}i, name: :ichiro
|
306
|
-
match %r{bizbot}i, name: :bizbot
|
307
|
-
match %r{msnbot}i, name: :msnbot
|
308
|
-
match %r{exabot}i, name: :exabot
|
309
|
-
match %r{msrbot}i, name: :msrbot
|
310
|
-
match %r{dotbot}i, name: :dotbot
|
311
|
-
match %r{cosmos}i, name: :cosmos
|
312
|
-
match %r{ecatch}i, name: :ecatch
|
313
|
-
match %r{scrapy}i, name: :scrapy
|
314
|
-
match %r{holmes}i, name: :holmes
|
315
|
-
match %r{tumblr}i, name: :tumblr
|
316
|
-
match %r{mxbot}i, name: :mxbot
|
317
|
-
match %r{acoon}i, name: :acoon
|
318
|
-
match %r{nutch}i, name: :nutch
|
319
|
-
match %r{ia_archiver}i, name: :alexa
|
320
|
-
match %r{atomz}i, name: :atomz
|
321
|
-
match %r{acoi}i, name: :acoi
|
322
|
-
match %r{\sobot}i, name: :obot
|
323
|
-
match %r{(?:ask)\sjeeves}i, name: :ask
|
324
|
-
match %r{b2w}i, name: :b2w
|
325
|
-
|
326
|
-
match %r{oegp}i, name: :oegp,
|
327
|
-
version: %r{v\.\s([\d\.]+)}i
|
328
|
-
|
329
|
-
match %r{ng-search}i, name: :ng_search,
|
330
|
-
version: %r{-search/([\d\.]+)}i
|
331
|
-
|
332
|
-
match %r{morning\spaper}i, name: :morning_paper,
|
333
|
-
version: %r{\spaper\s([\d\.]+)}i
|
334
|
-
|
335
|
-
match %r{l\.webis}i, name: :lwebis,
|
336
|
-
version: %r{webis/([\d\.]+)}i
|
337
|
-
|
338
|
-
match %r{covario-ids}i, name: :covario_ids,
|
339
|
-
version: %r{io-ids/([\d\.]+)}i
|
340
|
-
|
341
|
-
match %r{cerberian\sdrtrs}i, name: :cerberian_drtrs,
|
342
|
-
version: %r{version[-/]([\d\.]+)}i
|
343
|
-
|
344
|
-
match %r{gigamega}i, name: :gigamega,
|
345
|
-
version: %r{mega\.bot/([\d\.]+)}i
|
346
|
-
|
347
|
-
match %r{sogou(?:\s\w+)?\s?spider}i, name: :sogou_spider,
|
348
|
-
version: %r{spider/([\d\.]+)}i
|
349
|
-
|
350
|
-
match %r{megaindex}i, name: :megaindex,
|
351
|
-
version: %r{index\.ru/([\d\.]+)}i
|
352
|
-
|
353
|
-
match %r{mass\sdownloader}i, name: :mass_downloader,
|
354
|
-
version: %r{downloader/([\d\.]+)}i
|
355
|
-
|
356
|
-
match %r{safetynet\srobot}i, name: :safetynet_robot,
|
357
|
-
version: %r{net\srobot\s([\d\.]+)}i
|
358
|
-
|
359
|
-
match %r{internet\sninja}i, name: :internet_ninja,
|
360
|
-
version: %r{ninja\s([\d\.]+)}i
|
361
|
-
|
362
|
-
match %r{go\!zilla}i, name: :gozilla,
|
363
|
-
version: %r{go\!zilla\s([\d\.]+)}i
|
364
|
-
|
365
|
-
match %r{larbin}i, name: :larbin,
|
366
|
-
version: %r{larbin_([\d\.]+)}i
|
367
|
-
|
368
|
-
match %r{download\sdemon}i, name: :download_demon,
|
369
|
-
version: %r{demon/([\d\.]+)}i
|
370
|
-
|
371
|
-
match %r{netseer}i, name: :netseer,
|
372
|
-
version: %r{\scrawler/([\d\.]+)}i
|
373
|
-
end
|
374
|
-
|
375
|
-
# automatically set type to :validator for each defined matcher
|
376
|
-
# additionally, set text to true to each of the matchers automatically
|
377
|
-
validators text: true do
|
378
|
-
match %r{cse\shtml\svalidator}i, name: :cse_html_validator
|
379
|
-
match %r{p3p\svalidator}i, name: :p3p_validator
|
380
|
-
match %r{wdg_validator}i, name: :wdg_validator
|
381
|
-
match %r{w3c_validator}i, name: :w3c_validator
|
382
|
-
match %r{htmlparser}i, name: :htmlparser
|
383
|
-
match %r{csscheck}i, name: :csscheck
|
384
|
-
|
385
|
-
match %r{cynthia}i, name: :cynthia,
|
386
|
-
version: %r{cynthia\s([\d\.]+)}i
|
387
|
-
|
388
|
-
match %r{w3c_css_validator}i, name: :w3c_css_validator,
|
389
|
-
version: %r{validator_jfouffa/([\d\.]+)}i
|
390
|
-
end
|
391
|
-
|
392
|
-
# automatically set type to :library for each defined matcher
|
393
|
-
# additionally, set text to true to each of the matchers automatically
|
394
|
-
libraries text: true do
|
395
|
-
match %r{Go-http-client}i, name: :golang, version: %r{-client/([\d\.]+)}i
|
396
|
-
match %r{python}i, name: :python, version: %r{-urllib/([\d\.]+)}i
|
397
|
-
match %r{webfetch}i, name: :webfetch
|
398
|
-
match %r{pycurl}i, name: :pycurl
|
399
|
-
match %r{perl}i, name: :perl
|
400
|
-
match %r{java}i, name: :java
|
401
|
-
match %r{curl}i, name: :curl
|
402
|
-
match %r{wget}i, name: :wget
|
403
|
-
match %r{php}i, name: :php
|
404
|
-
end
|
405
|
-
|
406
|
-
# inherit properties a standard set of properties by the name of a
|
407
|
-
# previously defined matcher, overwritten by properties added within matchers
|
408
|
-
# inherit properties from matcher where name == :chrome, (except :version)
|
409
|
-
like :chrome, except: [:version] do
|
410
|
-
match %r{steam\sgame}i, name: :steam, version: %r{meoverlay/([\d\.]+)}i
|
411
|
-
match %r{comodo_dragon}i, name: :comodo_dragon
|
412
|
-
match %r{chromeplus}i, name: :chromeplus
|
413
|
-
match %r{bluechrome}i, name: :bluechrome
|
414
|
-
match %r{awesomium}i, name: :awesomium
|
415
|
-
match %r{qqbrowser}i, name: :qqbrowser
|
416
|
-
match %r{yabrowser}i, name: :yabrowser
|
417
|
-
match %r{rockmelt}i, name: :rockmelt
|
418
|
-
match %r{coolnovo}i, name: :coolnovo
|
419
|
-
match %r{vivaldi}i, name: :vivaldi
|
420
|
-
match %r{colibri}i, name: :colibri
|
421
|
-
match %r{iridium}i, name: :iridium
|
422
|
-
match %r{origin}i, name: :origin
|
423
|
-
match %r{puffin}i, name: :puffin
|
424
|
-
match %r{fluid}i, name: :fluid
|
425
|
-
match %r{brave}i, name: :brave
|
426
|
-
match %r{hana}i, name: :hana
|
427
|
-
match %r{(?<!env)iron}i, name: :iron
|
428
|
-
|
429
|
-
match %r{qtweb}i, name: :qtweb_browser,
|
430
|
-
version: %r{net\sbrowser/([\d\.]+)}i
|
431
|
-
end
|
432
|
-
|
433
|
-
# inherit properties from matcher where name == :safari, (except :version)
|
434
|
-
like :safari, except: [:version] do
|
435
|
-
match %r{samsungbrowser}i, name: :samsungbrowser
|
436
|
-
match %r{stainless}i, name: :stainless
|
437
|
-
match %r{cheshire}i, name: :cheshire
|
438
|
-
match %r{omniweb}i, name: :omniweb
|
439
|
-
match %r{skyfire}i, name: :skyfire
|
440
|
-
match %r{mercury}i, name: :mercury
|
441
|
-
match %r{rekonq}i, name: :rekonq
|
442
|
-
match %r{arora}i, name: :arora
|
443
|
-
match %r{raptr}i, name: :raptr
|
444
|
-
match %r{icab}i, name: :icab
|
445
|
-
match %r{bolt}i, name: :bolt
|
446
|
-
match %r{silk}i, name: :silk
|
447
|
-
match %r{qt(?!web)}i, name: :qt
|
448
|
-
|
449
|
-
match %r{nook}i, name: :nook,
|
450
|
-
version: %r{build/\w+\s([\d\.]+)}i
|
451
|
-
|
452
|
-
match %r{kindle}i, name: :kindle,
|
453
|
-
version: %r{(?:kindle|version)/([\d\.]+)}i
|
454
|
-
|
455
|
-
match %r{leechcraft}i, name: :leechcraft,
|
456
|
-
version: %r{craft/(?:\w+\s)?([\d\.]+)}i
|
457
|
-
|
458
|
-
match %r{webos|wosbrowser}i, name: :webosbrowser,
|
459
|
-
version: %r{(?:version|osbrowser)/([\d\.]+)}i
|
460
|
-
|
461
|
-
match %r{blackberry.*?(?=safari)}i, name: :blackberry_browser,
|
462
|
-
version: %r{version/([\d\.]+)}i
|
463
|
-
end
|
464
|
-
|
465
|
-
# inherit properties from matcher where name == :firefox, (except :version)
|
466
|
-
like :firefox, except: [:version] do
|
467
|
-
# Minefield is firefox nightly, we can now do client.nightly?
|
468
|
-
# to find out wether this browser is bleeding edge
|
469
|
-
# this method will be caught by method missing if it isn't defined,
|
470
|
-
# therefore - this method can be used on every Browserino::Client
|
471
|
-
# instance
|
472
|
-
match %r{minefield}i, name: :minefield, nightly: true
|
473
|
-
match %r{k-meleon}i, name: :kmeleon, version: %r{leon/([\d\.]+)}i
|
474
|
-
match %r{k-ninja}i, name: :kninja, version: %r{ninja/([\d\.]+)}i
|
475
|
-
match %r{waterfox}i, name: :waterfox, architecture: :x64
|
476
|
-
match %r{granparadiso}i, name: :granparadiso
|
477
|
-
match %r{tenfourfox}i, name: :tenfourfox
|
478
|
-
match %r{enigmafox}i, name: :enigmafox
|
479
|
-
match %r{iceweasel}i, name: :iceweasel
|
480
|
-
match %r{seamonkey}i, name: :seamonkey
|
481
|
-
match %r{superswan}i, name: :superswan
|
482
|
-
match %r{lunascape}i, name: :lunascape
|
483
|
-
match %r{kazehakase}i, name: :kazehakase
|
484
|
-
match %r{shiretoko}i, name: :shiretoko
|
485
|
-
match %r{classilla}i, name: :classilla
|
486
|
-
match %r{cometbird}i, name: :cometbird
|
487
|
-
match %r{icedragon}i, name: :icedragon
|
488
|
-
match %r{palemoon}i, name: :palemoon
|
489
|
-
match %r{namoroka}i, name: :namoroka
|
490
|
-
match %r{songbird}i, name: :songbird
|
491
|
-
match %r{firebird}i, name: :firebird
|
492
|
-
match %r{vonkeror}i, name: :vonkeror
|
493
|
-
match %r{conkeror}i, name: :conkeror
|
494
|
-
match %r{netscape}i, name: :netscape
|
495
|
-
match %r{bonecho}i, name: :bonecho
|
496
|
-
match %r{chimera}i, name: :chimera
|
497
|
-
match %r{lolifox}i, name: :lolifox
|
498
|
-
match %r{lorentz}i, name: :lorentz
|
499
|
-
match %r{myibrow}i, name: :myibrow
|
500
|
-
match %r{sylera}i, name: :sylera
|
501
|
-
match %r{iceape}i, name: :iceape
|
502
|
-
match %r{madfox}i, name: :madfox
|
503
|
-
match %r{kapiko}i, name: :kapiko
|
504
|
-
match %r{kmlite}i, name: :kmlite
|
505
|
-
match %r{beonex}i, name: :beonex
|
506
|
-
match %r{icecat}i, name: :icecat
|
507
|
-
match %r{galeon}i, name: :galeon
|
508
|
-
match %r{vision}i, name: :vision
|
509
|
-
match %r{prism}i, name: :prism
|
510
|
-
match %r{pogo}i, name: :pogo
|
511
|
-
match %r{orca}i, name: :orca
|
512
|
-
|
513
|
-
match %r{camino}i, name: :camino,
|
514
|
-
locale: %r{\s(\w{2}(?:\-\w{2})?),}i
|
515
|
-
|
516
|
-
match %r{fireweb\snavigator}i, name: :fireweb_navigator, engine: :gecko,
|
517
|
-
version: %r{\snavigator/([\d\.]+)}i
|
518
|
-
end
|
519
|
-
|
520
|
-
# never thought a browser would want to be like IE...
|
521
|
-
like :ie do
|
522
|
-
# version does not have to be supplied because we simply want to use
|
523
|
-
# the version supplied by the MSIE token instead (there is no version on
|
524
|
-
# the avant browser or slimbrowser etc... UA itself)
|
525
|
-
match %r{avant\sbrowser}i, name: :avant_browser
|
526
|
-
match %r{greenbrowser}i, name: :greenbrowser
|
527
|
-
match %r{slimbrowser}i, name: :slimbrowser
|
528
|
-
match %r{theworld}i, name: :theworld
|
529
|
-
match %r{browzar}i, name: :browzar
|
530
|
-
|
531
|
-
# below are special cases where we need to manually
|
532
|
-
# supply the version pattern
|
533
|
-
match %r{deepnet\sexplorer}i, name: :deepnet_explorer,
|
534
|
-
version: %r{explorer\s([\d\.]+)}i
|
535
|
-
|
536
|
-
match %r{crazy\sbrowser}i, name: :crazy_browser,
|
537
|
-
version: %r{browser\s([\d\.]+)}i
|
538
|
-
|
539
|
-
match %r{solid\score}i, name: :solid_core,
|
540
|
-
version: %r{d\score/([\d\.]+)}i
|
541
|
-
|
542
|
-
# we can exclude the default version which will then be replaced by
|
543
|
-
# the smart_matcher for :version which uses the :name token automatically
|
544
|
-
# upon creating it's pattern
|
545
|
-
preset except: [:version] do
|
546
|
-
match %r{tencenttraveler}i, name: :tencenttraveler
|
547
|
-
match %r{enigma\sbrowser}i, name: :enigma_browser
|
548
|
-
match %r{simulbrowse}i, name: :simulbrowse
|
549
|
-
match %r{netcaptor}i, name: :netcaptor
|
550
|
-
match %r{sleipnir}i, name: :sleipnir
|
551
|
-
match %r{irider}i, name: :irider
|
552
|
-
match %r{kkman}i, name: :kkman
|
553
|
-
match %r{lobo}i, name: :lobo
|
554
|
-
match %r{aol}i, name: :aol
|
555
|
-
end
|
556
|
-
end
|
557
|
-
end
|
3
|
+
require_relative 'matchers/global'
|
4
|
+
require_relative 'matchers/emails'
|
5
|
+
require_relative 'matchers/browsers'
|
6
|
+
require_relative 'matchers/bots'
|
7
|
+
require_relative 'matchers/validators'
|
8
|
+
require_relative 'matchers/rss'
|
9
|
+
require_relative 'matchers/libraries'
|