legitbot 1.3.0 → 1.4.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/.github/workflows/build.yml +7 -3
- data/.rubocop.yml +7 -0
- data/.ruby-version +1 -1
- data/README.md +0 -1
- data/legitbot.gemspec +2 -2
- data/lib/legitbot.rb +0 -1
- data/lib/legitbot/version.rb +1 -1
- data/test/pinterest_test.rb +2 -2
- metadata +8 -11
- data/lib/legitbot/petalbot.rb +0 -10
- data/test/petalbot_test.rb +0 -52
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 783bc47b1bc8f80e5d4818f150663a2cb6fb90e5dd2378bae456eb2fb1d78823
|
4
|
+
data.tar.gz: 0e274e1eaa295ffa0e00a8d6e2884194ed53108da9ecb75c3ef2ef4746048c9e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ec7c2f2cb78cc8a586a35bea72e39b12835679089f4b4d5cba754aa0caccee0c9e8c1c94461a7fd8fcb1cf4f8195f196346ea4abe7bd96a080c5c831f9d68c7a
|
7
|
+
data.tar.gz: a92ea8ff049127871988e8dbad7cb76b3c53f13dde97a157509e9013898c1da2cc3e573ae695d9af2e82372bf478348aeca6ec77a673798b52ac1e3ab623e214
|
data/.github/workflows/build.yml
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
name: build
|
2
2
|
|
3
|
-
on:
|
3
|
+
on:
|
4
|
+
pull_request:
|
5
|
+
push:
|
6
|
+
schedule:
|
7
|
+
- cron: '29 6 * * 6'
|
4
8
|
|
5
9
|
jobs:
|
6
10
|
test:
|
@@ -9,7 +13,7 @@ jobs:
|
|
9
13
|
strategy:
|
10
14
|
fail-fast: false
|
11
15
|
matrix:
|
12
|
-
ruby: [ jruby, 2.6 ]
|
16
|
+
ruby: [ jruby, 2.5, 2.6, 2.7 ]
|
13
17
|
|
14
18
|
steps:
|
15
19
|
- uses: actions/checkout@v2
|
@@ -37,7 +41,7 @@ jobs:
|
|
37
41
|
|
38
42
|
strategy:
|
39
43
|
matrix:
|
40
|
-
ruby: [ 2.
|
44
|
+
ruby: [ 2.7 ]
|
41
45
|
|
42
46
|
steps:
|
43
47
|
- uses: actions/checkout@v2
|
data/.rubocop.yml
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.7.3
|
data/README.md
CHANGED
@@ -55,7 +55,6 @@ end
|
|
55
55
|
* [Pinterest](https://help.pinterest.com/en/articles/about-pinterest-crawler-0)
|
56
56
|
* [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)
|
57
57
|
* [Yandex robots](https://yandex.com/support/webmaster/robot-workings/check-yandex-robots.xml)
|
58
|
-
* [Petal robots (Huawei search)](http://aspiegel.com/petalbot)
|
59
58
|
|
60
59
|
## License
|
61
60
|
|
data/legitbot.gemspec
CHANGED
@@ -14,13 +14,13 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.summary = 'Validate requests from Web crawlers: impersonating or not?'
|
15
15
|
spec.description = 'Does Web request come from a real search engine or from an impersonating agent?'
|
16
16
|
|
17
|
-
spec.required_ruby_version = '>= 2.
|
17
|
+
spec.required_ruby_version = '>= 2.5.0'
|
18
18
|
spec.add_dependency 'augmented_interval_tree', '~> 0.1', '>= 0.1.1'
|
19
19
|
spec.add_dependency 'irrc', '~> 0.2', '>= 0.2.1'
|
20
20
|
spec.add_development_dependency 'bump', '~> 0.8', '>= 0.8.0'
|
21
21
|
spec.add_development_dependency 'minitest', '~> 5.1', '>= 5.1.0'
|
22
22
|
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.0'
|
23
|
-
spec.add_development_dependency 'rubocop', '~>
|
23
|
+
spec.add_development_dependency 'rubocop', '~> 1.15.0', '>= 1.15.0'
|
24
24
|
|
25
25
|
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
26
26
|
spec.rdoc_options = ['--charset=UTF-8']
|
data/lib/legitbot.rb
CHANGED
data/lib/legitbot/version.rb
CHANGED
data/test/pinterest_test.rb
CHANGED
@@ -34,7 +34,7 @@ class PinterestTest < Minitest::Test
|
|
34
34
|
assert bot.valid?, msg: 'Valid Pinterest'
|
35
35
|
end
|
36
36
|
|
37
|
-
# rubocop:disable
|
37
|
+
# rubocop:disable Layout/LineLength
|
38
38
|
def test_android_not_bot
|
39
39
|
bot = Legitbot.bot(
|
40
40
|
'Mozilla/5.0 (Linux; Android 8.0.0; SM-G965F Build/R16NW; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.64 Mobile Safari/537.36 [Pinterest/Android]',
|
@@ -42,7 +42,7 @@ class PinterestTest < Minitest::Test
|
|
42
42
|
)
|
43
43
|
assert_nil bot
|
44
44
|
end
|
45
|
-
# rubocop:enable
|
45
|
+
# rubocop:enable Layout/LineLength
|
46
46
|
|
47
47
|
def test_engine_name
|
48
48
|
bot = Legitbot.bot(
|
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
|
+
version: 1.4.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:
|
11
|
+
date: 2021-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: augmented_interval_tree
|
@@ -116,20 +116,20 @@ dependencies:
|
|
116
116
|
requirements:
|
117
117
|
- - "~>"
|
118
118
|
- !ruby/object:Gem::Version
|
119
|
-
version:
|
119
|
+
version: 1.15.0
|
120
120
|
- - ">="
|
121
121
|
- !ruby/object:Gem::Version
|
122
|
-
version:
|
122
|
+
version: 1.15.0
|
123
123
|
type: :development
|
124
124
|
prerelease: false
|
125
125
|
version_requirements: !ruby/object:Gem::Requirement
|
126
126
|
requirements:
|
127
127
|
- - "~>"
|
128
128
|
- !ruby/object:Gem::Version
|
129
|
-
version:
|
129
|
+
version: 1.15.0
|
130
130
|
- - ">="
|
131
131
|
- !ruby/object:Gem::Version
|
132
|
-
version:
|
132
|
+
version: 1.15.0
|
133
133
|
description: Does Web request come from a real search engine or from an impersonating
|
134
134
|
agent?
|
135
135
|
email: self@alaz.me
|
@@ -160,7 +160,6 @@ files:
|
|
160
160
|
- lib/legitbot/google.rb
|
161
161
|
- lib/legitbot/legitbot.rb
|
162
162
|
- lib/legitbot/oracle.rb
|
163
|
-
- lib/legitbot/petalbot.rb
|
164
163
|
- lib/legitbot/pinterest.rb
|
165
164
|
- lib/legitbot/twitter.rb
|
166
165
|
- lib/legitbot/validators/domains.rb
|
@@ -177,7 +176,6 @@ files:
|
|
177
176
|
- test/legitbot/validators/ip_ranges_test.rb
|
178
177
|
- test/legitbot_test.rb
|
179
178
|
- test/oracle_test.rb
|
180
|
-
- test/petalbot_test.rb
|
181
179
|
- test/pinterest_test.rb
|
182
180
|
- test/twitter_test.rb
|
183
181
|
homepage: https://github.com/alaz/legitbot
|
@@ -193,14 +191,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
193
191
|
requirements:
|
194
192
|
- - ">="
|
195
193
|
- !ruby/object:Gem::Version
|
196
|
-
version: 2.
|
194
|
+
version: 2.5.0
|
197
195
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
198
196
|
requirements:
|
199
197
|
- - ">="
|
200
198
|
- !ruby/object:Gem::Version
|
201
199
|
version: '0'
|
202
200
|
requirements: []
|
203
|
-
rubygems_version: 3.1.
|
201
|
+
rubygems_version: 3.1.6
|
204
202
|
signing_key:
|
205
203
|
specification_version: 4
|
206
204
|
summary: 'Validate requests from Web crawlers: impersonating or not?'
|
@@ -214,7 +212,6 @@ test_files:
|
|
214
212
|
- test/apple_test.rb
|
215
213
|
- test/oracle_test.rb
|
216
214
|
- test/google_test.rb
|
217
|
-
- test/petalbot_test.rb
|
218
215
|
- test/botmatch_test.rb
|
219
216
|
- test/facebook_test.rb
|
220
217
|
- test/twitter_test.rb
|
data/lib/legitbot/petalbot.rb
DELETED
data/test/petalbot_test.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'minitest/autorun'
|
4
|
-
require 'legitbot'
|
5
|
-
|
6
|
-
class PetalbotTest < Minitest::Test
|
7
|
-
def test_malicious_ip
|
8
|
-
ip = '149.210.164.47'
|
9
|
-
match = Legitbot::Petalbot.new ip
|
10
|
-
assert !match.valid?, msg: "#{ip} is not a real Petalbot IP"
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_valid_ip
|
14
|
-
ip = '114.119.153.50'
|
15
|
-
match = Legitbot::Petalbot.new ip
|
16
|
-
assert match.valid?, msg: "#{ip} is a valid Petalbot IP"
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_malicious_ua
|
20
|
-
bot = Legitbot.bot(
|
21
|
-
'Mozilla/5.0 (compatible;PetalBot; +https://aspiegel.com/petalbot)',
|
22
|
-
'149.210.164.47'
|
23
|
-
)
|
24
|
-
assert bot, msg: 'Petalbot detected from User-Agent'
|
25
|
-
assert !bot.valid?, msg: 'Not a valid Petalbot'
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_valid_ua
|
29
|
-
bot = Legitbot.bot(
|
30
|
-
'Mozilla/5.0 (compatible;PetalBot; +https://aspiegel.com/petalbot)',
|
31
|
-
'114.119.153.50'
|
32
|
-
)
|
33
|
-
assert bot, msg: 'Petalbot detected from User-Agent'
|
34
|
-
assert bot.valid?, msg: 'Valid Petalbot'
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_valid_name
|
38
|
-
bot = Legitbot.bot(
|
39
|
-
'Mozilla/5.0 (compatible;PetalBot; +https://aspiegel.com/petalbot)',
|
40
|
-
'66.249.64.141'
|
41
|
-
)
|
42
|
-
assert_equal :petalbot, bot.detected_as
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_fake_name
|
46
|
-
bot = Legitbot.bot(
|
47
|
-
'Mozilla/5.0 (compatible; PetalBot/2.1; +http://www.google.com/bot.html)',
|
48
|
-
'81.1.172.108'
|
49
|
-
)
|
50
|
-
assert_equal :petalbot, bot.detected_as
|
51
|
-
end
|
52
|
-
end
|