require 'libhttpclient' def find_proxy count = 0 proxylist = nil begin proxy = File.read('lastproxy').chomp ENV['http_proxy'] = "http://#{proxy}/" puts "chickin proxy #{proxy}" h = HttpClient.new('guillot.iiens.net') h.allowbadget = true ans = h.post('/cgi-bin/proxytest', {}).content raise "invalid proxy: got #{ans}" if not ans.include? 'proxy test result' or ans.include? '82.227.12.18' or ans.include? 'ofjj.net' rescue puts 'getting new proxy', $!.class, $! if not proxylist ENV.delete 'http_proxy' proxylist = HttpClient.new("www.samair.ru").get("/proxy/").get_text.scan(/(\d+)\s*\.\s*(\d+)\s*\.\s*(\d+)\s*\.\s*(\d+)\s*:?\s*(\d+).*anon.*Canada/) proxylist = HttpClient.new("www.samair.ru").get("/proxy/").get_text.scan(/(\d+)\s*\.\s*(\d+)\s*\.\s*(\d+)\s*\.\s*(\d+)\s*:?\s*(\d+).*anon/) if proxylist.empty? proxylist += HttpClient.new("hidemyass.com").get("/free_proxy_lists.php?count=100").get_text.scan(/(\d+)\s*\.\s*(\d+)\s*\.\s*(\d+)\s*\.\s*(\d+)\s*:?\s*(\d+)/) end proxy = proxylist[rand(proxylist.length)] proxy = proxy[0, 4] * '.' + ':' + proxy[4] File.open('lastproxy', 'w') { |fd| fd.puts proxy } count += 1 abort 'no working proxy found :(' if count > 10 retry end puts 'ok' end find_proxy