2012-04-18 123 views
1

如何通过Watir获取浏览器IP?我正在使用代理,我想验证它是否正常工作。 也许有代理工作的其他方式?获取浏览器IP(使用代理服务器)

这里是我当前的代码:

profile = Selenium::WebDriver::Firefox::Profile.new 
profile.proxy = Selenium::WebDriver::Proxy.new :http => 'my.proxy.com', :ssl => 'my.proxy.com' 
browser = Watir::Browser.new :firefox, :profile => profile 
browser.goto 'http://someurl.com' 

浏览器将打开URL,虽然代理不工作。

感谢您的帮助

+0

我不认为浏览器有IP,但整个机器。 Watir只是驱动浏览器。你将如何手动获取IP? – 2012-04-18 14:48:57

+0

问题是,如果你在一个代理的后面,那么当你发出请求的时候,世界其他地方看到的IP不是你本地盒子的IP,因此需要在野外反弹一台服务器,看看它认为它在哪里请求来自。如果您需要在托管测试环境的云服务器上配置防火墙,以便它能够接受您的请求,这可能很重要。 – 2012-04-18 17:50:47

+0

@ChuckvanderLinden - 我认为他需要解决的问题是验证他确实正在通过代理,并且知识产权已经改变。 – 2012-04-19 16:27:25

回答

2

这实在是没有得到解决这个,但你可以使用以下方法来获取IP的方式漂亮。

browser.goto("http://www.whatsmyip.org/") 
ip = browser.span(:id, "ip").text 

正如我所说,它真的不是一个理想的方式,但我不知道如果watir有权访问您的IP。

请注意,如果您使用上述网站,请尊重作者的意愿,并且不会对网站产生大量请求。如果你看看源代码,你会发现这个评论:

请不要编程一个机器人使用本网站来获取您的IP地址。它 杀死我的服务器,那不是很好。只需获得一些廉价或免费的网络托管和制作您自己的IP专用页面来为您的机器人提供动力。那你 甚至不会解析任何HTML,只需直接加载IP - 更好的 为大家!

作为网络的好公民,我们需要尊重这一点。我怀疑他每天都会因为几次点击而感到不安,但是如果你的脚本做了这么多事情,请制作你自己的反射页面来将你的IP报告给你。

+0

我一直很喜欢http://www.ipchicken。com:D – 2012-04-18 14:27:49

+0

是的,但是ipchicken的html缺少任何标识符,这使得使用不会变脆的东西来获得IP地址更加痛苦(尽管正则表达式可能会工作得很好,我想,只是对于一些新手来说,正则表达式类似于黑魔法) – 2012-04-18 17:47:31

+0

除了阅读显示IP的网站之外,还有其他方法吗? – Aljaz 2012-04-18 19:21:23

2

你不需要Watir去通过代理来获取IP。您可以使用net/http,它具有较少的开销并且更容易。顺便说一句,我在这里使用whatsmyip.com,但我不相信它是如此可靠。还有其他包括http://whatismyipaddress.com,http://show-ip.net,http://ipchicken.com,http://www.ipaddresslocation.org,http://www.myipaddress.com/show-my-ip-address/,http://www.lawrencegoetz.com/programs/ipinfo/,http://www.find-ip-address.org

require 'net/http' 
uri = URI("http://automation.whatismyip.com/n09230945.asp") 
Net::HTTP::Proxy(proxyhost, proxyport, proxyuser, proxypassword).start(uri.host) do |http| 
    req = Net::HTTP::Get.new(uri.path=='' ? '/' : uri.path) 
    @ip = http.request(req).body.scan /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/ 
end 
+0

只是不选择像whatismyip.org这样的网站,在图像中有IP地址..除非你想花很多时间来剃光OCR牦牛。 – 2012-04-18 17:48:43

+0

我需要验证代理是否正在工作,所以我在想什么是最简单的方法来检查。也许还有其他解决方案吗? – Aljaz 2012-04-18 19:20:18

+0

有没有其他的方法来检查代理是否在工作?或者在不使用这些服务的情况下获得IP? – Aljaz 2012-04-18 19:20:49

相关问题