user-agent-randomizer 0.1.2 → 0.2.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
  SHA1:
3
- metadata.gz: 667fae99b6eecdd25b4d32d5873e705f5361399d
4
- data.tar.gz: fc57c51ea2a99186c0dc54064bfc8a6dde22407a
3
+ metadata.gz: b1da61f53ea46a7db46dcb9c06e1e818a3e7b20f
4
+ data.tar.gz: 4ea424da7f7426c52ef4521471d29c61900a03ff
5
5
  SHA512:
6
- metadata.gz: 3a783b6123aa88426df83a9c7e6e4be773e865cde45f01e9e7dc50e6dd9aca80558b24acc0e29cf76e8f59cb3a378a57567e402e7d647ba31427d5bfc480e26b
7
- data.tar.gz: 2c9f4e69fb6445576f86e33e3e991859bd9932475d37bc4e216135faa118cfce5be0784ce1ecaaace2667d79f0b9d8306b515dd74531fcf4fcf2fc6bc689be1a
6
+ metadata.gz: d06f2088b10ffa1497a4d372951e7af1664d83f5d62563e6999e17ea84a8223c9fdd45b1501d8c95046bda731d2d95fad99cd9eaf166e3375d80b5b44873f934
7
+ data.tar.gz: 1a15e25a49920f5a63ce3e8273799f2fe7bc0b784da6e2d5d80b1652fe26eb9db7a60c41c3263d5a369b5d42ccc9f4c338ee1390a9dd1b1c97e4ebea443844e6
data/README.md CHANGED
@@ -36,23 +36,34 @@ And then execute:
36
36
 
37
37
  Or install it manually:
38
38
 
39
- $ gem install user_agent_randomizer
39
+ $ gem install user-agent-randomizer
40
40
 
41
41
  ## Usage
42
42
 
43
43
  The usage is pretty simple. You can fetch a random HTTP User-Agent string from the entire pool as well as one from a specified category (see the list above):
44
44
 
45
- ```ruby
46
- require 'user-agent-randomizer'
45
+ Open an IRB and require the gem first of all:
47
46
 
48
- # Fetch a random HTTP User-Agent string from the entire pool
49
- UserAgentRandomizer::UserAgent.new
50
- # => "AppEngine-Google; (+http://code.google.com/appengine; appid: longbows-hideout)"
47
+ irb> require 'user_agent_randomizer'
48
+ # => true
51
49
 
52
- # Fetch a random HTTP User-Agent for a desktop browser
53
- UserAgentRandomizer::UserAgent.new("desktop_browser")
54
- # => "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Iron/0.2.152.0 Safari/12733120.525"
55
- ```
50
+ Fetch a random HTTP User-Agent string from the entire pool:
51
+
52
+ irb> ua_all = UserAgentRandomizer::UserAgent.fetch
53
+ # => #<UserAgentRandomizer::UserAgent:0x007fe1f30a6658 @type="crawler", @string="CatchBot/1.0; http://www.catchbot.com">
54
+
55
+ Fetch a random HTTP User-Agent for a desktop browser:
56
+
57
+ irb> ua_desktop = UserAgentRandomizer::UserAgent.fetch(type: "desktop_browser")
58
+ # => #<UserAgentRandomizer::UserAgent:0x007fe1f2282b58 @type="desktop_browser", @string="Mozilla/4.6 [en] (WinNT; I)">
59
+
60
+ Retrieve the type and the string from the objects above:
61
+
62
+ irb> puts "UA general -> type: '#{ua_all.type}', string: '#{ua_all.string}'"
63
+ # => "UA general -> type: 'crawler', string: 'CatchBot/1.0; http://www.catchbot.com'"
64
+
65
+ irb> puts "UA desktop browser -> type: '#{ua_desktop.type}', string: '#{ua_desktop.string}'"
66
+ # => "UA desktop browser -> type: 'desktop_browser', string: 'Mozilla/4.6 [en] (WinNT; I)'"
56
67
 
57
68
  ## Contributing
