legitbot 1.6.1 → 1.7.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: 0bd071c617ddb67424715ae30b92783fa0155ca182c7ef0c7cac0a5962eff8d1
4
- data.tar.gz: 33ed371772200f2d27d95d083782d73d1572eeac329f63e5e3d5f14937151b72
3
+ metadata.gz: a835b0a1636ec6a95b61ac14b299f480f48b251678bdfd3228769ba1f36d4160
4
+ data.tar.gz: 8d548e2d5584d4239f9d1f758a09fdf40f7d825cc31b74add702cea52438e4a8
5
5
  SHA512:
6
- metadata.gz: d188e8a97d9fd5115897f69c31a2f43f8b55b0426bd932c347800fd023231dfbc1c6c4ada108c94cdd4258673cbee06d012182ef3e815ff7be8b010b9d4eb4db
7
- data.tar.gz: a00e24aa78775c201f9587286bb7cec46ec9993687ace3e675c2e4f585ff4ff56839f9a977e9709dab13e652098e72910a6f86b4dbc5fa38083970ca9085c143
6
+ metadata.gz: 4bca3fd8614ff5bd73d733573dbf0ff23ab233682e2e7eb054638eb963b3d68ced441f0ed8faac418f6af125011da07b8ba767ed5819fcbcc571ae1c6253ab51
7
+ data.tar.gz: d3ef89deb8d0fd22915bbb503665ed7f805bbfa2bc61396f04792d5321b478a8eca79b5df4c9ec39a8bb6deec608711cec32f279fa155544f072e8d4e921c1a3
@@ -13,13 +13,13 @@ jobs:
13
13
  ruby: [ 3.0 ]
14
14
 
15
15
  steps:
16
- - uses: actions/checkout@v2
16
+ - uses: actions/checkout@v3
17
17
  - name: Set up Ruby
18
18
  uses: ruby/setup-ruby@v1
19
19
  with:
20
20
  ruby-version: ${{ matrix.ruby }}
21
21
  - name: Cache dependencies
22
- uses: actions/cache@v1
22
+ uses: actions/cache@v3
23
23
  with:
24
24
  path: vendor/bundle
25
25
  key: ${{ runner.os }}-${{ matrix.ruby }}-gems-${{ hashFiles('**/Gemfile.lock') }}
@@ -14,13 +14,13 @@ jobs:
14
14
  ruby: [ jruby, 2.6, 2.7, 3.0 ]
15
15
 
16
16
  steps:
17
- - uses: actions/checkout@v2
17
+ - uses: actions/checkout@v3
18
18
  - name: Set up Ruby
19
19
  uses: ruby/setup-ruby@v1
20
20
  with:
21
21
  ruby-version: ${{ matrix.ruby }}
22
22
  - name: Cache dependencies
23
- uses: actions/cache@v1
23
+ uses: actions/cache@v3
24
24
  with:
25
25
  path: vendor/bundle
26
26
  key: ${{ runner.os }}-${{ matrix.ruby }}-gems-${{ hashFiles('**/Gemfile.lock') }}
@@ -42,13 +42,13 @@ jobs:
42
42
  ruby: [ 3.0 ]
43
43
 
44
44
  steps:
45
- - uses: actions/checkout@v2
45
+ - uses: actions/checkout@v3
46
46
  - name: Set up Ruby
47
47
  uses: ruby/setup-ruby@v1
48
48
  with:
49
49
  ruby-version: ${{ matrix.ruby }}
50
50
  - name: Cache dependencies
51
- uses: actions/cache@v1
51
+ uses: actions/cache@v3
52
52
  with:
53
53
  path: vendor/bundle
54
54
  key: ${{ runner.os }}-${{ matrix.ruby }}-gems-${{ hashFiles('**/Gemfile.lock') }}
