2013-07-05 15 views
7

W tej chwili używam programu skrobiącego na moim komputerze. Ma ogromny rozmiar i niestety z tego powodu mój adres IP został zablokowany na stronie, którą muszę skrobać. Czy istnieje sposób, który w Ruby, lub nawet w prosty sposób, mogę zmienić adres IP, aby umożliwić mi powrót do tej strony w celu skrobania lub mam pecha, i być może będę musiał odwołać się do innych rozwiązania. Jest to niedozwolony błąd 403 i niezależnie od jego wartości używam nokogiri, a mój klient użytkownika jest ruby, dzięki.Zmień adres IP w ruby ​​

+2

Twój adres IP nie jest powiązany z Ruby. Ponowne uruchomienie routera/modemu zwykle skutkuje nowym adresem IP. [Tor] (https://www.torproject.org) również może pomóc. – Stefan

+0

Rozumiem, ale za każdym razem, gdy próbuję zeskanować witrynę, otrzymuję błąd 403 z powodu mojego adresu IP i jestem pewien, że jest to spowodowane moim adresem IP. Czy jest bardziej efektywny sposób, widzę, że rozerwanie będzie działało dla celów przeglądarki, ale potrzebuję bardziej efektywnego pragmatycznego sposobu na zmianę mojego IP, a następnie ponowne uruchomienie routera/modemu, najlepiej w rubinie, jeśli jest to opcja. – user2109354

+2

Ruby używa właśnie Twojego interfejsu sieciowego, nie możesz po prostu zmienić swojego publicznego adresu IP. – Stefan

Odpowiedz

14

Możesz łączyć się przez proxy, a jeśli masz listę adresów proxy, możesz powiedzieć ruby, aby zmieniał proxy co x minut, spowoduje to zmianę adresu IP, który strona uważa za masz. Oto kod do zeskanowania wyników wyszukiwania Google za pośrednictwem serwera proxy, aby użyć listy proxy, wystarczy nieco rozszerzyć kod.

require 'rubygems' 
require 'mechanize' 

agent = Mechanize.new 
agent.set_proxy '78.186.178.153', 8080 
page = agent.get('http://www.google.com/') 

google_form = page.form('f') 
google_form.q = 'new york city council' 

page = agent.submit(google_form, google_form.buttons.first) 

page.links.each do |link| 
    if link.href.to_s =~/url.q/ 
     str=link.href.to_s 
     strList=str.split(%r{=|&}) 
     url=strList[1] 
     puts url 
    end 
end 
+0

Wow, naprawdę świetnie, dziękuję bardzo, zacząłem myśleć, że byłem skręcony, to jest idealne. – user2109354

+1

Czy masz jakieś zalecenia dotyczące dobrych serwerów proxy do korzystania z tej metody? Nie mam doświadczenia z usługami proxy. –

+1

Spróbuj https://www.hidemyass.com/? – fartagaintuxedo