58
69
 
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ $LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/..')
5
+ $LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
6
+
7
+ # require 'rubygems'
8
+ # require 'bundler'
9
+ require 'benchmark'
10
+ require 'user_agent_randomizer'
11
+ include Benchmark
12
+
13
+ times = ARGV[0] ? ARGV[0].to_i : 100_000
14
+ puts "Starting benchmark generating #{times} HTTP User-Agent strings ..."
15
+ Benchmark.benchmark(CAPTION, 40, FORMAT, nil) do |x|
16
+ x.report("UserAgent.fetch") do
17
+ times.times do
18
+ UserAgentRandomizer::UserAgent.fetch
19
+ end
20
+ end
21
+ x.report("UserAgent.fetch(type: 'desktop_browser'") do
22
+ times.times do
23
+ UserAgentRandomizer::UserAgent.fetch(type: 'desktop_browser')
24
+ end
25
+ end
26
+ end
@@ -23,12 +23,28 @@ end
23
23
 
24
24
  UserAgentRandomizer.config do
25
25
  parameter :user_agent_types
26
- parameter :user_agents
26
+ parameter :user_agents_hash
27
+ parameter :user_agents_array
28
+ end
29
+
30
+ if Gem.loaded_specs['user-agent-randomizer'].nil?
31
+ gem_path = File.expand_path("../..", __FILE__)
32
+ else
33
+ gem_path = Gem.loaded_specs['user-agent-randomizer'].full_gem_path
34
+ end
35
+
36
+ user_agents_hash = YAML.load_file(File.join(gem_path, 'data', 'user_agents.yml'))
37
+ user_agents_array = []
38
+ user_agents_hash.each_pair do |type, ua_strings|
39
+ ua_strings.each do |ua_string|
40
+ user_agents_array << {type: type, string: ua_string}
41
+ end
27
42
  end
28
43
 
29
44
  UserAgentRandomizer.config do
30
45
  user_agent_types ["crawler", "desktop_browser", "mobile_browser", "console",
31
46
  "offline_browser", "email_client", "link_checker", "email_collector",
32
- "validator", "feed_reader", "library", "cloud_platform", "other"]
33
- user_agents YAML.load_file(File.expand_path("data/user_agents.yml", Gem.datadir("user_agent_randomizer")))
47
+ "validator", "feed_reader", "library", "cloud_platform", "other"]
48
+ user_agents_hash user_agents_hash
49
+ user_agents_array user_agents_array
34
50
  end
@@ -12,13 +12,12 @@ module UserAgentRandomizer
12
12
  def self.fetch(options = {})
13
13
  type = options[:type]
14
14
  ua_types = UserAgentRandomizer.user_agent_types
15
- user_agents = UserAgentRandomizer.user_agents
15
+ user_agents_hash = UserAgentRandomizer.user_agents_hash
16
16
  if ua_types.include?(type)
17
- UserAgentRandomizer::UserAgent.new(type: type, string: user_agents[type].sample)
17
+ UserAgentRandomizer::UserAgent.new(type: type, string: user_agents_hash[type].sample)
18
18
  else
19
- ua_string = user_agents.values.flatten.sample
20
- ua_type = user_agents.select{|_,vals| vals.include?(ua_string)}.keys.first
21
- UserAgentRandomizer::UserAgent.new(type: ua_type, string: ua_string)
19
+ ua = UserAgentRandomizer.user_agents_array.sample
20
+ UserAgentRandomizer::UserAgent.new(type: ua[:type], string: ua[:string])
22
21
  end
23
22
  end
24
23
  end
@@ -1,4 +1,4 @@
1
1
  module UserAgentRandomizer
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
4
4
 
@@ -6,7 +6,7 @@ require 'user_agent_randomizer/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "user-agent-randomizer"
8
8
  spec.version = UserAgentRandomizer::VERSION
9
- spec.date = "2014-06-27"
9
+ spec.date = "2014-10-22"
10
10
  spec.authors = ["Christoph Pilka"]
11
11
  spec.email = ["c.pilka@asconix.com"]
12
12
  spec.summary = %q{Random HTTP User-Agent string generator}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: user-agent-randomizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christoph Pilka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-27 00:00:00.000000000 Z
11
+ date: 2014-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -107,6 +107,7 @@ files:
107
107
  - LICENSE
108
108
  - README.md
109
109
  - Rakefile
110
+ - benchmark/generate.rb
110
111
  - data/user_agents.yml
111
112
  - lib/user_agent_randomizer.rb
112
113
  - lib/user_agent_randomizer/user_agent.rb