browser 3.0.1 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 53decb60a500c2a7d9aa08ecb38764898be5deb813849131ef883e9944c6951e
4
- data.tar.gz: 5aad1b2edf63615f946c20b14dc292a7f172a6379baceb6eaeb83205f5bb04fc
3
+ metadata.gz: d83e06fd8c03def4d4c2af17fbbd94580594eeb689aa6f4d0fda3d7c94be4c8c
4
+ data.tar.gz: 4e8b416860701c61d4a1cf40d2a51316c28431e60d24716d8092746faff88c70
5
5
  SHA512:
6
- metadata.gz: 0fe86685cdf72e8706872ce2e64534460bd0989123b896aa6d3430cf6c3ccb9676fa782553ff3ff3aa7f5adc3d60e6b92214721551972798a4a1f761ba57a82c
7
- data.tar.gz: d5749c3672b07fa937958586deb29f6447087f7a7fdd169323e35921de42260292ae7098f765119cb2ce9fdd47c83acb54a86ea2b57f652ffea46ca6743d9bc8
6
+ metadata.gz: 86f29ee60621611d8abb82837eac44594b50739e7b39991bd8ce73c7b701f7630e314d3ac22fdf80567d3c2a44985ad4a632204d14805d7015e18b856d357dfc
7
+ data.tar.gz: 9bb2826023b3e7d6b7a7ca7c5f0d14b0871bcb39764d3c3c05ecba7784cc4458949533dfc16cc3de7b5f3844faf254d6faf127613ca27547d52ea07040e7ccfa
@@ -27,4 +27,4 @@
27
27
 
28
28
  ## Report
29
29
 
