legitbot 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/lib/legitbot.rb +1 -0
- data/lib/legitbot/petalbot.rb +10 -0
- data/lib/legitbot/version.rb +1 -1
- data/test/petalbot_test.rb +52 -0
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d709839505242be7ed07c5f6413e607bd8eb127a011765b9f45c1a3e0bba2fbb
|
4
|
+
data.tar.gz: 53a19413068473299ce78887756a2ef50f59859e54d652e4314755178a30028c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: daaf7bbde5fae2ab3937b5e4f4cd936a61f54b80d5ec87eaca8db473977f633c993f267f6aeb101b94404119e58835878ee1433683cf613b476c6fc7f27b34b3
|
7
|
+
data.tar.gz: 1e51fe4ee02eb14bb0a95230e2ca3d4716a56cee199a40f3cfcd4d0999158526f151fa7915a9a3f0a21a9054ebc3862353e1a68a89057c2cf8bbcac4d082afb8
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Legitbot ![](https://github.com/alaz/legitbot/workflows/build/badge.svg)
|
1
|
+
# Legitbot ![](https://github.com/alaz/legitbot/workflows/build/badge.svg) ![](https://badge.fury.io/rb/legitbot.svg)
|
2
2
|
|
3
3
|
Ruby gem to check that an IP belongs to a bot, typically a search
|
4
4
|
engine. This can be of help in protecting a web site from fake search
|
@@ -55,6 +55,7 @@ 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)
|
58
59
|
|
59
60
|
## License
|
60
61
|
|
data/lib/legitbot.rb
CHANGED
data/lib/legitbot/version.rb
CHANGED
@@ -0,0 +1,52 @@
|
|
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
|
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.3.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: 2020-
|
11
|
+
date: 2020-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: augmented_interval_tree
|
@@ -160,6 +160,7 @@ files:
|
|
160
160
|
- lib/legitbot/google.rb
|
161
161
|
- lib/legitbot/legitbot.rb
|
162
162
|
- lib/legitbot/oracle.rb
|
163
|
+
- lib/legitbot/petalbot.rb
|
163
164
|
- lib/legitbot/pinterest.rb
|
164
165
|
- lib/legitbot/twitter.rb
|
165
166
|
- lib/legitbot/validators/domains.rb
|
@@ -176,6 +177,7 @@ files:
|
|
176
177
|
- test/legitbot/validators/ip_ranges_test.rb
|
177
178
|
- test/legitbot_test.rb
|
178
179
|
- test/oracle_test.rb
|
180
|
+
- test/petalbot_test.rb
|
179
181
|
- test/pinterest_test.rb
|
180
182
|
- test/twitter_test.rb
|
181
183
|
homepage: https://github.com/alaz/legitbot
|
@@ -198,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
198
200
|
- !ruby/object:Gem::Version
|
199
201
|
version: '0'
|
200
202
|
requirements: []
|
201
|
-
rubygems_version: 3.1.
|
203
|
+
rubygems_version: 3.1.4
|
202
204
|
signing_key:
|
203
205
|
specification_version: 4
|
204
206
|
summary: 'Validate requests from Web crawlers: impersonating or not?'
|
@@ -212,6 +214,7 @@ test_files:
|
|
212
214
|
- test/apple_test.rb
|
213
215
|
- test/oracle_test.rb
|
214
216
|
- test/google_test.rb
|
217
|
+
- test/petalbot_test.rb
|
215
218
|
- test/botmatch_test.rb
|
216
219
|
- test/facebook_test.rb
|
217
220
|
- test/twitter_test.rb
|