browser2 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +5 -0
- data/.hound.yml +90 -0
- data/.rubocop.yml +90 -0
- data/.travis.yml +14 -0
- data/CONTRIBUTING.md +44 -0
- data/Gemfile +2 -0
- data/LICENSE +20 -0
- data/README.md +125 -0
- data/Rakefile +33 -0
- data/browser2.gemspec +42 -0
- data/config.ru +2 -0
- data/data/bots.json +176 -0
- data/data/languages.json +115 -0
- data/gemfiles/rails3.gemfile +4 -0
- data/lib/browser/action_controller.rb +20 -0
- data/lib/browser/data/bots.rb +5 -0
- data/lib/browser/data/languages.rb +5 -0
- data/lib/browser/data/search_engines.rb +14 -0
- data/lib/browser/meta/base.rb +20 -0
- data/lib/browser/meta/generic_browser.rb +15 -0
- data/lib/browser/meta/id.rb +9 -0
- data/lib/browser/meta/ie.rb +18 -0
- data/lib/browser/meta/ios.rb +9 -0
- data/lib/browser/meta/mobile.rb +9 -0
- data/lib/browser/meta/modern.rb +9 -0
- data/lib/browser/meta/platform.rb +9 -0
- data/lib/browser/meta/safari.rb +9 -0
- data/lib/browser/meta/webkit.rb +9 -0
- data/lib/browser/methods/blackberry.rb +51 -0
- data/lib/browser/methods/bots.rb +37 -0
- data/lib/browser/methods/consoles.rb +43 -0
- data/lib/browser/methods/devices.rb +41 -0
- data/lib/browser/methods/ie.rb +104 -0
- data/lib/browser/methods/language.rb +16 -0
- data/lib/browser/methods/mobile.rb +30 -0
- data/lib/browser/methods/platform.rb +142 -0
- data/lib/browser/methods/tv.rb +8 -0
- data/lib/browser/middleware/context/additions.rb +16 -0
- data/lib/browser/middleware/context/url_methods.rb +13 -0
- data/lib/browser/middleware/context.rb +20 -0
- data/lib/browser/middleware.rb +66 -0
- data/lib/browser/rails.rb +14 -0
- data/lib/browser/version.rb +8 -0
- data/lib/browser.rb +255 -0
- data/test/benchmark_test.rb +83 -0
- data/test/browser_test.rb +248 -0
- data/test/middleware_test.rb +50 -0
- data/test/sample_app.rb +31 -0
- data/test/test_helper.rb +20 -0
- data/test/ua.yml +122 -0
- data/test/unit/adobe_air_test.rb +13 -0
- data/test/unit/android_test.rb +93 -0
- data/test/unit/blackberry_test.rb +104 -0
- data/test/unit/bots_test.rb +116 -0
- data/test/unit/chrome_test.rb +56 -0
- data/test/unit/console_test.rb +67 -0
- data/test/unit/firefox_test.rb +37 -0
- data/test/unit/ie_test.rb +377 -0
- data/test/unit/ios_test.rb +139 -0
- data/test/unit/kindle_test.rb +37 -0
- data/test/unit/opera_test.rb +42 -0
- data/test/unit/windows_phone_test.rb +50 -0
- data/test/unit/windows_test.rb +60 -0
- metadata +240 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1f463a934b5cc3ec414a8debede9490463e3dcf8
|
4
|
+
data.tar.gz: 127527af01bb462ee962d38e916e16feb1b69f1e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: bf27a91d2597fbaa69aa7a8b07dc8e83af25653f8103d280e280a6bafbe747516ed9fec68448ceffd1ea21979ffc0124b57a302fe49aea7b25918320e2154bfa
|
7
|
+
data.tar.gz: ed779470b797788c4e4ffadda24a37723db85d79d3f1cc8e1b414891d0e1142c28d57808c778ff90aab5b75486966ab5b3ba83a942e76a8786628cc53d36ad84
|
data/.hound.yml
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
ClassLength:
|
2
|
+
Enabled: false
|
3
|
+
|
4
|
+
CyclomaticComplexity:
|
5
|
+
Enabled: false
|
6
|
+
|
7
|
+
Documentation:
|
8
|
+
Enabled: false
|
9
|
+
|
10
|
+
Encoding:
|
11
|
+
Enabled: false
|
12
|
+
|
13
|
+
FileName:
|
14
|
+
Enabled: false
|
15
|
+
|
16
|
+
IfUnlessModifier:
|
17
|
+
Enabled: false
|
18
|
+
|
19
|
+
MethodLength:
|
20
|
+
Enabled: false
|
21
|
+
|
22
|
+
ModuleFunction:
|
23
|
+
Enabled: false
|
24
|
+
|
25
|
+
OneLineConditional:
|
26
|
+
Enabled: false
|
27
|
+
|
28
|
+
ParameterLists:
|
29
|
+
Enabled: false
|
30
|
+
|
31
|
+
Proc:
|
32
|
+
Enabled: false
|
33
|
+
|
34
|
+
SingleLineBlockParams:
|
35
|
+
Enabled: false
|
36
|
+
|
37
|
+
VariableInterpolation:
|
38
|
+
Enabled: false
|
39
|
+
|
40
|
+
TrailingComma:
|
41
|
+
Enabled: false
|
42
|
+
|
43
|
+
WhileUntilModifier:
|
44
|
+
Enabled: false
|
45
|
+
|
46
|
+
PredicateName:
|
47
|
+
NamePrefixBlacklist:
|
48
|
+
- is_
|
49
|
+
|
50
|
+
StringLiterals:
|
51
|
+
EnforcedStyle: double_quotes
|
52
|
+
SupportedStyles:
|
53
|
+
- single_quotes
|
54
|
+
- double_quotes
|
55
|
+
|
56
|
+
DotPosition:
|
57
|
+
EnforcedStyle: leading
|
58
|
+
|
59
|
+
SpaceBeforeBlockBraces:
|
60
|
+
EnforcedStyle: space
|
61
|
+
|
62
|
+
SpaceInsideBlockBraces:
|
63
|
+
EnforcedStyle: no_space
|
64
|
+
|
65
|
+
DoubleNegation:
|
66
|
+
Enabled: false
|
67
|
+
|
68
|
+
SpaceInsideBlockBraces:
|
69
|
+
SpaceBeforeBlockParameters: false
|
70
|
+
|
71
|
+
LineLength:
|
72
|
+
Max: 130
|
73
|
+
|
74
|
+
RegexpLiteral:
|
75
|
+
MaxSlashes: 0
|
76
|
+
|
77
|
+
SpaceInsideHashLiteralBraces:
|
78
|
+
Enabled: false
|
79
|
+
|
80
|
+
PercentLiteralDelimiters:
|
81
|
+
PreferredDelimiters:
|
82
|
+
'%': '[]'
|
83
|
+
'%i': '[]'
|
84
|
+
'%q': '[]'
|
85
|
+
'%Q': '[]'
|
86
|
+
'%r': '[]'
|
87
|
+
'%s': '[]'
|
88
|
+
'%w': '[]'
|
89
|
+
'%W': '[]'
|
90
|
+
'%x': '[]'
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
ClassLength:
|
2
|
+
Enabled: false
|
3
|
+
|
4
|
+
CyclomaticComplexity:
|
5
|
+
Enabled: false
|
6
|
+
|
7
|
+
Documentation:
|
8
|
+
Enabled: false
|
9
|
+
|
10
|
+
Encoding:
|
11
|
+
Enabled: false
|
12
|
+
|
13
|
+
FileName:
|
14
|
+
Enabled: false
|
15
|
+
|
16
|
+
IfUnlessModifier:
|
17
|
+
Enabled: false
|
18
|
+
|
19
|
+
MethodLength:
|
20
|
+
Enabled: false
|
21
|
+
|
22
|
+
ModuleFunction:
|
23
|
+
Enabled: false
|
24
|
+
|
25
|
+
OneLineConditional:
|
26
|
+
Enabled: false
|
27
|
+
|
28
|
+
ParameterLists:
|
29
|
+
Enabled: false
|
30
|
+
|
31
|
+
Proc:
|
32
|
+
Enabled: false
|
33
|
+
|
34
|
+
SingleLineBlockParams:
|
35
|
+
Enabled: false
|
36
|
+
|
37
|
+
VariableInterpolation:
|
38
|
+
Enabled: false
|
39
|
+
|
40
|
+
TrailingComma:
|
41
|
+
Enabled: false
|
42
|
+
|
43
|
+
WhileUntilModifier:
|
44
|
+
Enabled: false
|
45
|
+
|
46
|
+
PredicateName:
|
47
|
+
NamePrefixBlacklist:
|
48
|
+
- is_
|
49
|
+
|
50
|
+
StringLiterals:
|
51
|
+
EnforcedStyle: double_quotes
|
52
|
+
SupportedStyles:
|
53
|
+
- single_quotes
|
54
|
+
- double_quotes
|
55
|
+
|
56
|
+
DotPosition:
|
57
|
+
EnforcedStyle: leading
|
58
|
+
|
59
|
+
SpaceBeforeBlockBraces:
|
60
|
+
EnforcedStyle: space
|
61
|
+
|
62
|
+
SpaceInsideBlockBraces:
|
63
|
+
EnforcedStyle: no_space
|
64
|
+
|
65
|
+
DoubleNegation:
|
66
|
+
Enabled: false
|
67
|
+
|
68
|
+
SpaceInsideBlockBraces:
|
69
|
+
SpaceBeforeBlockParameters: false
|
70
|
+
|
71
|
+
LineLength:
|
72
|
+
Max: 130
|
73
|
+
|
74
|
+
RegexpLiteral:
|
75
|
+
MaxSlashes: 0
|
76
|
+
|
77
|
+
SpaceInsideHashLiteralBraces:
|
78
|
+
Enabled: false
|
79
|
+
|
80
|
+
PercentLiteralDelimiters:
|
81
|
+
PreferredDelimiters:
|
82
|
+
'%': '[]'
|
83
|
+
'%i': '[]'
|
84
|
+
'%q': '[]'
|
85
|
+
'%Q': '[]'
|
86
|
+
'%r': '[]'
|
87
|
+
'%s': '[]'
|
88
|
+
'%w': '[]'
|
89
|
+
'%W': '[]'
|
90
|
+
'%x': '[]'
|
data/.travis.yml
ADDED
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# Contributing
|
2
|
+
|
3
|
+
## Issues
|
4
|
+
|
5
|
+
If you want to request a feature or report a bug, please use the following template.
|
6
|
+
|
7
|
+
```markdown
|
8
|
+
## Description
|
9
|
+
|
10
|
+
[Add feature/bug description here]
|
11
|
+
|
12
|
+
## How to reproduce
|
13
|
+
|
14
|
+
[Add steps on how to reproduce this issue]
|
15
|
+
|
16
|
+
## What do you expect
|
17
|
+
|
18
|
+
[Describe what do you expect to happen]
|
19
|
+
|
20
|
+
## What happened instead
|
21
|
+
|
22
|
+
[Describe the actual results]
|
23
|
+
|
24
|
+
## Gem version:
|
25
|
+
|
26
|
+
Browser version: [Add browser gem version here]
|
27
|
+
|
28
|
+
## Report
|
29
|
+
|
30
|
+
Visit <http://user-agent.herokuapp.com> and paste the URL here.
|
31
|
+
```
|
32
|
+
|
33
|
+
## Writing code
|
34
|
+
|
35
|
+
Once you've made your great commits (include tests, please):
|
36
|
+
|
37
|
+
1. [Fork](http://help.github.com/forking/) browser
|
38
|
+
2. Create a topic branch - `git checkout -b my_branch`
|
39
|
+
3. Push to your branch - `git push origin my_branch`
|
40
|
+
4. [Create an Issue](http://github.com/fnando/browser/issues) with a link to your branch
|
41
|
+
5. That's it!
|
42
|
+
|
43
|
+
Please respect the indentation rules and code style.
|
44
|
+
And use 2 spaces, not tabs. And don't touch the versioning thing.
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
The MIT License
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
'Software'), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
17
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
18
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
19
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
20
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,125 @@
|
|
1
|
+
# Browser
|
2
|
+
|
3
|
+
[![Travis-CI](https://travis-ci.org/dirk/browser2.png)](https://travis-ci.org/dirk/browser2)
|
4
|
+
|
5
|
+
Performance-optimized fork of the [`browser`](https://github.com/fnando/browser) Ruby gem.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
```bash
|
10
|
+
gem install browser
|
11
|
+
```
|
12
|
+
|
13
|
+
## Usage
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
require 'rubygems'
|
17
|
+
require 'browser2'
|
18
|
+
|
19
|
+
browser = Browser.new ua: 'some string', accept_language: 'en-us'
|
20
|
+
browser.name # readable browser name
|
21
|
+
browser.version # major version number
|
22
|
+
browser.full_version
|
23
|
+
browser.safari?
|
24
|
+
browser.opera?
|
25
|
+
browser.chrome?
|
26
|
+
browser.chrome_os?
|
27
|
+
browser.mobile?
|
28
|
+
browser.tablet?
|
29
|
+
browser.console?
|
30
|
+
browser.firefox?
|
31
|
+
browser.ie?
|
32
|
+
browser.ie?(6) # detect specific IE version
|
33
|
+
browser.edge? # Newest MS browser
|
34
|
+
browser.modern? # Webkit, Firefox 17+, IE 9+ and Opera 12+
|
35
|
+
browser.platform # return :mac, :windows, :linux or :other
|
36
|
+
browser.ios? # detect iOS
|
37
|
+
browser.ios?(9) # detect specific iOS version
|
38
|
+
browser.mac?
|
39
|
+
browser.windows?
|
40
|
+
browser.windows_x64?
|
41
|
+
browser.linux?
|
42
|
+
browser.blackberry?
|
43
|
+
browser.blackberry?(10) # detect specific BlackBerry version
|
44
|
+
browser.bot?
|
45
|
+
browser.search_engine?
|
46
|
+
browser.phantom_js?
|
47
|
+
browser.quicktime?
|
48
|
+
browser.core_media?
|
49
|
+
browser.silk?
|
50
|
+
browser.android?
|
51
|
+
browser.android?(4.2) # detect Android Jelly Bean 4.2
|
52
|
+
browser.known? # has the browser been successfully detected?
|
53
|
+
browser.meta # an array with several attributes
|
54
|
+
browser.to_s # the meta info joined by space
|
55
|
+
```
|
56
|
+
|
57
|
+
See the [tests](https://github.com/dirk/browser2/blob/master/test/browser_test.rb) and [implementation](https://github.com/dirk/browser2/blob/master/lib/browser.rb) for more examples.
|
58
|
+
|
59
|
+
### Integrations
|
60
|
+
|
61
|
+
Browser comes out-of-the-box with helpers for use in Ruby on Rails applications and Rack servers. See [`doc/rails_and_rack.md`](doc/rails_and_rack.md) for more details.
|
62
|
+
|
63
|
+
### What defines a modern browser?
|
64
|
+
|
65
|
+
The current rules that define a modern browser are pretty loose:
|
66
|
+
|
67
|
+
* Webkit
|
68
|
+
* IE9+
|
69
|
+
* Microsoft Edge
|
70
|
+
* Firefox 17+
|
71
|
+
* Firefox Tablet 14+
|
72
|
+
* Opera 12+
|
73
|
+
|
74
|
+
You can define your own rules. A rule must be a proc/lambda or any object that implements the method === and accepts the browser object. To redefine all rules, clear the existing rules before adding your own.
|
75
|
+
|
76
|
+
```ruby
|
77
|
+
# Only Chrome Canary is considered modern.
|
78
|
+
Browser.modern_rules.clear
|
79
|
+
Browser.modern_rules << -> b { b.chrome? && b.version.to_i >= 37 }
|
80
|
+
```
|
81
|
+
|
82
|
+
### Internet Explorer
|
83
|
+
|
84
|
+
Internet Explorer has a compatibility view mode that allows newer versions (IE8+) to run as an older version. Browser will always return the navigator version, ignoring the compatibility view version, when defined. If you need to get the engine's version, you have to use `Browser#msie_version` and `Browser#msie_full_version`.
|
85
|
+
|
86
|
+
So, let's say an user activates compatibility view in a IE11 browser. This is what you'll get:
|
87
|
+
|
88
|
+
```ruby
|
89
|
+
browser.version
|
90
|
+
#=> 11
|
91
|
+
|
92
|
+
browser.full_version
|
93
|
+
#=> 11.0
|
94
|
+
|
95
|
+
browser.msie_version
|
96
|
+
#=> 7
|
97
|
+
|
98
|
+
browser.msie_full_version
|
99
|
+
#=> 7.0
|
100
|
+
|
101
|
+
browser.compatibility_view?
|
102
|
+
#=> true
|
103
|
+
|
104
|
+
browser.modern?
|
105
|
+
#=> false
|
106
|
+
```
|
107
|
+
|
108
|
+
This behavior changed in `v1.0.0`; previously there wasn't a way of getting the real browser version.
|
109
|
+
|
110
|
+
### Bots
|
111
|
+
|
112
|
+
Browser used to detect empty user agents as bots, but this behavior has changed. If you want to bring this detection back, you can activate it through the following call:
|
113
|
+
|
114
|
+
```ruby
|
115
|
+
Browser::Bots.detect_empty_ua!
|
116
|
+
```
|
117
|
+
|
118
|
+
## Authors
|
119
|
+
|
120
|
+
* [Dirk Gadsden](https://dirk.to) (`browser2` maintainer)
|
121
|
+
* [Nando Vieira](http://nandovieira.com.br) (original author of `browser`)
|
122
|
+
|
123
|
+
## License
|
124
|
+
|
125
|
+
Licensed under the MIT license. See [LICENSE](LICENSE) for details.
|
data/Rakefile
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
require "bundler"
|
2
|
+
require "bundler/setup"
|
3
|
+
Bundler::GemHelper.install_tasks
|
4
|
+
|
5
|
+
require "rake/testtask"
|
6
|
+
|
7
|
+
Rake::TestTask.new(:spec) do |t|
|
8
|
+
t.libs << "lib"
|
9
|
+
t.libs << "test"
|
10
|
+
# t.verbose = true
|
11
|
+
t.ruby_opts = %w[-rubygems]
|
12
|
+
|
13
|
+
t.test_files = FileList["test/**/*_test.rb"]
|
14
|
+
.exclude('test/benchmark_test.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
Rake::TestTask.new('spec:benchmark') do |t|
|
18
|
+
t.libs << 'test'
|
19
|
+
t.test_files = FileList.new 'test/benchmark_test.rb'
|
20
|
+
end
|
21
|
+
|
22
|
+
desc "Run specs against all gemfiles"
|
23
|
+
task "spec:all" do
|
24
|
+
%w[
|
25
|
+
Gemfile
|
26
|
+
gemfiles/rails3.gemfile
|
27
|
+
].each do |gemfile|
|
28
|
+
puts "=> Running with Gemfile: #{gemfile}"
|
29
|
+
system "BUNDLE_GEMFILE=#{gemfile} rake spec"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
task :default => "spec"
|
data/browser2.gemspec
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path('../lib', __FILE__)
|
3
|
+
require 'browser/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'browser2'
|
7
|
+
s.version = Browser::Version::STRING
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ['Dirk Gadsden', 'Nando Vieira']
|
10
|
+
s.email = ['dirk@esherido.com', 'fnando.vieira@gmail.com']
|
11
|
+
s.homepage = 'http://github.com/dirk/browser2'
|
12
|
+
s.summary = 'Optimized browser user agent detection library.'
|
13
|
+
s.description = s.summary
|
14
|
+
s.license = 'MIT'
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split "\n"
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split "\n"
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ['lib']
|
20
|
+
|
21
|
+
# s.post_install_message = [
|
22
|
+
# "",
|
23
|
+
# "#################### WARNING ##############################" ,
|
24
|
+
# "# #" ,
|
25
|
+
# "# Internet Explorer detection has changed on v1.0.0+. #" ,
|
26
|
+
# "# If this is important for you, please read #" ,
|
27
|
+
# "# https://github.com/fnando/browser#internet-explorer #" ,
|
28
|
+
# "# #" ,
|
29
|
+
# "###########################################################" ,
|
30
|
+
# "\n"
|
31
|
+
# ].join("\n")
|
32
|
+
|
33
|
+
s.add_dependency 'multi_json', '~> 1.11'
|
34
|
+
|
35
|
+
s.add_development_dependency "bundler", ">= 0"
|
36
|
+
s.add_development_dependency "rake"
|
37
|
+
s.add_development_dependency "rails"
|
38
|
+
s.add_development_dependency "rack-test"
|
39
|
+
s.add_development_dependency "minitest"
|
40
|
+
s.add_development_dependency "minitest-utils"
|
41
|
+
s.add_development_dependency "pry-meta"
|
42
|
+
end
|
data/config.ru
ADDED
data/data/bots.json
ADDED
@@ -0,0 +1,176 @@
|
|
1
|
+
{
|
2
|
+
"360Spider": "360Spider",
|
3
|
+
"AddThis": "AddThis",
|
4
|
+
"ADmantX": "ADmantX Platform Semantic Analyzer",
|
5
|
+
"AdsBot-Google": "Google Adwords",
|
6
|
+
"AhrefsBot": "Ahrefs backlinks research tool",
|
7
|
+
"alexa": "Alexa Crawler",
|
8
|
+
"Apache-HttpClient": "Java http library",
|
9
|
+
"ApacheBench": "ApacheBench (ab)",
|
10
|
+
"AppEngine-Google": "Google App Engine",
|
11
|
+
"Applebot": "Apple Bot",
|
12
|
+
"Ask Jeeves": "Ask Jeeves",
|
13
|
+
"AsyncHttpClient": "Java http and WebSocket client library",
|
14
|
+
"awe.sm": "Awe.sm URL expander",
|
15
|
+
"Baidu": "baidu",
|
16
|
+
"Baiduspider": "Chinese search engine",
|
17
|
+
"bingbot": "Microsoft bing bot",
|
18
|
+
"bitlybot": "bit.ly bot",
|
19
|
+
"BLEXBot": "webmeup-crawler.com",
|
20
|
+
"bot@linkfluence.net": "Linkfluence bot",
|
21
|
+
"BuiBui-CheckBot": "email: buibui[at]dadapro[dot]com",
|
22
|
+
"Butterfly": "Topsy Labs",
|
23
|
+
"buzztalk": "buzztalk",
|
24
|
+
"check_http": "Nagios monitor",
|
25
|
+
"CMRadar/0.1": "CMRadar/0.1",
|
26
|
+
"ColdFusion": "ColdFusion http library",
|
27
|
+
"Crowsnest": "crowsnest.tv news portal bot",
|
28
|
+
"curl": "curl unix CLI http client",
|
29
|
+
"Daumoa": "Korean portal and search engine indexing bot",
|
30
|
+
"DAP/NetHTTP": "DAP/NetHTTP",
|
31
|
+
"developers.google.com/+/web/snippet/": "Google Plus",
|
32
|
+
"DigitalPersona Fingerprint Software": "HP Fingerprint scanner",
|
33
|
+
"Domain Re-Animator Bot": "Domain Re-Animator Bot (http://domainreanimator.com) - support@domainreanimator.com",
|
34
|
+
"DotBot": "Dot Bot",
|
35
|
+
"DuckDuckBot": "Duck Duck Go",
|
36
|
+
"Embedly": "Embedly",
|
37
|
+
"EOAAgent": "EOAAgent",
|
38
|
+
"EventMachine HttpClient": "Ruby http library",
|
39
|
+
"EvriNid": "Evri bot",
|
40
|
+
"Exabot": "Exalead's bot",
|
41
|
+
"ExaleadCloudView": "ExaleadCloudView",
|
42
|
+
"facebookexternalhit": "Facebook Bot",
|
43
|
+
"Facebot": "Facebook Bot",
|
44
|
+
"FeedBurner": "RSS bot",
|
45
|
+
"Feedfetcher-Google": "Google Feedfetcher",
|
46
|
+
"FlipboardProxy": "FlipboardProxy",
|
47
|
+
"Genieo": "Genieo Web filter bot",
|
48
|
+
"getprismatic.com": "getprismatic.com",
|
49
|
+
"Gigabot": "Gigabot spider",
|
50
|
+
"Go http package": "Go http library",
|
51
|
+
"Google Web Preview": "Google Instant Previews crawler",
|
52
|
+
"Google Page Speed Insights": "Google Page Speed Insights",
|
53
|
+
"Googlebot": "Google spider",
|
54
|
+
"GrapeshotCrawler": "Mozilla/5.0 (compatible; GrapeshotCrawler/2.0; +http://www.grapeshot.co.uk/crawler.php)",
|
55
|
+
"Hatena::Bookmark": "Hatena::Bookmark",
|
56
|
+
"heritrix": "heritrix",
|
57
|
+
"HTMLParser": "HTMLParser",
|
58
|
+
"HTTPClient": "HTTPClient",
|
59
|
+
"https://developers.google.com/+/web/snippet": "Google+ Snippet Fetcher",
|
60
|
+
"HTTP_Request2": "HTTP_Request2",
|
61
|
+
"HubSpot Connect": "HubSpot Connect",
|
62
|
+
"ia_archiver(OS-Wayback)": "ia_archiver(OS-Wayback)",
|
63
|
+
"iCoreService": "iCoreService",
|
64
|
+
"InAGist": "URL resolver",
|
65
|
+
"Insieve Bot": "Insieve Bot",
|
66
|
+
"InsieveBot": "InsieveBot",
|
67
|
+
"Instapaper": "Instapaper",
|
68
|
+
"Insitesbot": "Insitesbot",
|
69
|
+
"IstellaBot": "IstellaBot",
|
70
|
+
"jack": "jack",
|
71
|
+
"Jakarta Commons-HttpClient": "Jakarta Commons-HttpClient",
|
72
|
+
"Jakarta Commons": "Jakarta Commons HttpClient",
|
73
|
+
"Java": "Generic Java http library",
|
74
|
+
"Jetslide": "Jetslide",
|
75
|
+
"JS-Kit": "URL resolver",
|
76
|
+
"Kimengi/nineconnections.com": "Kimengi/nineconnections.com",
|
77
|
+
"Kimengi": "nineconnections.com bot",
|
78
|
+
"knows.is": "knows.is",
|
79
|
+
"kraken": "kraken",
|
80
|
+
"Laconica": "Laconica",
|
81
|
+
"libwww-perl": "Perl client-server library loved by script kids",
|
82
|
+
"linkdexbot": "Linkdex Bot",
|
83
|
+
"LinkedInBot": "LinkedIn",
|
84
|
+
"LinksCrawler": "LinksCrawler",
|
85
|
+
"Linode": "Linode Longview",
|
86
|
+
"Lipperhey": "Lipperhey",
|
87
|
+
"Livelapbot": "Livelapbot",
|
88
|
+
"LoadTimeBot": "Load Time Bot",
|
89
|
+
"LongURL": "URL expander service",
|
90
|
+
"Lumibot": "Lumibot",
|
91
|
+
"lwp-trivial": "Another Perl library loved by script kids",
|
92
|
+
"magpie-crawler": "magpie-crawler",
|
93
|
+
"Mail.RU_Bot": "Mail.ru Bot",
|
94
|
+
"Mediapartners-Google": "Google Adsense bot",
|
95
|
+
"MegaIndex.ru": "Mozilla/5.0 (compatible; MegaIndex.ru/2.0; +https://www.megaindex.ru/?tab=linkAnalyze)",
|
96
|
+
"MetaURI": "URI meta information extractor bot",
|
97
|
+
"MFE_expand": "Mcafee spider",
|
98
|
+
"MJ12bot": "Majestic-12 spider",
|
99
|
+
"MojeekBot": "Mojeek UK search crawler",
|
100
|
+
"msnbot": "Microsoft bot",
|
101
|
+
"netState": "netEstate NE Crawler",
|
102
|
+
"Netvibes": "Personalized dashboard bot",
|
103
|
+
"NewRelicPinger": "NewRelic monitor",
|
104
|
+
"newsme": "newsme",
|
105
|
+
"NING": "NING - Yet Another Twitter Swarmer",
|
106
|
+
"Nutch": "Apache search spider",
|
107
|
+
"Panopta": "Monitoring service",
|
108
|
+
"PaperLiBot": "PaperLi is another content curation service",
|
109
|
+
"peerindex": "peerindex",
|
110
|
+
"PercolateCrawler": "PercolateCrawler",
|
111
|
+
"PhantomJS": "PhantomJS",
|
112
|
+
"Pingdom": "Pingdom monitoring",
|
113
|
+
"Pinterest": "Pinterest",
|
114
|
+
"publiclibraryarchive.org": "publiclibraryarchive.org",
|
115
|
+
"PycURL": "Python http library",
|
116
|
+
"Python-httplib2": "Python-httplib2",
|
117
|
+
"python-requests": "python-requests",
|
118
|
+
"Python-urllib": "Python http library",
|
119
|
+
"QuerySeeker": "QuerySeekerSpider ( http://queryseeker.com/bot.html )",
|
120
|
+
"QuickLook": "QuickLook",
|
121
|
+
"Readability": "Readability",
|
122
|
+
"RebelMouse": "RebelMouse",
|
123
|
+
"redditbot": "Reddit Bot",
|
124
|
+
"RelateIQ": "RelateIQ",
|
125
|
+
"Riddler": "Riddler Bot",
|
126
|
+
"rogerbot": "SeoMoz spider",
|
127
|
+
"Ruby/1.9.3": "Ruby/1.9.3",
|
128
|
+
"Ruby": "Ruby",
|
129
|
+
"Scrapy": "Scrapy",
|
130
|
+
"Screaming Frog SEO Spider": "Screaming Frog SEO Spider",
|
131
|
+
"SearchmetricsBot": "SearchmetricsBot",
|
132
|
+
"SemrushBot": "SEO analysis bot",
|
133
|
+
"SeznamBot": "SeznamBot",
|
134
|
+
"ShopWiki": "ShopWiki",
|
135
|
+
"ShortLinkTranslate": "Link shortener",
|
136
|
+
"ShowyouBot": "Showyou iOS app spider",
|
137
|
+
"Siege": "Joe Dog Siege",
|
138
|
+
"SiteUptime": "Site monitoring services",
|
139
|
+
"Slack": "Slackbot-LinkExpanding",
|
140
|
+
"Slurp": "Yahoo spider",
|
141
|
+
"Sogou": "Chinese search engine",
|
142
|
+
"spider": "generic web spider",
|
143
|
+
"Spinn3r": "Spinn3r aggregator",
|
144
|
+
"StatusCake": "StatusCake",
|
145
|
+
"Test Certificate Info": "C http library?",
|
146
|
+
"TinEye": "TinEye-bot/0.51 (see http://www.tineye.com/crawler.html)",
|
147
|
+
"trendictionbot": "trendiction search",
|
148
|
+
"TurnitinBot": "TurnitinBot",
|
149
|
+
"TweetmemeBot": "TweetMeMe Crawler",
|
150
|
+
"Twikle": "Social web search bot",
|
151
|
+
"TwitJobSearch": "TwitJobSearch",
|
152
|
+
"Twitmunin": "Twitmunin",
|
153
|
+
"Twitterbot": "Twitter URL expander",
|
154
|
+
"Twurly": "Twurly",
|
155
|
+
"Typhoeus": "Typhoeus",
|
156
|
+
"UnwindFetch": "Gnip URL expander",
|
157
|
+
"UnwindFetchor": "Gnip crawler",
|
158
|
+
"Vagabondo": "Vagabondo",
|
159
|
+
"VB Project": "Visual Basic",
|
160
|
+
"vkShare": "VKontake Sharer",
|
161
|
+
"VoilaBot": "VoilaBot",
|
162
|
+
"Webscout": "Webscout",
|
163
|
+
"Wget": "wget unix CLI http client",
|
164
|
+
"WordPress": "WordPress spider",
|
165
|
+
"Wormly": "WormlyBot",
|
166
|
+
"Xenu Link Sleuth": "Xenu Link Sleuth",
|
167
|
+
"XoviBot": "XoviBot",
|
168
|
+
"YandexBot": "Yandex spider",
|
169
|
+
"YandexDirect": "Yandex Direct spider",
|
170
|
+
"YandexMetrika": "Yandex Metrika spider",
|
171
|
+
"YOURLS": "YOURLS",
|
172
|
+
"zelist.ro": "feed parser",
|
173
|
+
"ZIBB": "ZIBB spider",
|
174
|
+
"ZyBorg": "Zyborg? Hmmm....",
|
175
|
+
"StructuredDataTestingTool": "Google-StructuredDataTestingTool"
|
176
|
+
}
|