Skip to content

Instantly share code, notes, and snippets.

@jackbit
Last active December 12, 2015 06:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jackbit/4728983 to your computer and use it in GitHub Desktop.
Save jackbit/4728983 to your computer and use it in GitHub Desktop.
# Authored by : Yacobus Reinhart
# Contact : Yacobus.Reinhart@gmail.com
# TODO : Convert it to Gem
require 'httparty'
require 'antigate'
module RobotParty
# Example usage:
# header_cookies_login = {'Cookie' => cookies}
# result = RobotParty.call("http://example.com/target_path", header_cookies_login)
def self.call(url, headers={}, random_agent=false)
headers.merge!({"User-Agent" => self. random_agents}) if random_agent
HTTParty.get(url, headers: {"User-Agent" => self. random_agents}).body
end
# Example usage:
# result, headers = RobortParty.call_with_login({ :email => "john.doe@example.com,
# :password => "loremipsum123",
# :commit => 'Log In' },
# "http://example.com/sign_in",
# "http://example.com/admin/users")
#
def self.call_with_login(body_login, login_url, next_url = "")
httparty = HTTParty.post(login_url, body: body_login)
headers = httparty.response.request.options[:headers]
if httparty.response.code == 200 && next_url.present?
result = self.next_url(url, headers)
end
return result, headers
end
def self.random_agents
[
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2",
"Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1309.0 Safari/537.17",
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.15 (KHTML, like Gecko) Chrome/24.0.1295.0 Safari/537.15",
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.14 (KHTML, like Gecko) Chrome/24.0.1292.0 Safari/537.14",
"Mozilla/4.0 (compatible; MSIE 8.0; AOL 9.7; AOLBuild 4343.27; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.$
"Mozilla/5.0 (compatible; MSIE 9.0; AOL 9.7; AOLBuild 4343.19; Windows NT 6.1; WOW64; Trident/5.0; FunWebProducts)",
"Mozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.5004; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.450$
"Opera/12.80 (Windows NT 5.1; U; en) Presto/2.10.289 Version/12.02",
"Opera/9.80 (Windows NT 6.1; U; es-ES) Presto/2.9.181 Version/12.00",
"Opera/9.80 (Windows NT 6.1; WOW64; U; pt) Presto/2.10.229 Version/11.62"
].shuffle.first
end
# Example usage:
# result, headers = RobortParty.call_with_captcha("http://example.com/target_with_captcha", "12345678", "my_regex_captcha", "my_regex_post_captcha")
#
def self.call_with_captcha(url, antigate_key, captcha_url_regex, captcha_post_url_regex)
captcha = Antigate.wrapper(antigate_key)
response = self.url(url,{},true)
captcha_url = response.match(/#{captcha_url_regex}/i).to_s
captcha_post_url = response.match(/#{captcha_post_url_regex}/i).to_s
if captcha_url.present?
captcha.phrase = 1
recognized = captcha.recognize(captcha_url, 'jpg') #save captcha image as jpg
captcha_text = recognized[1]
return self.call_with_login({captcha_field: captcha_text}, captcha_post_url)
end
return nil,nil
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment