如果http://foo.com
重定向到1.2.3.4
然後重定向到http://finalurl.com
,我該如何使用Ruby來查找着陸URL「http://finalurl.com」?如何在使用Ruby重定向後獲取最終的URL?
17
A
回答
22
這裏有兩種方式,同時使用HTTPClient和Open-URI:
require 'httpclient'
require 'open-uri'
URL = 'http://www.example.org'
httpc = HTTPClient.new
resp = httpc.get(URL)
puts resp.header['Location']
>> http://www.iana.org/domains/example/
open(URL) do |resp|
puts resp.base_uri.to_s
end
>> http://www.iana.org/domains/example/
+1
最好使用httpc.head(URL)而不是httpc.get(URL)。這可以防止整個站點加載。 – cavneb 2013-01-23 19:06:01
0
我不是一個Ruby用戶,但你基本需要的東西是解釋HTTP標頭。下面庫似乎做到這一點:「下面的重定向」
http://www.ensta.fr/~diam/ruby/online/ruby-doc-stdlib/libdoc/net/http/rdoc/classes/Net/HTTP.html
跳過了
3
的另一種方法,使用Curb:
def get_redirected_url(your_url)
result = Curl::Easy.perform(your_url) do |curl|
curl.follow_location = true
end
result.last_effective_url
end
1
我實現了一個RequestResolver我需要:
https://gist.github.com/lulalala/6be104641bcb60f9d0e8
它使用Net :: HTTP,並遵循多個重定向。它也處理相對重定向。 這是爲了我的簡單需要,所以可能有錯誤。如果你發現一個請告訴我。
1
爲JRuby
這個工作
def get_final_url (url)
final_url = ""
until url.nil? do
final_url = url
url = Net::HTTP.get_response(URI.parse(url))['location']
end
final_url
end
相關問題
- 1. scrapy - 獲取最終重定向的URL
- 2. 如何使用python/urllib2重定向後確定最終的URL?
- 3. 用JavaScript重定向後獲取最終的URL
- 4. 如何使用angularjs的$ http獲得最終重定向的url
- 5. 如何獲得Ajax重定向後的最終URL?
- 6. 如何在純PHP中遵循HTTP重定向後獲取最終的URL?
- 7. 如何獲取具有一些JavaScript的最終重定向URL?
- 8. 得到最終的URL重定向後
- 9. 重定向後從XHR對象獲取最終url
- 10. 獲得最終的重定向URL
- 11. 如何在重定向後查看域的最終URL?
- 12. 如何在重定向後使用Javascript獲取URL路徑?
- 13. 使用apache HttpClient的最終URL(全部重定向後)
- 14. 如何在使用urllib2.urlopen時獲得最終的重定向URL?
- 15. 如何使用javascript重定向後獲取URL參數?
- 16. 如何在所有跟蹤鏈接重定向後獲得最終的重定向url?
- 17. 使用非常規方案獲取重定向請求的最終URL
- 18. watir ruby跟隨鏈接重定向並得到最終的url
- 19. 在golang中,如何確定一系列重定向後的最終URL?
- 20. 獲取WP_Http重定向後的最終目標(WordPress)
- 21. PHP得到最終的重定向URL
- 22. 迴應HTTPS重定向的最終URL
- 23. 使用curl獲取最終的重定向狀態代碼PHP
- 24. JS - 如何獲取重定向的URL
- 25. 如何獲取重定向的URL
- 26. 如何獲取OkHttp3重定向的URL?
- 27. 如何在使用python,django或基於shell的工具執行重定向之後捕獲最終的url?
- 28. curl被重定向後獲取url
- 29. PHP:獲取url後重定向
- 30. 獲取URL重定向後,從JavaScript
請出示一些示例代碼,以便我們可以告訴您所使用的HTTP客戶端。 – 2011-02-01 20:48:26
我使用了[final_redirect_url](https://rubygems.org/gems/final_redirect_url)gem來獲取最終重定向的url。它只是以字符串形式返回最終的URL。 – Indyarocks 2017-05-03 05:20:45