【问题标题】:Change IP address in ruby在红宝石中更改IP地址
【发布时间】:2013-07-03 14:24:35
【问题描述】:

现在我正在我的电脑上运行一个抓取程序。它的规模很大,不幸的是,正因为如此,我的 IP 地址已被我需要抓取的网站禁止访问。有没有办法在 Ruby 中,或者甚至只是以一种简单的方式,我可以切换我的 IP 地址,这样我就可以被允许回到这个站点进行抓取,或者我运气不好,我可能不得不求助于其他解决方案。这是一个 403 禁止错误,无论我使用 nokogiri 和我的用户代理是 ruby​​ 有什么价值,谢谢。

【问题讨论】:

  • 您的 IP 地址与 Ruby 无关。重新启动路由器/调制解调器通常会产生一个新的 IP 地址。 Tor 也可以提供帮助。
  • 我明白,但是每当我尝试抓取网站时,由于我的 IP 地址,我会收到 403 错误,我确信这是由于我的 IP 地址造成的。有没有更有效的方法,我认为 tore 可以用于浏览器,但我需要一种更有效的实用方法来更改我的 IP,然后重新启动我的路由器/调制解调器,如果可以的话,最好在 ruby​​ 中。
  • Ruby 只使用您的网络接口,您不能简单地更改您的公共 IP。
  • 哦,好吧,无论如何,谢谢,有没有其他方法可以解决这个问题?
  • 刮痧时要温柔,设置程序不时小睡。

标签: ruby web-scraping screen-scraping


【解决方案1】:

您可以通过代理进行连接,如果您有代理地址列表,那么您可以告诉 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

【讨论】:

  • 哇,太棒了,非常感谢,我开始认为我被搞砸了,这太完美了。
  • 你有什么好的代理服务器可以使用这种方法的建议吗?我没有代理服务经验。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-09
相关资源
最近更新 更多