使用带有ruby脚本的代理IP

时间:2012-12-10 01:50:32

标签: ruby macos proxy webserver ip

我正在尝试从我的计算机运行ruby脚本,我希望脚本使用我设置的代理IP地址/服务器,而不是与本地计算机关联的默认IP地址。

我已经能够通过在网络设置中进行更改来使我的Web浏览器使用此代理IP地址。但是当我从textmate运行ruby脚本时,它似乎没有使用我已放入网络设置的代理IP地址。相反,它默认返回到我本地计算机的基本IP地址。

我可以在textmate或脚本本身做些什么来指定它应该路由的代理IP地址吗?

我的脚本如下所示:

require "open-uri"
url = "some-url"
pattern = "<img"   


page = open(url).read
tags = page.scan(pattern)
puts "The site #{url} has #{tags.length} img tags"

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

使用:proxy选项让open-uri知道您的代理服务器:

page = open(url, :proxy => "http://#{proxy_host}:#{proxy_port}/").read

您也可以设置环境变量http_proxy。如果您这样做,请提供:proxy => true选项。

page = open(url, :proxy => true).read

[ADDED]

如果您希望将代理与基本身份验证结合使用,则可以按以下方式提供:proxy_http_basic_authentication选项而不是:proxy

:proxy_http_basic_authentication => ["http://#{proxy_host}:#{proxy_port}/", login, password]

请注意,:proxy_http_basic_authentication可用于ruby 1.9.2或更高版本

答案 1 :(得分:0)

我建议使用mechanize和css而不是regex:

require "mechanize"
url = "http://www.google.com/"

@agent = Mechanize.new{|a| a.set_proxy 'localhost', 8888}
page = @agent.get url
tags = page.search('img')
puts "The site #{url} has #{tags.length} img tags"