agent_orange 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,86 @@
1
+ require "agent_orange"
2
+ require 'rexml/document'
3
+
4
+ task :test_bots do
5
+ success = 0
6
+ fail = 0
7
+
8
+ # tests for successful bot detection
9
+ bot_user_agent_strings = [
10
+ "ia_archiver (+http://www.alexa.com/site/help/webmasters; crawler@alexa.com)",
11
+ "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
12
+ ]
13
+ browser_user_agent_strings = [
14
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; sv-se) AppleWebKit/525.26.2 (KHTML, like Gecko) Version/3.2 Safari/525.26.12",
15
+ "Mozilla/5.0 (iPhone; U; Linux i686; pt-br) AppleWebKit/532+ (KHTML, like Gecko) Version/3.0 Mobile/1A538b Safari/419.3 Midori/0.2.0",
16
+ "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; zh-tw) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8G4 Safari/6533.18.5",
17
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; de-at) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1",
18
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1",
19
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; tr-TR) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27",
20
+ "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)",
21
+ "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 4.0; InfoPath.3; MS-RTC LM 8; .NET4.0C; .NET4.0E)",
22
+ "Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20110814 Firefox/6.0",
23
+ "Mozilla/5.0 (X11; U; Linux i586; de; rv:5.0) Gecko/20100101 Firefox/5.0",
24
+ "Opera/9.80 (Windows NT 6.1; U; es-ES) Presto/2.9.181 Version/12.00",
25
+ "Opera/9.80 (X11; Linux i686; U; ru) Presto/2.8.131 Version/11.11"
26
+ ]
27
+ puts
28
+ puts "parsing the user-agents.org list..."
29
+ doc = REXML::Document.new(File.open("lib/tasks/allagents.xml"))
30
+ doc.elements.each("user-agents/user-agent") do |ua|
31
+ bot = false
32
+ browser = false
33
+ ua.elements.each("Type") do |item|
34
+ if item.text == "R" || item.text == "S"
35
+ bot = true
36
+ elsif item.text == "B"
37
+ browser = true
38
+ end
39
+
40
+ end
41
+ if bot
42
+ ua.elements.each("String") do |item|
43
+ bot_user_agent_strings << item.text
44
+ end
45
+ end
46
+ if browser
47
+ ua.elements.each("String") do |item|
48
+ browser_user_agent_strings << item.text
49
+ end
50
+ end
51
+ end
52
+ puts "testing..."
53
+ bot_user_agent_strings.each do |ua_str|
54
+ ua = AgentOrange::UserAgent.new(ua_str)
55
+ if ua.is_bot?
56
+ #puts "SUCCESS:: " + ua_str
57
+ success += 1
58
+ else
59
+ #puts "FAIL:: " + ua_str
60
+ fail += 1
61
+ end
62
+ end
63
+
64
+ puts "BOT DETECTION"
65
+ puts success.to_s + " succeed. BENCHMARK: 376"
66
+ puts fail.to_s + " fail. BENCHMARK: 1083"
67
+
68
+ success = 0
69
+ fail = 0
70
+
71
+ browser_user_agent_strings.each do |ua_str|
72
+ ua = AgentOrange::UserAgent.new(ua_str)
73
+ if !ua.is_bot?
74
+ #puts "SUCCESS:: " + ua_str
75
+ success += 1
76
+ else
77
+ #puts "FAIL:: " + ua_str
78
+ fail += 1
79
+ end
80
+ end
81
+
82
+ puts "FALSE POSITIVES CHECK"
83
+ puts success.to_s + " succeed. BENCHMARK: 326"
84
+ puts fail.to_s + " fail. BENCHMARK: 4"
85
+
86
+ end
metadata CHANGED
@@ -1,24 +1,40 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: agent_orange
3
- version: !ruby/object:Gem::Version
4
- version: 0.1.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 1
10
+ version: 0.1.1
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Kevin Elliott
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-10-21 00:00:00.000000000Z
17
+
18
+ date: 2011-10-24 00:00:00 Z
13
19
  dependencies: []
20
+
14
21
  description: Parse and process User Agents like a secret one
15
- email:
22
+ email:
16
23
  - kevin@welikeinc.com
17
- executables:
24
+ executables:
18
25
  - agent_orange_example
19
26
  extensions: []
27
+
20
28
  extra_rdoc_files: []
21
- files:
29
+
30
+ files:
31
+ - .gitignore
32
+ - Gemfile
33
+ - README.rdoc
34
+ - Rakefile
35
+ - agent_orange.gemspec
36
+ - bin/agent_orange_example
37
+ - lib/agent_orange.rb
22
38
  - lib/agent_orange/base.rb
23
39
  - lib/agent_orange/browser.rb
24
40
  - lib/agent_orange/device.rb
@@ -27,33 +43,40 @@ files:
27
43
  - lib/agent_orange/platform.rb
28
44
  - lib/agent_orange/user_agent.rb
29
45
  - lib/agent_orange/version.rb
30
- - lib/agent_orange.rb
31
- - bin/agent_orange_example
32
- - Gemfile
33
- - Rakefile
34
- - README.rdoc
46
+ - lib/tasks/allagents.xml
47
+ - lib/tasks/bot_agent_test.rake
35
48
  homepage: http://github.com/kevinelliott/agent_orange
36
49
  licenses: []
50
+
37
51
  post_install_message:
38
52
  rdoc_options: []
39
- require_paths:
53
+
54
+ require_paths:
40
55
  - lib
41
- required_ruby_version: !ruby/object:Gem::Requirement
56
+ required_ruby_version: !ruby/object:Gem::Requirement
42
57
  none: false
43
- requirements:
44
- - - ! '>='
45
- - !ruby/object:Gem::Version
46
- version: '0'
47
- required_rubygems_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 3
62
+ segments:
63
+ - 0
64
+ version: "0"
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
66
  none: false
49
- requirements:
50
- - - ! '>='
51
- - !ruby/object:Gem::Version
52
- version: '0'
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ hash: 3
71
+ segments:
72
+ - 0
73
+ version: "0"
53
74
  requirements: []
75
+
54
76
  rubyforge_project: agent_orange
55
- rubygems_version: 1.8.10
77
+ rubygems_version: 1.8.5
56
78
  signing_key:
57
79
  specification_version: 3
58
80
  summary: Parse and process User Agents like a secret one
59
81
  test_files: []
82
+