2013-07-05 142 views
7

現在我正在計算機上運行一個抓取程序。它的規模很大,不幸的是因爲這個原因,我的IP地址被禁止從我需要的網站上刮取。有沒有一種方式,在Ruby中,或者甚至只是以一種簡單的方式,我可以切換我的IP地址,以便我可以被允許回到本站進行刮擦,或者我運氣不好,而且我可能不得不訴諸其他解決方案。這是一個403禁止錯誤,無論我使用nokogiri的值是多少,我的用戶代理都是紅寶石,謝謝。在ruby中更改IP地址

+2

您的IP地址與Ruby無關。重新啓動路由器/調制解調器通常會產生新的IP地址。 [Tor](https://www.torproject.org)也可以提供幫助。 – Stefan

+0

我明白了,但每當我嘗試颳去該網站時,由於我的IP地址而出現403錯誤,而且我確信這是由於我的IP地址。有沒有更高效的方式,我發現tore可以用於瀏覽器目的,但我需要一個更有效的實用方法來更改我的IP,然後重新啓動我的路由器/調制解調器,如果這是一個選項,最好使用ruby。 – user2109354

+2

Ruby只是使用你的網絡接口,你不能簡單地改變你的公共IP。 – Stefan

回答

14

你可以通過代理連接,如果你有一個代理地址列表,那麼你可以告訴ruby每x分鐘更換一次代理,這將導致網站認爲你有IP的變化。這裏有一個代碼通過代理來掃描谷歌搜索結果,使用代理列表只是擴展代碼。

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

哇,真的很棒,非常感謝,我開始覺得我被搞砸了,這是完美的。 – user2109354

+1

對於使用此方法的優質代理服務器,您有什麼建議嗎?我沒有使用代理服務的經驗。 –

+1

請嘗試https://www.hidemyass.com/? – fartagaintuxedo