Last active
December 12, 2015 06:28
-
-
Save jackbit/4728983 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
# 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