data/README.md CHANGED
@@ -62,6 +62,7 @@ end
62
62
  * [Pinterest](https://help.pinterest.com/en/articles/about-pinterest-crawler-0)
63
63
  * [Twitterbot](https://developer.twitter.com/en/docs/tweets/optimize-with-cards/guides/getting-started), the list of IPs is in the [Troubleshooting page](https://developer.twitter.com/en/docs/tweets/optimize-with-cards/guides/troubleshooting-cards)
64
64
  * [Yandex robots](https://yandex.com/support/webmaster/robot-workings/check-yandex-robots.xml)
65
+ * [You.com](https://about.you.com/youbot/)
65
66
 
66
67
  ## License
67
68
 
data/legitbot.gemspec CHANGED
@@ -28,10 +28,9 @@ Gem::Specification.new do |spec|
28
28
  spec.add_development_dependency 'minitest-hooks', '~> 1.5', '>= 1.5.0'
29
29
  spec.add_development_dependency 'nokogiri', '~> 1.13.0', '>= 1.13.0'
30
30
  spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.0'
31
- spec.add_development_dependency 'rubocop', '~> 1.28.0', '>= 1.28.0'
32
- spec.add_development_dependency 'rubocop-minitest', '~> 0.19.0', '>= 0.19.0'
31
+ spec.add_development_dependency 'rubocop', '~> 1.31.0', '>= 1.31.0'
32
+ spec.add_development_dependency 'rubocop-minitest', '~> 0.20.0', '>= 0.20.0'
33
33
 
34
34
  spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
35
35
  spec.rdoc_options = ['--charset=UTF-8']
36
- spec.test_files = Dir.glob('test/**/*').reject { |f| f.start_with? 'test/lib' }
37
36
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Legitbot
4
- VERSION = '1.6.1'
4
+ VERSION = '1.7.0'
5
5
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Legitbot # :nodoc:
4
+ # https://about.you.com/youbot/
5
+ class You < BotMatch
6
+ ip_ranges %w[
7
+ 20.59.40.22
8
+ ]
9
+ end
10
+
11
+ rule Legitbot::You, %w[YouBot/]
12
+ end
data/lib/legitbot.rb CHANGED
@@ -13,7 +13,8 @@ require_relative 'legitbot/duckduckgo'
13
13
  require_relative 'legitbot/facebook'
14
14
  require_relative 'legitbot/google'
15
15
  require_relative 'legitbot/oracle'
16
+ require_relative 'legitbot/petalbot'
16
17
  require_relative 'legitbot/pinterest'
17
18
  require_relative 'legitbot/twitter'
18
19
  require_relative 'legitbot/yandex'
19
- require_relative 'legitbot/petalbot'
20
+ require_relative 'legitbot/you'
data/test/you_test.rb ADDED
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'minitest/autorun'
4
+ require 'legitbot'
5
+
6
+ class YouTest < Minitest::Test
7
+ def test_malicious_ip
8
+ ip = '20.59.41.22'
9
+ match = Legitbot::You.new ip
10
+ refute_predicate match, :valid?
11
+ end
12
+
13
+ def test_valid_ip
14
+ ip = '20.59.40.22'
15
+ match = Legitbot::You.new ip
16
+ assert_predicate match, :valid?
17
+ end
18
+
19
+ def test_malicious_ua
20
+ bot = Legitbot.bot(
21
+ 'Mozilla/5.0 (compatible; YouBot/1.0; +https://about.you.com/youbot/)',
22
+ '20.59.41.22'
23
+ )
24
+ assert bot
25
+ refute_predicate bot, :valid?
26
+ end
27
+
28
+ def test_valid_ua
29
+ bot = Legitbot.bot(
30
+ 'Mozilla/5.0 (compatible; YouBot/1.0; +https://about.you.com/youbot/)',
31
+ '20.59.40.22'
32
+ )
33
+ assert bot
34
+ assert_predicate bot, :valid?
35
+ end
36
+ 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.6.1
4
+ version: 1.7.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: 2022-04-23 00:00:00.000000000 Z
11
+ date: 2022-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fast_interval_tree
@@ -176,40 +176,40 @@ dependencies:
176
176
  requirements:
177
177
  - - "~>"
178
178
  - !ruby/object:Gem::Version
179
- version: 1.28.0
179
+ version: 1.31.0
180
180
  - - ">="
181
181
  - !ruby/object:Gem::Version
182
- version: 1.28.0
182
+ version: 1.31.0
183
183
  type: :development
184
184
  prerelease: false
185
185
  version_requirements: !ruby/object:Gem::Requirement
186
186
  requirements:
187
187
  - - "~>"
188
188
  - !ruby/object:Gem::Version
189
- version: 1.28.0
189
+ version: 1.31.0
190
190
  - - ">="
191
191
  - !ruby/object:Gem::Version
192
- version: 1.28.0
192
+ version: 1.31.0
193
193
  - !ruby/object:Gem::Dependency
194
194
  name: rubocop-minitest
195
195
  requirement: !ruby/object:Gem::Requirement
196
196
  requirements:
197
197
  - - "~>"
198
198
  - !ruby/object:Gem::Version
199
- version: 0.19.0
199
+ version: 0.20.0
200
200
  - - ">="
201
201
  - !ruby/object:Gem::Version
202
- version: 0.19.0
202
+ version: 0.20.0
203
203
  type: :development
204
204
  prerelease: false
205
205
  version_requirements: !ruby/object:Gem::Requirement
206
206
  requirements:
207
207
  - - "~>"
208
208
  - !ruby/object:Gem::Version
209
- version: 0.19.0
209
+ version: 0.20.0
210
210
  - - ">="
211
211
  - !ruby/object:Gem::Version
212
- version: 0.19.0
212
+ version: 0.20.0
213
213
  description: Does Web request come from a real search engine or from an impersonating
214
214
  agent?
215
215
  email: self@alaz.me
@@ -249,6 +249,7 @@ files:
249
249
  - lib/legitbot/validators/ip_ranges.rb
250
250
  - lib/legitbot/version.rb
251
251
  - lib/legitbot/yandex.rb
252
+ - lib/legitbot/you.rb
252
253
  - lib/rubocop/cop/custom.rb
253
254
  - lib/rubocop/cop/custom/ip_ranges.rb
254
255
  - rakelib/bump.rake
@@ -270,6 +271,7 @@ files:
270
271
  - test/petalbot_test.rb
271
272
  - test/pinterest_test.rb
272
273
  - test/twitter_test.rb
274
+ - test/you_test.rb
273
275
  homepage: https://github.com/alaz/legitbot
274
276
  licenses:
275
277
  - Apache-2.0
@@ -295,18 +297,4 @@ rubygems_version: 3.2.32
295
297
  signing_key:
296
298
  specification_version: 4
297
299
  summary: 'Validate requests from Web crawlers: impersonating or not?'
298
- test_files:
299
- - test/ahrefs_test.rb
300
- - test/alexa_test.rb
301
- - test/amazon_test.rb
302
- - test/apple_test.rb
303
- - test/botmatch_test.rb
304
- - test/facebook_test.rb
305
- - test/google_test.rb
306
- - test/legitbot/validators/domains_test.rb
307
- - test/legitbot/validators/ip_ranges_test.rb
308
- - test/legitbot_test.rb
309
- - test/oracle_test.rb
310
- - test/petalbot_test.rb
311
- - test/pinterest_test.rb
312
- - test/twitter_test.rb
300
+ test_files: []