2012-04-18 160 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

相關問題