Created
January 26, 2010 16:27
-
-
Save kjvarga/286970 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'net/http' | |
require 'uri' | |
# | |
# Call with one of do_post, do_get or do_put. | |
# Headers are automatically added to your options, so don't include them in your call. | |
# The URL must be provided as a URI object so that it can be found in the list of arguments. | |
# | |
# e.g. puts SimpleHTTP.do_get(URI.parse('http://whatsmyuseragent.com/')) | |
# puts "successful request? #{FakeUserAgent.success?}" | |
# | |
class SimpleHTTP | |
cattr_accessor :open_timeout | |
def self.do_request(method, url, data=nil) | |
uri = url.is_a?(URI) ? url : URI.parse(url) | |
uri.instance_eval { def empty?; false; end; } | |
server = Net::HTTP.new(uri.host, uri.port) | |
server.set_debug_output(ActiveRecord::Base.logger.instance_variable_get(:@log)) unless ENV['RAILS_ENV'] == 'production' rescue nil | |
server.open_timeout = self.open_timeout || 15 | |
args = [method, uri.path] | |
args << build_query(uri, data) unless data.nil? | |
args << headers | |
@response = server.send(*args) | |
end | |
def self.headers | |
{ 'User-Agent' => FAKE_USER_AGENTS.rand, | |
'Referer' => FAKE_REFERRERS.rand } | |
end | |
def self.do_post(url, data=nil) | |
self.do_request('request_post', url, data) | |
end | |
def self.do_get(url) | |
self.do_request('request_get', url) | |
end | |
# def self.do_put(url, data={}) | |
# self.send(:do_request, 'send_request', 'PUT', url, data) | |
# end | |
def self.success? | |
return @response && @response.code_type.superclass == Net::HTTPSuccess | |
end | |
protected | |
def self.build_query(uri, data) | |
if data.is_a?(Hash) | |
data = data.collect { |k,v| [k,CGI.escape(v.to_s)].join('=') }.join('&') | |
end | |
uri.query.nil? ? data : (uri.query + '&' + data) | |
end | |
end | |
FAKE_REFERRERS = [ | |
'http://www.richmondgreyhounds.com.au/links.htm', | |
'google.com', | |
'' | |
] | |
FAKE_USER_AGENTS = [ | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Maxthon/3.0 Safari/530.6', | |
'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; MathPlayer 2.10d; .NET CLR 3.5.30729; .NET CLR 2.0.50727', | |
'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NE', | |
'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729)', | |
'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE51-1/300.34.56; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/', | |
'Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5800d-1/21.0.025; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit', | |
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3', | |
'Mozilla/4.0 (compatible; MSIE 6.0; AOL 9.5; AOLBuild 4337.29; Windows NT 5.1)', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.3) Gecko/20090912 Firefox/3.5.3', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.3) Gecko/20090912 Firefox/3.5.3 (pigfoot)', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.3) Gecko/20090912 Firefox/3.5.3 (pigfoot)', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Maxthon/3.0 Safari/530.6', | |
'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.3) Gecko/20090909 Fedora/3.5.3-1.fc11 Firefox/3.5.3', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Maxthon/3.0 Safari/530.6', | |
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.6 (KHTML, like Gecko) Maxthon/3.0 Safari/530.6', | |
'Mozilla/5.0 (compatible; Konqueror/4.1; Linux 2.6.27.29-0.1-pae; X11; i686; ru, en-US, en) KHTML/4.1.3 (like Gecko) SUSE', | |
'Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8', | |
'Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8', | |
'Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8', | |
'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a1pre) Gecko/20090428 Firefox/3.6a1pre', | |
'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a1pre) Gecko/20090405 Firefox/3.6a1pre', | |
'Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.9.2a1pre) Gecko/20090405 Ubuntu/9.04 (jaunty)', | |
'Mozilla/5.0 (Windows; Windows NT 5.1; es-ES; rv:1.9.2a1pre) Gecko/20090402 Firefox/3.6a1pre', | |
'Mozilla/5.0 (Windows; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090402 Firefox/3.6a1pre', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2a1pre) Gecko/20090402 Firefox/3.6a1pre (.NET CLR 3.5.30729)', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b5pre) Gecko/20090517 Firefox/3.5b4pre (.NET CLR 3.5.30729)', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b4pre) Gecko/20090409 Firefox/3.5b4pre', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b4pre) Gecko/20090401 Firefox/3.5b4pre', | |
'Mozilla/5.0 (X11; U; Linux i686; nl-NL; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 GTB5 (.NET CLR 3.5.30729)', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 (.NET CLR 3.5.30729)', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 (.NET CLR 3.5.30729)', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 (.NET CLR 3.5.30729)', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4', | |
'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4', | |
'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 GTB5', | |
'Mozilla/5.0 (X11; U; Linux x86_64; es-AR; rv:1.9.0.2) Gecko/2008091920 Firefox/3.0.2 Flock/2.0b3', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.2) Gecko/2008092122 Firefox/3.0.2', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.2) Gecko/2008083108 Firefox/3.0.2 Flock/2.0b3', | |
'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071523 Firefox/3.0.1 Flock/2.0b2', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008071523 Firefox/3.0.1 Flock/2.0b2', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9) Gecko/2008061302 Firefox/3.0 Flock/2.0b1', | |
'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9pre) Gecko/2008051917 Firefox/3.0pre Flock/2.0a1pre', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008121620 Firefox/3.0.5 Flock/2.0.3', | |
'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.0.5) Gecko/2008121716 Firefox/3.0.5 Flock/2.0.3', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.4) Gecko/2008112016 Firefox/3.0.4 Flock/2.0.2', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.4) Gecko/2008112016 Firefox/3.0.4 Flock/2.0.2', | |
'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.4) Gecko/2008111323 Firefox/3.0.4 Flock/2.0.2', | |
'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.0.4) Gecko/2008111323 Firefox/3.0.4 Flock/2.0.2', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/526.9 (KHTML, like Gecko) Version/4.0dp1 Safari/526.8', | |
'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; tr) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2', | |
'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; en) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2', | |
'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; de) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2', | |
'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20081212 Mozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/526.9 (KHTML, like Gecko) Version/4.0dp1 Safari/526.8', | |
'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-gb) AppleWebKit/528.10+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2', | |
'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; en-us) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2', | |
'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; en-gb) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-us) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9', | |
'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; en-us) AppleWebKit/532.0+ (KHTML, like Gecko) Version/4.0.3 Safari/531.9.2009', | |
'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; en-us) AppleWebKit/532.0+ (KHTML, like Gecko) Version/4.0.3 Safari/531.9', | |
'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; fi-fi) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532+ (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-TW) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.0; pl-PL) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.0; fr-FR) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1', | |
'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.2; de-DE) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1', | |
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1', | |
'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_7; en-us) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19', | |
'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19', | |
'Opera/9.70 (Linux ppc64 ; U; en) Presto/2.2.1', | |
'Opera/9.70 (Linux i686 ; U; zh-cn) Presto/2.2.0', | |
'Opera/9.70 (Linux i686 ; U; en-us) Presto/2.2.0', | |
'Opera/9.70 (Linux i686 ; U; en) Presto/2.2.1', | |
'Opera/9.70 (Linux i686 ; U; en) Presto/2.2.0', | |
'Opera/9.70 (Linux i686 ; U; ; en) Presto/2.2.1', | |
'Mozilla/5.0 (Linux i686 ; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.70', | |
'Mozilla/4.0 (compatible; MSIE 6.0; Linux i686 ; en) Opera 9.70', | |
'Opera 9.7 (Windows NT 5.2; U; en)', | |
'Opera/9.64(Windows NT 5.1; U; en) Presto/2.1.1', | |
'Opera/9.64 (X11; Linux x86_64; U; pl) Presto/2.1.1', | |
'Opera/9.64 (X11; Linux x86_64; U; hr) Presto/2.1.1', | |
'Opera/9.64 (X11; Linux x86_64; U; en-GB) Presto/2.1.1', | |
'Opera/9.64 (X11; Linux x86_64; U; en) Presto/2.1.1', | |
'Opera/9.64 (X11; Linux x86_64; U; de) Presto/2.1.1', | |
'Opera/9.64 (X11; Linux x86_64; U; cs) Presto/2.1.1', | |
'Opera/9.64 (X11; Linux i686; U; tr) Presto/2.1.1', | |
'Opera/9.64 (X11; Linux i686; U; sv) Presto/2.1.1', | |
'Opera/9.64 (X11; Linux i686; U; pl) Presto/2.1.1', | |
'Opera/9.64 (X11; Linux i686; U; nb) Presto/2.1.1', | |
'Opera/9.64 (X11; Linux i686; U; Linux Mint; nb) Presto/2.1.1', | |
'Opera/9.64 (X11; Linux i686; U; Linux Mint; it) Presto/2.1.1', | |
'Opera/9.64 (X11; Linux i686; U; en) Presto/2.1.1', | |
'Opera/9.64 (X11; Linux i686; U; de) Presto/2.1.1', | |
'Opera/9.64 (X11; Linux i686; U; da) Presto/2.1.1', | |
'Opera/9.64 (Windows NT 6.1; U; de) Presto/2.1.1', | |
'Opera/9.64 (Windows NT 6.0; U; zh-cn) Presto/2.1.1', | |
'Opera/9.64 (Windows NT 6.0; U; pl) Presto/2.1.1', | |
'Opera/9.64 (Windows NT 6.0; U; it) Presto/2.1.1', | |
'Opera/9.63 (X11; Linux x86_64; U; ru) Presto/2.1.1', | |
'Opera/9.63 (X11; Linux x86_64; U; cs) Presto/2.1.1', | |
'Opera/9.63 (X11; Linux i686; U; ru) Presto/2.1.1', | |
'Opera/9.63 (X11; Linux i686; U; ru)', | |
'Opera/9.63 (X11; Linux i686; U; nb) Presto/2.1.1', | |
'Opera/9.63 (X11; Linux i686; U; en)', | |
'Opera/9.63 (X11; Linux i686; U; de) Presto/2.1.1', | |
'Opera/9.63 (X11; Linux i686)', | |
'Opera/9.63 (X11; FreeBSD 7.1-RELEASE i386; U; en) Presto/2.1.1', | |
'Opera/9.63 (Windows NT 6.1; U; hu) Presto/2.1.1', | |
'Opera/9.63 (Windows NT 6.1; U; en) Presto/2.1.1', | |
'Opera/9.63 (Windows NT 6.1; U; de) Presto/2.1.1', | |
'Opera/9.63 (Windows NT 6.0; U; pl) Presto/2.1.1', | |
'Opera/9.63 (Windows NT 6.0; U; nb) Presto/2.1.1', | |
'Opera/9.63 (Windows NT 6.0; U; fr) Presto/2.1.1', | |
'Opera/9.63 (Windows NT 6.0; U; en) Presto/2.1.1', | |
'Opera/9.63 (Windows NT 6.0; U; cs) Presto/2.1.1', | |
'Opera/9.63 (Windows NT 5.2; U; en) Presto/2.1.1', | |
'Opera/9.63 (Windows NT 5.2; U; de) Presto/2.1.1', | |
'Opera/9.63 (Windows NT 5.1; U; pt-BR) Presto/2.1.1' | |
] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment