legitbot 1.4.5 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3eb1ad3043aa5d9c87f6417fa287121cc5ec37fe1fcb6b043f9e6ee9a88ec771
4
- data.tar.gz: 01764d6f90fd4f72751d18ea17d4f6921103ba2e050fe8f179d13d889d920347
3
+ metadata.gz: 8d80bbf2deb17b90d29f6d19b5405b63e52911e5fadf05a2b6c10a7a8772afa6
4
+ data.tar.gz: fcac15d55a5f59d8076eeab89b67c07466c15f646b9205d8fdc49b29f55084b4
5
5
  SHA512:
6
- metadata.gz: '0269f1dd308855bb4dd15e82601dba739b2f77bfb2777d802f4b813b0a73d31f052e3f75cbc26812589a3816aefe6d49c9b9ab20b59b229a346c4d8da27b46a5'
7
- data.tar.gz: 1e2f8e9e5e7ae7812df3016e6f0c6e45af9f4b60d67512f9678be1437ccbc8dcf55ae1fbeb404274d03b80c32e6bc8e7678b22654c089900b11f2681fc090b73
6
+ metadata.gz: d0e367f8e02357527a46112cfd9acdc3448fc99320d6c0a117af81b8bd17a58c997a678747f1bc137fe7772b2c2e80fbf1fb4bb39cbdf52d6e53a4f4ce7dc1b7
7
+ data.tar.gz: '019f70211891e34b1290565e006ca8e58b25db9303db94a274ca8697871420f22983642f125e38faab02a4df9984bd097e0e61ee88adf0ce70940334d70232c4'
data/README.md CHANGED
@@ -39,10 +39,18 @@ Rack::Attack.blocklist 'fake search engines' do |request|
39
39
  end
40
40
  ```
41
41
 
42
+ ## Versioning
43
+
44
+ [Semantic versioning](https://semver.org/) with the following clarifications:
45
+
46
+ * MINOR version is incremented when support for new bots is added.
47
+ * PATCH version is incremented when validation logic for a bot changes (IP list updated, for example).
48
+
42
49
  ## Supported
43
50
 
44
51
  * [Ahrefs](https://ahrefs.com/robot)
45
52
  * [Alexa](https://support.alexa.com/hc/en-us/articles/360046707834-What-are-the-IP-addresses-for-Alexa-s-Certify-and-Site-Audit-crawlers-)
53
+ * [Amazon AdBot](https://adbot.amazon.com/index.html)
46
54
  * [Applebot](https://support.apple.com/en-us/HT204683)
47
55
  * [Baidu spider](http://help.baidu.com/question?prod_en=master&class=498&id=1000973)
48
56
  * [Bingbot](https://blogs.bing.com/webmaster/2012/08/31/how-to-verify-that-bingbot-is-bingbot/)
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Legitbot # :nodoc:
4
+ # https://adbot.amazon.com/index.html
5
+ class Amazon < BotMatch
6
+ domains 'amazonadbot.com.'
7
+ end
8
+
9
+ rule Legitbot::Amazon, %w[AmazonAdBot]
10
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Legitbot
4
- VERSION = '1.4.5'
4
+ VERSION = '1.5.0'
5
5
  end
data/lib/legitbot.rb CHANGED
@@ -5,6 +5,7 @@ require_relative 'legitbot/botmatch'
5
5
 
6
6
  require_relative 'legitbot/ahrefs'
7
7
  require_relative 'legitbot/alexa'
8
+ require_relative 'legitbot/amazon'
8
9
  require_relative 'legitbot/apple'
9
10
  require_relative 'legitbot/baidu'
10
11
  require_relative 'legitbot/bing'
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'minitest/autorun'
4
+ require 'legitbot'
5
+
6
+ class AmazonTest < Minitest::Test
7
+ def test_malicious_ip
8
+ ip = '149.210.164.47'
9
+ match = Legitbot::Amazon.new ip
10
+ assert !match.valid?, msg: "#{ip} is not a real AmazonAdBot IP"
11
+ end
12
+
13
+ def test_valid_ip
14
+ ip = '54.166.7.90'
15
+ match = Legitbot::Amazon.new ip
16
+ assert match.valid?, msg: "#{ip} is a valid AmazonAdBot IP"
17
+ end
18
+
19
+ def test_malicious_ua
20
+ bot = Legitbot.bot(
21
+ 'Mozilla/5.0 (compatible; AmazonAdBot/1.0; +https://adbot.amazon.com)',
22
+ '149.210.164.47'
23
+ )
24
+ assert bot, msg: 'AmazonAdBot detected from User-Agent'
25
+ assert !bot.valid?, msg: 'Not a valid AmazonAdBot'
26
+ end
27
+
28
+ def test_valid_ua
29
+ bot = Legitbot.bot(
30
+ 'Mozilla/5.0 (compatible; AmazonAdBot/1.0; +https://adbot.amazon.com)',
31
+ '54.166.7.90'
32
+ )
33
+ assert bot, msg: 'AmazonAdBot detected from User-Agent'
34
+ assert bot.valid?, msg: 'Valid AmazonAdBot'
35
+ end
36
+
37
+ def test_valid_name
38
+ bot = Legitbot.bot(
39
+ 'Mozilla/5.0 (compatible; AmazonAdBot/1.0; +https://adbot.amazon.com)',
40
+ '54.166.7.90'
41
+ )
42
+ assert_equal :amazon, bot.detected_as
43
+ end
44
+
45
+ def test_fake_name
46
+ bot = Legitbot.bot(
47
+ 'Mozilla/5.0 (compatible; AmazonAdBot/1.0; +https://adbot.amazon.com)',
48
+ '81.1.172.108'
49
+ )
50
+ assert_equal :amazon, bot.detected_as
51
+ end
52
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legitbot
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.5
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Azarov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-01 00:00:00.000000000 Z
11
+ date: 2021-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: augmented_interval_tree
@@ -150,6 +150,7 @@ files:
150
150
  - lib/legitbot.rb
151
151
  - lib/legitbot/ahrefs.rb
152
152
  - lib/legitbot/alexa.rb
153
+ - lib/legitbot/amazon.rb
153
154
  - lib/legitbot/apple.rb
154
155
  - lib/legitbot/baidu.rb
155
156
  - lib/legitbot/bing.rb
@@ -169,6 +170,7 @@ files:
169
170
  - lib/legitbot/yandex.rb
170
171
  - test/ahrefs_test.rb
171
172
  - test/alexa_test.rb
173
+ - test/amazon_test.rb
172
174
  - test/apple_test.rb
173
175
  - test/botmatch_test.rb
174
176
  - test/facebook_test.rb
@@ -214,6 +216,7 @@ test_files:
214
216
  - test/apple_test.rb
215
217
  - test/oracle_test.rb
216
218
  - test/google_test.rb
219
+ - test/amazon_test.rb
217
220
  - test/petalbot_test.rb
218
221
  - test/botmatch_test.rb
219
222
  - test/facebook_test.rb