30
- [Visit <http://user-agent.herokuapp.com> and paste the URL here]
30
+ [Visit <https://user-agent.herokuapp.com> and paste the URL here]
data/.gitignore CHANGED
@@ -4,3 +4,4 @@ doc
4
4
  log
5
5
  *.lock
6
6
  bin/
7
+ .bundle
@@ -0,0 +1 @@
1
+ *.yml
@@ -27,3 +27,12 @@ Style/Alias:
27
27
 
28
28
  Lint/RedundantCopDisableDirective:
29
29
  Enabled: false
30
+
31
+ Metrics/AbcSize:
32
+ Enabled: false
33
+
34
+ Metrics/CyclomaticComplexity:
35
+ Enabled: false
36
+
37
+ Metrics/PerceivedComplexity:
38
+ Enabled: false
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  language: ruby
3
- sudo: false
4
3
  cache: bundler
5
4
  rvm:
6
- - 2.6.0
7
- - 2.5.0
5
+ - 2.7
6
+ - 2.6
7
+ - 2.5
8
8
  gemfile:
9
9
  - Gemfile
10
10
  - gemfiles/rails5.gemfile
@@ -2,7 +2,35 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
- - Nothing yet.
5
+ - Fix Chrome Lighthouse detection.
6
+ - Add Skype to bot list.
7
+
8
+ ## 4.1.0
9
+
10
+ - Add Samsung browser.
11
+ - Add Google Image Proxy to the bot list.
12
+ - Add The Knowledge AI bot to the bot list.
13
+ - Add Go HttpClient to the bot list.
14
+ - Fix Microsoft Edge detection on Android and iOS.
15
+ - Fix MicroMessenger detection on Android
16
+
17
+ ## 4.0.0
18
+
19
+ - Add Chrome Lighthouse to bot list.
20
+ - Add SeobilityBot to the bot list.
21
+ - Detect Mac-based platforms differently, depending on the version; "Mac OS X"
22
+ will be returned for versions prior to 10.12, and "macOS" for newer versions.
23
+ - Remove `Browser.modern_rules` and `Browser::Base#modern?`.
24
+ - Add DuckDuckGo browser.
25
+
26
+ # 3.0.3
27
+
28
+ - Deprecate `Browser.modern_rules` and `Browser::Base#modern?`. Theses methods
29
+ will be removed on the next major released, or by June 1st 2020.
30
+
31
+ ## 3.0.2
32
+
33
+ - Remove .bundle directory from package.
6
34
 
7
35
  ## 3.0.1
8
36
 
@@ -13,23 +41,32 @@
13
41
  - Add ArchiveTeam's ArchiveBot to the bot list.
14
42
  - Fix QQ Browser detection.
15
43
  - Update modern rules.
16
- - You can now define new bot matchers by adding a callable object to `Browser::Bot.matchers`.
44
+ - You can now define new bot matchers by adding a callable object to
45
+ `Browser::Bot.matchers`.
17
46
  - Fix `browser.yandex?` and `browser.sputnik?`.
18
- - [BREAKING CHANGE] Removed methods to enable the bot's empty user agent detection (`Browser::Bot.detect_empty_ua!` and `Browser::Bot.detect_empty_ua?`).
19
- - [BREAKING CHANGE] Bot detection is now more aggressive by default. It matches empty user agents, anything that matches `crawl|fetch|search|monitoring|spider|bot`, and anything listed under https://github.com/fnando/browser/blob/master/bots.yml.
47
+ - [BREAKING CHANGE] Removed methods to enable the bot's empty user agent
48
+ detection (`Browser::Bot.detect_empty_ua!` and
49
+ `Browser::Bot.detect_empty_ua?`).
50
+ - [BREAKING CHANGE] Bot detection is now more aggressive by default. It matches
51
+ empty user agents, anything that matches
52
+ `crawl|fetch|search|monitoring|spider|bot`, and anything listed under
53
+ https://github.com/fnando/browser/blob/master/bots.yml.
20
54
  - Add Jaunt to the bot list.
21
55
 
22
56
  ## 2.7.1
23
57
 
24
- - Handle Snapchat user agents that have a space or an empty string instead of a slash before the version.
58
+ - Handle Snapchat user agents that have a space or an empty string instead of a
59
+ slash before the version.
25
60
  - Fix iOS 10+ version detection.
26
- - Add fallback versions for instagram and snapchat to avoid NoMethodErrors on unexpected user agents.
61
+ - Add fallback versions for instagram and snapchat to avoid NoMethodErrors on
62
+ unexpected user agents.
27
63
 
28
64
  ## 2.7.0
29
65
 
30
66
  - Add more Slack bots.
31
67
  - Handle instagram user agents that have a slash instead of a space.
32
- - Add `Browser::Bot.why?(ua)` to help debugging why a user agent is considered bot.
68
+ - Add `Browser::Bot.why?(ua)` to help debugging why a user agent is considered
69
+ bot.
33
70
  - Promote Snapchat to a browser (it was detected as a bot previously).
34
71
  - Detect Edge based on Chrome correctly.
35
72
  - Improve Yandex detection.
@@ -45,7 +82,8 @@
45
82
 
46
83
  - Add GarlikCrawler, ImplisenseBot and WikiDo bots.
47
84
  - Add Mastodon URL expander bot.
48
- - Add eZ Publish Link Validator, GermCrawler, Pu_iN Crawler, ZoomBot, and ZoominfoBot bots.
85
+ - Add eZ Publish Link Validator, GermCrawler, Pu_iN Crawler, ZoomBot, and
86
+ ZoominfoBot bots.
49
87
  - Add Datanyze bot.
50
88
  - Add support for Instagram in-app browser.
51
89
  - Add Updown.io monitor bot.
@@ -67,13 +105,13 @@
67
105
  - Add Jooble bot.
68
106
  - Add Fyre bot.
69
107
  - Drop Rails 4 official support.
70
- - Fix accept-language sorting (If HTTP-header has value `en,fr`—without qualities—the first language should be `en` instead of `fr`).
108
+ - Fix accept-language sorting (If HTTP-header has value `en,fr`—without
109
+ qualities—the first language should be `en` instead of `fr`).
71
110
  - Ignore malformed strings when comparing versions.
72
111
  - Fix Facebook detection on newer apps.
73
112
  - Change precedence for bot detection when common libs are used.
74
113
  - Add Yandex's search browser to the exception list.
75
114
 
76
-
77
115
  ## v2.5.3
78
116
 
79
117
  - Add Google Site Verification to the bot list.
@@ -114,8 +152,10 @@
114
152
  - Add Google Drive API, Proximic Spider, NewRelic pinger and SocialRank bots.
115
153
  - Add Pinboard in-app browser to the bot exception list.
116
154
  - All browser detection methods can now compare versions.
117
- - All platform detection methods can now compare versions (except `#linux?` and `#firefox_os?`).
118
- - Add `browser/aliases`, so you can have methods on the base object (e.g. `browser.mobile?`). See README for instructions.
155
+ - All platform detection methods can now compare versions (except `#linux?` and
156
+ `#firefox_os?`).
157
+ - Add `browser/aliases`, so you can have methods on the base object (e.g.
158
+ `browser.mobile?`). See README for instructions.
119
159
  - Remove official support for Rails 3 and Ruby 2.1.
120
160
 
121
161
  ## v2.3.0
@@ -146,7 +186,8 @@
146
186
 
147
187
  ## v2.0.3
148
188
 
149
- - Fix issue with version detection when no actual version is provided (i.e. the user agent doesn't have any version information).
189
+ - Fix issue with version detection when no actual version is provided (i.e. the
190
+ user agent doesn't have any version information).
150
191
 
151
192
  ## v2.0.2
152
193
 
@@ -159,9 +200,12 @@
159
200
 
160
201
  ## v2.0.0
161
202
 
162
- - `Browser#platform` now returns instance of `Browser::Platform`, instead of a `String`. It contains information about the platform (software).
163
- - `Browser#device` was added. It returns information about the device (hardware).
164
- - `Browser#accept_language` now returns a list of `Browser::AcceptLanguage` objects.
203
+ - `Browser#platform` now returns instance of `Browser::Platform`, instead of a
204
+ `String`. It contains information about the platform (software).
205
+ - `Browser#device` was added. It returns information about the device
206
+ (hardware).
207
+ - `Browser#accept_language` now returns a list of `Browser::AcceptLanguage`
208
+ objects.
165
209
  - `Browser#bot` now returns a `Browser::Bot` instance.
166
210
  - Safari running as web app mode is not recognized as Safari anymore.
167
211
  - ruby-2.3+ will always activate frozen strings.
data/README.md CHANGED
@@ -25,6 +25,7 @@ browser = Browser.new("Some User Agent", accept_language: "en-us")
25
25
  browser.bot?
26
26
  browser.chrome?
27
27
  browser.core_media?
28
+ browser.duck_duck_go?
28
29
  browser.edge? # Newest MS browser
29
30
  browser.electron? # Electron Framework
30
31
  browser.firefox?
@@ -34,7 +35,6 @@ browser.ie?(6) # detect specific IE version
34
35
  browser.ie?([">8", "<10"]) # detect specific IE (IE9).
35
36
  browser.known? # has the browser been successfully detected?
36
37
  browser.meta # an array with several attributes
37
- browser.modern? # Webkit, Firefox 17+, IE 9+ and Opera 12+
38
38
  browser.name # readable browser name
39
39
  browser.nokia?
40
40
  browser.opera?
@@ -43,6 +43,7 @@ browser.phantom_js?
43
43
  browser.quicktime?
44
44
  browser.safari?
45
45
  browser.safari_webapp_mode?
46
+ browser.samsung_browser?
46
47
  browser.to_s # the meta info joined by space
47
48
  browser.uc_browser?
48
49
  browser.version # major version number
@@ -145,23 +146,26 @@ browser.mobile? #=> false
145
146
  - For a list of device detections, check [lib/browser/device.rb](https://github.com/fnando/browser/blob/master/lib/browser/device.rb)
146
147
  - For a list of bot detections, check [bots.yml](https://github.com/fnando/browser/blob/master/bots.yml)
147
148
 
148
- ### What defines a modern browser?
149
+ ### Detecting modern browsers
149
150
 
150
- The current rules that define a modern browser are pretty loose.
151
-
152
- * Chrome 65+
153
- * Safari 10+
154
- * Firefox 52+
155
- * IE11+
156
- * Microsoft Edge 39+
157
- * Opera 50+
158
-
159
- 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.
151
+ To detect whether a browser can be considered as modern or not, create a method that abstracts your versioning constraints. The following example will consider any of the following browsers as a modern:
160
152
 
161
153
  ```ruby
162
- # Only Google Chrome 79+ is considered modern.
163
- Browser.modern_rules.clear
164
- Browser.modern_rules << -> b { b.chrome? && b.version.to_i >= 79 }
154
+ # Expects an Browser instance,
155
+ # like in `Browser.new(user_agent, accept_language: language)`.
156
+ def modern_browser?(browser)
157
+ [
158
+ browser.chrome?(">= 65"),
159
+ browser.safari?(">= 10"),
160
+ browser.firefox?(">= 52"),
161
+ browser.ie?(">= 11") && !browser.compatibility_view?,
162
+ browser.edge?(">= 15"),
163
+ browser.opera?(">= 50"),
164
+ browser.facebook?
165
+ && browser.safari_webapp_mode?
166
+ && browser.webkit_full_version.to_i >= 602
167
+ ].any?
168
+ end
165
169
  ```
166
170
 
167
171
  ### Rails integration
@@ -240,9 +244,6 @@ browser.msie_full_version
240
244
 
241
245
  browser.compatibility_view?
242
246
  #=> true
243
-
244
- browser.modern?
245
- #=> false
246
247
  ```
247
248
 
248
249
  This behavior changed in `v1.0.0`; previously there wasn't a way of getting the real browser version.
@@ -298,7 +299,7 @@ You can use the `Browser::Middleware` to redirect user agents.
298
299
 
299
300
  ```ruby
300
301
  use Browser::Middleware do
301
- redirect_to "/upgrade" unless browser.modern?
302
+ redirect_to "/upgrade" if browser.ie?
302
303
  end
303
304
  ```
304
305
 
@@ -306,17 +307,7 @@ If you're using Rails, you can use the route helper methods. Just add something
306
307
 
307
308
  ```ruby
308
309
  Rails.configuration.middleware.use Browser::Middleware do
309
- redirect_to upgrade_path unless browser.modern?
310
- end
311
- ```
312
-
313
- Notice that you can have multiple conditionals.
314
-
315
- ```ruby
316
- Rails.configuration.middleware.use Browser::Middleware do
317
- next if browser.bot.search_engine?
318
- redirect_to upgrade_path(browser: "oldie") if browser.ie? && !browser.modern?
319
- redirect_to upgrade_path(browser: "oldfx") if browser.firefox? && !browser.modern?
310
+ redirect_to upgrade_path if browser.ie?
320
311
  end
321
312
  ```
322
313
 
@@ -324,25 +315,10 @@ If you need access to the `Rack::Request` object (e.g. to exclude a path), you c
324
315
 
325
316
  ```ruby
326
317
  Rails.configuration.middleware.use Browser::Middleware do
327
- redirect_to upgrade_path unless browser.modern? || request.env["PATH_INFO"] == "/exclude_me"
318
+ redirect_to upgrade_path if browser.ie? && request.env["PATH_INFO"] != "/exclude_me"
328
319
  end
329
320
  ```
330
321
 
331
- ### Migrating to v2
332
-
333
- #### Troubleshooting
334
-
335
- ##### `TypeError: no implicit conversion of Hash into String`
336
-
337
- The class constructor now has a different signature. Change the instantiation from `Browser.new(options)` to `Browser.new(ua, options)`, where:
338
-
339
- - `ua`: must be a string representing the user agent.
340
- - `options`: must be a hash (for now it only accepts the `accept_language` option).
341
-
342
- ##### `NoMethodError: undefined method 'user_agent'`
343
-
344
- `.ua` can now be used to retrieve the full User Agent string.
345
-
346
322
  ## Development
347
323
 
348
324
  ### Versioning
data/bots.yml CHANGED
@@ -1,299 +1,305 @@
1
1
  ---
2
- 200pleasebot: "200PleaseBot"
3
- 360spider: "360Spider"
4
- abot: "CrawlDaddy, abot"
5
- addthis: "AddThis"
6
- adldxbot: "Microsoft Bing Ads"
7
- admantx: "ADmantX Platform Semantic Analyzer"
8
- adsbot-google: "Google Adwords"
9
- adstxtcrawler: "AdsTxtCrawler"
10
- advbot: "AdvBot"
11
- ahrefsbot: "Ahrefs backlinks research tool"
12
- alexa: "Alexa Crawler"
13
- anderspink: "AndersPinkBot"
14
- apache-httpclient: "Java http library"
15
- apachebench: "ApacheBench (ab)"
2
+ 200pleasebot: 200PleaseBot
3
+ 360spider: 360Spider
4
+ abot: CrawlDaddy, abot
5
+ addthis: AddThis
6
+ adldxbot: Microsoft Bing Ads
7
+ admantx: ADmantX Platform Semantic Analyzer
8
+ adsbot-google: Google Adwords
9
+ adstxtcrawler: AdsTxtCrawler
10
+ advbot: AdvBot
11
+ ahrefsbot: Ahrefs backlinks research tool
12
+ alexa: Alexa Crawler
13
+ anderspink: AndersPinkBot
14
+ apache-httpclient: Java http library
15
+ apachebench: ApacheBench (ab)
16
16
  apis-google: APIs-Google
17
- appengine-google: "Google App Engine"
18
- applebot: "Apple Bot"
19
- archive.org_bot: "Internet Archive (archive.org)"
20
- archiveteam archivebot: "ArchiveTeam ArchiveBot"
21
- ask jeeves: "Ask Jeeves"
22
- asynchttpclient: "Java http and WebSocket client library"
23
- awe.sm: "Awe.sm URL expander"
24
- baidu: "Baidu"
25
- barkrowler: "Barkrowler"
26
- bdcbot: "Big Data Corp"
27
- bingbot: "Microsoft Bing"
28
- bingpreview: "Microsoft Bing preview"
29
- bitlybot: "bit.ly bot"
30
- blekkobot: "Blekkobot"
31
- blexbot: "BLEXBot (webmeup)"
32
- bot@linkfluence.net: "Linkfluence bot"
33
- bubing: "BUbiNG"
34
- bufferbot: "BufferBot"
35
- buibui-checkbot: "buibui"
36
- butterfly: "Topsy Labs"
37
- buzzbot: "Buzzbot"
38
- buzztalk: "buzztalk"
39
- catchbot: "CatchBot (catchbot.com)"
40
- check_http: "Nagios monitor"
41
- cipacrawler: "CipaCrawler"
42
- cliqzbot: "Cliqzbot"
43
- cloudflare: "CloudFlare-AlwaysOnline"
44
- cmradar/0.1: "CMRadar/0.1"
45
- coldfusion: "ColdFusion http library"
46
- commoncrawl: "CCBot"
47
- comodo ssl checker: "COMODO SSL Checker"
48
- comodo-webinspector-crawler: "Comodo"
49
- copypants: "BotPants"
50
- crowsnest: "Crowsnest"
51
- curabot: "cura.yt"
52
- curl: "curl unix CLI http client"
53
- dap/nethttp: "DAP/NetHTTP"
54
- datafeedwatch: "DataFeedWatch"
55
- datagnionbot: "datagnion.com/bot.html"
56
- datanyze: "Datanyze"
57
- daumoa: "Korean portal and search engine indexing bot"
58
- developers.google.com/+/web/snippet/: "Google Plus"
59
- diffbot: "Diffbot"
60
- digitalpersona fingerprint software: "HP Fingerprint scanner"
61
- domain re-animator bot: "Domain Re-Animator Bot"
62
- domainsbot: "DomainsBot"
63
- domaintunocrawler: "DomainTuno"
64
- dotbot: "Dot Bot"
65
- duckduck: "Duck Duck Go"
66
- elb-healthchecker: "AWS ELB HealthChecker"
67
- embedly: "Embedly"
68
- eoaagent: "EOAAgent"
69
- everyonesocialbot: "EveryoneSocial"
70
- evrinid: "Evri bot"
71
- exabot: "Exalead's bot"
72
- exaleadcloudview: "ExaleadCloudView"
73
- ez publish: "eZ Publish Link Validator"
74
- facebookexternalhit: "Facebook Bot"
75
- facebot: "Facebook Bot"
76
- feedburner: "RSS bot"
77
- feedfetcher-google: "Google Feedfetcher"
78
- findxbot: "Findxbot"
79
- flipboardproxy: "FlipboardProxy"
80
- friendfeedbot: "FriendFeed"
81
- fyrebot: "Fyrebot"
82
- garlik: "GarlikCrawler"
83
- genieo: "Genieo Web filter bot"
84
- germcrawler: "GermCrawler"
85
- getprismatic.com: "getprismatic.com"
86
- gigabot: "Gigabot spider"
87
- gimme60bot: "Gimme60 (gimme60.com)"
88
- gimmeusabot: "Gimme60 (gimme60.com)"
89
- go http package: "Go http library"
90
- google page speed insights: "Google Page Speed Insights"
91
- google Web Preview: "Google Instant Previews crawler"
92
- google-site-verification: Google-Site-Verification
93
- google-structured-data-testing-tool: "Google-StructuredDataTestingTool"
94
- google-structureddatatestingtool: "Google-StructuredDataTestingTool"
95
- google-xrawler: "Google Shopping"
96
- googlebot: "Google Bot"
97
- googlestackdrivermonitoring-uptimechecks: "GoogleStackdriverMonitoring-UptimeChecks"
98
- grapeshotcrawler: "GrapeshotCrawler"
99
- gravitybot: "Gravity Bot"
100
- hatena::bookmark: "Hatena::Bookmark"
101
- heritrix: "heritrix"
102
- https://developers.google.com/+/web/snippet: "Google+ Snippet Fetcher"
103
- httrack: "HTTrack"
104
- hubspot: "HubSpot"
105
- ia_archiver: "Internet Archive (WayBackMachine)"
106
- icoreservice: "iCoreService"
107
- idmarch: "idmarch.org/bot.html"
108
- implisensebot: "ImplisenseBot"
109
- inagist: "URL resolver"
110
- insieve: "Insieve Bot"
111
- insitesbot: "Insitesbot"
112
- instapaper: "Instapaper"
113
- istellabot: "IstellaBot"
114
- jaunt: "Jaunt - Java Web Scraping & JSON Querying"
115
- jetslide: "Jetslide"
116
- jobseeker: "jobseeker.com.au/bot.html"
117
- jooble: "Jooble"
118
- js-kit: "URL resolver"
119
- kemvibot: "Kemvi"
120
- kimengi: "Kimengi Bot"
121
- knows.is: "knows.is"
122
- kojitsubot: "Kojitsubot"
123
- komodiabot: "KomodiaBot"
124
- kraken: "kraken"
125
- laconica: "Laconica"
126
- lijit crawler: "Lijit"
127
- linkdexbot: "Linkdex Bot"
128
- linkedinbot: "LinkedIn"
129
- linkscrawler: "LinksCrawler"
130
- linode: "Linode Longview"
131
- lipperhey: "Lipperhey"
132
- livelapbot: "Livelapbot"
133
- loadtimebot: "Load Time Bot"
134
- longurl: "URL expander service"
135
- ltx71: "ltx71.com"
136
- lumibot: "Lumibot"
137
- magpie-crawler: "magpie-crawler"
138
- mail.ru_bot: "Mail.ru Bot"
139
- mappydata: "Mappy"
140
- mastodon: "Mastodon URL expander"
141
- mauibot: "MauiBot"
142
- meanpathbot: "meanpath"
143
- mediapartners-google: "Google Adsense bot"
144
- megaindex.ru: "MegaIndex"
145
- memorybot: "mignify.com/bot.html"
146
- metauri: "MetaURI"
147
- mfe_expand: "Mcafee spider"
148
- mir web crawler: "MIR web crawler"
149
- mj12bot: "Majestic-12 spider"
150
- mojeekbot: "Mojeek UK search crawler"
151
- ms search 6.0 robot: "MS Search 6.0 Robot"
152
- msnbot-media: "Microsoft media bot"
153
- msnbot: "Microsoft bot"
154
- nerdybot: "NerdyBot"
155
- netcraft: "Netcraft"
156
- netstate: "netEstate NE Crawler"
157
- netvibes: "Personalized dashboard bot"
158
- netzcheckbot: "netzcheck"
159
- newrelicmonitor: "NewRelic monitor"
160
- newrelicpinger: "NewRelicPinger"
161
- newsme: "newsme"
162
- niki-bot: "niki-bot"
163
- ning: "NING - Yet Another Twitter Swarmer"
164
- nutch: "Apache search spider"
165
- openhosebot: "OpenHoseBot"
166
- orangebot: "OrangeBot"
167
- paessler: "paessler.com - PRTG Network Monitor"
168
- pagesinventory: "pagesinventory.com"
169
- panopta: "Monitoring service"
170
- paperlibot: "PaperLi"
171
- peerindex: "peerindex"
172
- percolatecrawler: "PercolateCrawler"
173
- perfectmarketkwtbot: "PerfectMarket"
174
- phantomjs: "PhantomJS"
175
- pingdom: "Pingdom monitoring"
176
- pinterest: "Pinterest"
177
- plukkie: "botje.com/plukkie.htm"
178
- pr-cy.ru: "PR-CY.RU"
179
- privacyawarebot: "PrivacyAwareBot"
180
- proximic: "Proximic Spider"
181
- psbot-page: "Picsearch"
182
- pu_in: "Pu_iN Crawler"
183
- publiclibraryarchive.org: "publiclibraryarchive.org"
184
- pycurl: "Python http library"
185
- python-httplib2: "Python-httplib2"
186
- python-requests: "Python http library"
187
- python-urllib: "Python http library"
188
- queryseeker: "QuerySeekerSpider"
189
- quick-crawler: "Quick-Crawler"
190
- quicklook: "QuickLook"
191
- re-animator: "Domain Re-Animator Bot"
192
- readability: "Readability"
193
- rebelmouse: "RebelMouse"
194
- redditbot: "Reddit Bot"
195
- relateiq: "RelateIQ"
196
- riddler: "Riddler Bot"
197
- rogerbot: "SeoMoz spider"
198
- rssmicro: "RSS/Atom Feed Robot (rssmicro.com)"
199
- scouturlmonitor: "ScoutURLMonitor"
200
- scrapy: "Scrapy"
17
+ appengine-google: Google App Engine
18
+ applebot: Apple Bot
19
+ archive.org_bot: Internet Archive (archive.org)
20
+ archiveteam archivebot: ArchiveTeam ArchiveBot
21
+ ask jeeves: Ask Jeeves
22
+ asynchttpclient: Java http and WebSocket client library
23
+ awe.sm: Awe.sm URL expander
24
+ baidu: Baidu
25
+ barkrowler: Barkrowler
26
+ bdcbot: Big Data Corp
27
+ bingbot: Microsoft Bing
28
+ bingpreview: Microsoft Bing preview
29
+ bitlybot: bit.ly bot
30
+ blekkobot: Blekkobot
31
+ blexbot: BLEXBot (webmeup)
32
+ bot@linkfluence.net: Linkfluence bot
33
+ bubing: BUbiNG
34
+ bufferbot: BufferBot
35
+ buibui-checkbot: buibui
36
+ butterfly: Topsy Labs
37
+ buzzbot: Buzzbot
38
+ buzztalk: buzztalk
39
+ catchbot: CatchBot (catchbot.com)
40
+ check_http: Nagios monitor
41
+ chrome-lighthouse: Chrome-Lighthouse
42
+ cipacrawler: CipaCrawler
43
+ cliqzbot: Cliqzbot
44
+ cloudflare: CloudFlare-AlwaysOnline
45
+ cmradar/0.1: CMRadar/0.1
46
+ coldfusion: ColdFusion http library
47
+ commoncrawl: CCBot
48
+ comodo ssl checker: COMODO SSL Checker
49
+ comodo-webinspector-crawler: Comodo
50
+ copypants: BotPants
51
+ crowsnest: Crowsnest
52
+ curabot: cura.yt
53
+ curl: curl unix CLI http client
54
+ dap/nethttp: DAP/NetHTTP
55
+ datafeedwatch: DataFeedWatch
56
+ datagnionbot: datagnion.com/bot.html
57
+ datanyze: Datanyze
58
+ daumoa: Korean portal and search engine indexing bot
59
+ developers.google.com/+/web/snippet/: Google Plus
60
+ diffbot: Diffbot
61
+ digitalpersona fingerprint software: HP Fingerprint scanner
62
+ domain re-animator bot: Domain Re-Animator Bot
63
+ domainsbot: DomainsBot
64
+ domaintunocrawler: DomainTuno
65
+ dotbot: Dot Bot
66
+ duckduck: Duck Duck Go
67
+ elb-healthchecker: AWS ELB HealthChecker
68
+ embedly: Embedly
69
+ eoaagent: EOAAgent
70
+ everyonesocialbot: EveryoneSocial
71
+ evrinid: Evri bot
72
+ exabot: Exalead's bot
73
+ exaleadcloudview: ExaleadCloudView
74
+ ez publish: eZ Publish Link Validator
75
+ facebookexternalhit: Facebook Bot
76
+ facebot: Facebook Bot
77
+ feedburner: RSS bot
78
+ feedfetcher-google: Google Feedfetcher
79
+ findxbot: Findxbot
80
+ flipboardproxy: FlipboardProxy
81
+ friendfeedbot: FriendFeed
82
+ fyrebot: Fyrebot
83
+ garlik: GarlikCrawler
84
+ genieo: Genieo Web filter bot
85
+ germcrawler: GermCrawler
86
+ getprismatic.com: getprismatic.com
87
+ gigabot: Gigabot spider
88
+ gimme60bot: Gimme60 (gimme60.com)
89
+ gimmeusabot: Gimme60 (gimme60.com)
90
+ go http package: Go http library
91
+ go-http-client: Go http client
92
+ google page speed insights: Google Page Speed Insights
93
+ google web preview: Google Instant Previews crawler
94
+ google-site-verification: Google Site Verification
95
+ google-structured-data-testing-tool: Google Structured Data Testing Tool
96
+ google-structureddatatestingtool: Google Structured Data Testing Tool
97
+ google-xrawler: Google Shopping
98
+ googlebot: Google Bot
99
+ googleimageproxy: Google Image Proxy
100
+ googlestackdrivermonitoring-uptimechecks: Google Stackdriver Monitoring - Uptime Checks
101
+ grapeshotcrawler: GrapeshotCrawler
102
+ gravitybot: Gravity Bot
103
+ hatena::bookmark: Hatena::Bookmark
104
+ heritrix: heritrix
105
+ https://developers.google.com/+/web/snippet: Google+ Snippet Fetcher
106
+ httrack: HTTrack
107
+ hubspot: HubSpot
108
+ ia_archiver: Internet Archive (WayBackMachine)
109
+ icoreservice: iCoreService
110
+ idmarch: idmarch.org/bot.html
111
+ implisensebot: ImplisenseBot
112
+ inagist: URL resolver
113
+ insieve: Insieve Bot
114
+ insitesbot: Insitesbot
115
+ instapaper: Instapaper
116
+ istellabot: IstellaBot
117
+ jaunt: Jaunt - Java Web Scraping & JSON Querying
118
+ jetslide: Jetslide
119
+ jobseeker: jobseeker.com.au/bot.html
120
+ jooble: Jooble
121
+ js-kit: URL resolver
122
+ kemvibot: Kemvi
123
+ kimengi: Kimengi Bot
124
+ knows.is: knows.is
125
+ kojitsubot: Kojitsubot
126
+ komodiabot: KomodiaBot
127
+ kraken: kraken
128
+ laconica: Laconica
129
+ lijit crawler: Lijit
130
+ linkdexbot: Linkdex Bot
131
+ linkedinbot: LinkedIn
132
+ linkscrawler: LinksCrawler
133
+ linode: Linode Longview
134
+ lipperhey: Lipperhey
135
+ livelapbot: Livelapbot
136
+ loadtimebot: Load Time Bot
137
+ longurl: URL expander service
138
+ ltx71: ltx71.com
139
+ lumibot: Lumibot
140
+ magpie-crawler: magpie-crawler
141
+ mail.ru_bot: Mail.ru Bot
142
+ mappydata: Mappy
143
+ mastodon: Mastodon URL expander
144
+ mauibot: MauiBot
145
+ meanpathbot: meanpath
146
+ mediapartners-google: Google Adsense bot
147
+ megaindex.ru: MegaIndex
148
+ memorybot: mignify.com/bot.html
149
+ metauri: MetaURI
150
+ mfe_expand: Mcafee spider
151
+ mir web crawler: MIR web crawler
152
+ mj12bot: Majestic-12 spider
153
+ mojeekbot: Mojeek UK search crawler
154
+ ms search 6.0 robot: MS Search 6.0 Robot
155
+ msnbot-media: Microsoft media bot
156
+ msnbot: Microsoft bot
157
+ nerdybot: NerdyBot
158
+ netcraft: Netcraft
159
+ netstate: netEstate NE Crawler
160
+ netvibes: Personalized dashboard bot
161
+ netzcheckbot: netzcheck
162
+ newrelicmonitor: NewRelic monitor
163
+ newrelicpinger: NewRelicPinger
164
+ newsme: newsme
165
+ niki-bot: niki-bot
166
+ ning: NING - Yet Another Twitter Swarmer
167
+ nutch: Apache search spider
168
+ openhosebot: OpenHoseBot
169
+ orangebot: OrangeBot
170
+ paessler: paessler.com - PRTG Network Monitor
171
+ pagesinventory: pagesinventory.com
172
+ panopta: Monitoring service
173
+ paperlibot: PaperLi
174
+ peerindex: peerindex
175
+ percolatecrawler: PercolateCrawler
176
+ perfectmarketkwtbot: PerfectMarket
177
+ phantomjs: PhantomJS
178
+ pingdom: Pingdom monitoring
179
+ pinterest: Pinterest
180
+ plukkie: botje.com/plukkie.htm
181
+ pr-cy.ru: PR-CY.RU
182
+ privacyawarebot: PrivacyAwareBot
183
+ proximic: Proximic Spider
184
+ psbot-page: Picsearch
185
+ pu_in: Pu_iN Crawler
186
+ publiclibraryarchive.org: publiclibraryarchive.org
187
+ pycurl: Python http library
188
+ python-httplib2: Python-httplib2
189
+ python-requests: Python http library
190
+ python-urllib: Python http library
191
+ queryseeker: QuerySeekerSpider
192
+ quick-crawler: Quick-Crawler
193
+ quicklook: QuickLook
194
+ re-animator: Domain Re-Animator Bot
195
+ readability: Readability
196
+ rebelmouse: RebelMouse
197
+ redditbot: Reddit Bot
198
+ relateiq: RelateIQ
199
+ riddler: Riddler Bot
200
+ rogerbot: SeoMoz spider
201
+ rssmicro: RSS/Atom Feed Robot (rssmicro.com)
202
+ scouturlmonitor: ScoutURLMonitor
203
+ scrapy: Scrapy
201
204
  screaming frog seo spider: Screaming Frog SEO Spider
202
- searchmetricsbot: "SearchmetricsBot"
203
- semanticbot: "Semanticbot"
204
- semrushbot: "SEO analysis bot"
205
- seo-audit: "seo-audit-check-bot"
206
- seodiver: "SEOdiver"
207
- seokicks: "SEOKicks"
208
- seznambot: "SeznamBot"
209
- shopwiki: "ShopWiki"
210
- shortlinktranslate: "Link shortener"
211
- showyoubot: "Showyou iOS app spider"
212
- siege: "Joe Dog Siege"
213
- sistrix: "SISTRIX"
214
- sitecheck: "SiteCheck sitecrawl"
215
- siteuptime: "Site monitoring services"
216
- slack: "Slackbot-LinkExpanding"
217
- slackbot: "Slackbot 1.0(+https://api.slack.com/robots)"
218
- slack-imgproxy: "Slack-ImgProxy 0.19 (+https://api.slack.com/robots)"
219
- slack-linkexpanding: "Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)"
220
- slurp: "Yahoo spider"
221
- smtbot: "SimilarTech"
222
- snapchat: "Snapchat"
223
- socialrank: "SocialRankIOBot"
224
- sogou: "Chinese search engine"
225
- spbot: "OpenLinkProfiler"
226
- spinn3r: "Spinn3r aggregator"
227
- sputnikbot: "SputnikBot"
228
- squider: "Squider"
229
- statuscake: "StatusCake"
230
- stripe: "Stripe"
231
- swiftbot: "Swiftype Bot"
232
- tangibleebot: "TangibleeBot"
233
- teeraid: "TeeRaidBot"
234
- test certificate info: "C http library?"
235
- tineye: "TinEye Bot"
236
- traackr: "Traackr Bot"
237
- trendictionbot: "Trendiction Search"
238
- trendsmap: "Trendsmap Resolver"
239
- turnitinbot: "TurnitinBot"
240
- tweetedtimes: "The Tweeted Times"
241
- tweetmemebot: "TweetMeMe Crawler"
242
- twikle: "Social web search bot"
243
- twitjobsearch: "TwitJobSearch"
244
- twitmunin: "Twitmunin"
245
- twitterbot: "Twitter URL expander"
246
- twurly: "Twurly"
247
- typhoeus: "Typhoeus"
248
- umbot: "uberMetrics"
249
- unwindfetch: "Gnip"
250
- updown: "Updown.io monitor"
251
- uptimerobot: "Uptime Robot"
252
- vagabondo: "Vagabondo"
253
- vb project: "Visual Basic"
254
- vigil: "Vigil"
255
- vkshare: "VKontake Sharer"
256
- voilabot: "VoilaBot"
257
- vrcrawler: "Venture Radar"
258
- wasalive-bot: "Wasalive Bots"
259
- watchsumo: "WatchSumo"
260
- wbsearchbot: "Ware Bay Best Buys"
261
- webceo: "online-webceo-bot"
262
- webscout: "Webscout"
263
- wesee: "WeSEE"
264
- wget: "wget unix CLI http client"
265
- whatsapp: "WhatsApp"
266
- wikido: "WikiDo"
267
- woorank: "WooRank"
268
- wordpress: "WordPress spider"
269
- woriobot: "woriobot"
270
- wormly: "WormlyBot"
271
- wotbox: "Wotbox"
272
- xenu link sleuth: "Xenu Link Sleuth"
273
- xing-contenttabreceiver: "Xing bot"
274
- xovibot: "XoviBot"
275
- yacybot: "YaCy"
276
- yahoo-ad-monitoring: "Yahoo Ad monitoring"
277
- yandex: "Yandex"
278
- yanga: "Yanga WorldSearch Bot"
279
- yeti: "Naver Corp"
280
- yourls: "YOURLS"
281
- zabbix: 'Zabbix'
282
- zelist.ro: "feed parser"
283
- zibb: "ZIBB spider"
284
- zitebot: "Zite"
285
- zoombot: "ZoomBot"
286
- zoominfobot: "ZoominfoBot"
287
- zyborg: "Zyborg"
205
+ searchmetricsbot: SearchmetricsBot
206
+ semanticbot: Semanticbot
207
+ semrushbot: SEO analysis bot
208
+ seo-audit: seo-audit-check-bot
209
+ seobilitybot: SeobilityBot
210
+ seodiver: SEOdiver
211
+ seokicks: SEOKicks
212
+ seznambot: SeznamBot
213
+ shopwiki: ShopWiki
214
+ shortlinktranslate: Link shortener
215
+ showyoubot: Showyou iOS app spider
216
+ siege: Joe Dog Siege
217
+ sistrix: SISTRIX
218
+ sitecheck: SiteCheck sitecrawl
219
+ siteuptime: Site monitoring services
220
+ skypeuripreview: SkypeUriPreview
221
+ slack-imgproxy: Slack Image Proxy
222
+ slack-linkexpanding: Slack Link Expanding
223
+ slack: Slack Link Expanding
224
+ slackbot: Slackbot
225
+ slurp: Yahoo spider
226
+ smtbot: SimilarTech
227
+ snapchat: Snapchat
228
+ socialrank: SocialRankIOBot
229
+ sogou: Chinese search engine
230
+ spbot: OpenLinkProfiler
231
+ spinn3r: Spinn3r aggregator
232
+ sputnikbot: SputnikBot
233
+ squider: Squider
234
+ statuscake: StatusCake
235
+ stripe: Stripe
236
+ swiftbot: Swiftype Bot
237
+ tangibleebot: TangibleeBot
238
+ teeraid: TeeRaidBot
239
+ test certificate info: C http library?
240
+ the knowledge ai: Knowledge AI Bot
241
+ tineye: TinEye Bot
242
+ traackr: Traackr Bot
243
+ trendictionbot: Trendiction Search
244
+ trendsmap: Trendsmap Resolver
245
+ turnitinbot: TurnitinBot
246
+ tweetedtimes: The Tweeted Times
247
+ tweetmemebot: TweetMeMe Crawler
248
+ twikle: Social web search bot
249
+ twitjobsearch: TwitJobSearch
250
+ twitmunin: Twitmunin
251
+ twitterbot: Twitter URL expander
252
+ twurly: Twurly
253
+ typhoeus: Typhoeus
254
+ umbot: uberMetrics
255
+ unwindfetch: Gnip
256
+ updown: Updown.io monitor
257
+ uptimerobot: Uptime Robot
258
+ vagabondo: Vagabondo
259
+ vb project: Visual Basic
260
+ vigil: Vigil
261
+ vkshare: VKontake Sharer
262
+ voilabot: VoilaBot
263
+ vrcrawler: Venture Radar
264
+ wasalive-bot: Wasalive Bots
265
+ watchsumo: WatchSumo
266
+ wbsearchbot: Ware Bay Best Buys
267
+ webceo: online-webceo-bot
268
+ webscout: Webscout
269
+ wesee: WeSEE
270
+ wget: wget unix CLI http client
271
+ whatsapp: WhatsApp
272
+ wikido: WikiDo
273
+ woorank: WooRank
274
+ wordpress: WordPress spider
275
+ woriobot: woriobot
276
+ wormly: WormlyBot
277
+ wotbox: Wotbox
278
+ xenu link sleuth: Xenu Link Sleuth
279
+ xing-contenttabreceiver: Xing bot
280
+ xovibot: XoviBot
281
+ yacybot: YaCy
282
+ yahoo-ad-monitoring: Yahoo Ad monitoring
283
+ yandex: Yandex
284
+ yanga: Yanga WorldSearch Bot
285
+ yeti: Naver Corp
286
+ yourls: YOURLS
287
+ zabbix: Zabbix
288
+ zelist.ro: feed parser
289
+ zibb: ZIBB spider
290
+ zitebot: Zite
291
+ zoombot: ZoomBot
292
+ zoominfobot: ZoominfoBot
293
+ zyborg: Zyborg
288
294
 
289
295
  # Generic lib user agents go here.
290
- eventmachine httpclient: "Ruby http library"
291
- go 1.1 package http: "Go 1.1 package http"
292
- htmlparser: "HTMLParser"
293
- http_request2: "HTTP_Request2"
294
- httpclient: "HTTPClient"
295
- jakarta commons: "Jakarta Commons HttpClient"
296
- java: "Generic Java http library"
297
- libwww-perl: "Perl client-server library"
298
- lwp-trivial: "Another Perl library"
299
- ruby: "Ruby"
296
+ eventmachine httpclient: Ruby http library
297
+ go 1.1 package http: Go 1.1 package http
298
+ htmlparser: HTMLParser
299
+ http_request2: HTTP_Request2
300
+ httpclient: HTTPClient
301
+ jakarta commons: Jakarta Commons HttpClient
302
+ java: Generic Java http library
303
+ libwww-perl: Perl client-server library
304
+ lwp-trivial: Another Perl library
305
+ ruby: Ruby