2013-10-17 35 views
-1

我有一個URL,我需要檢索它重定向到的URL(重定向的數量是任意的)。如何關注URL重定向?

我工作的一個真實的例子是:

https://www.google.com/url?q=http://m.zynga.com/about/privacy-center/privacy-policy&sa=D&usg=AFQjCNESJyXBeZenALhKWb52N1vHouAd5Q 

最終將重定向到:

http://company.zynga.com/privacy/policy 

這是我很感興趣的URL

我試着與open-uri如下:

privacy_url = "https://www.google.com/url?q=http://m.zynga.com/about/privacy-center/privacy-policy&sa=D&usg=AFQjCNESJyXBeZenALhKWb52N1vHouAd5Q" 
final_url = nil 
open(privacy_url) do |h| 
    puts "Redirecting to #{h.base_uri}" 
    final_url = h.base_uri 
end 

但我不斷收到原始URL,這意味着final_url等於privacy_url

有什麼辦法可以遵循這種重定向並以編程方式訪問生成的URL?

回答

0

我終於做到了,使用機械寶石。他們的關鍵是啓用follow_meta_refresh選項,默認情況下它是禁用的。

下面是如何

require 'mechanize' 

browser = Mechanize.new 
browser.follow_meta_refresh = true 

start_url = "https://www.google.com/url?q=http://m.zynga.com/about/privacy-center/privacy-policy&sa=D&usg=AFQjCNESJyXBeZenALhKWb52N1vHouAd5Q" 
final_url = nil 
browser.get(start_url) do |page| 
    final_url = page.uri.to_s 
end 
puts final_url # => http://company.zynga.com/privacy/policy