2015-05-21 3 views
0

То, что я хочу сделать эторубин механизировать прокси повторить попытку, пока не подключен

У меня есть список прокси с IP | порт

Теперь Mechanize использует те прокси, и я поставил

open_timeout = 20 
read_timeout = 20 

То, что я хочу, это повторить попытку, но он будет повторять с тем же прокси-сервером, даже если у меня есть «proxies = @ proxies.order (« RANDOM() »). Сначала« он не будет загружать новый прокси-сервер, но вместо этого он будет загрузка из кеша

вот мой код, который я использую:

begin 
    proxies = @proxies.order("RANDOM()").first 
    proxy_ip = proxies.ip 
    proxy_port = proxies.port 
    puts proxy_ip 
    puts proxy_port 

    agent = Mechanize.new 
    agent.open_timeout = 20 
    agent.read_timeout = 20 
    agent.set_proxy(proxy_ip, proxy_port) 


    page = agent.get("http://whatismyip.org/" 
rescue 
    puts "oh shit, error" 
    retry 

end 
    doc = page.parser 
    ip_ad = doc.css('span').text 
    puts ip_ad 

Теперь мой вопрос, как я могу сделать это загрузить новый прокси-сервер, вместо того, чтобы использовать его из кэша

+0

Ваш вопрос вы должны использовать цикл? Да, вы, наверное, должны. – pguardiario

+0

и где я должен поставить этот цикл? на странице page = agent.get («http://whatismyip.org/» и откуда я знаю, если это 200 ok? –

+0

Я woud предлагаю 'while proxies = @ proxies.order (" RANDOM() ") .first' и проверка 'page.code' – pguardiario

ответ

0

Для любого, кто приходит сюда из Google это, как Я решил его

offset = rand(Proxy.count) 
proxies = @proxies.offset(offset).first 

Я использую смещение и он работает как шарм и это

начинают страницу = minion.submit (форма, кнопка)

 rescue Mechanize::ResponseCodeError => e 

      offset = rand(Proxy.count) 
      proxies = @proxies.offset(offset).first 
      proxy_ip = proxies.ip 
      proxy_port = proxies.port 
      puts proxy_ip 
      puts proxy_port 

      minion.open_timeout = 3.0 
      minion.read_timeout = 3.0 
      minion.cookie_jar.clear! 
      minion.max_history = 0 
      #minion.set_proxy(proxy_ip, proxy_port) 

      sleep 5.0 

      if page.parser.xpath('//h2[contains(@class,"name")]').text == "Ingen träff" 
       puts "ingen träff" 
      else 
       puts "retrying" 
       retry 
      end 

    end 

Наслаждайтесь, ребята