我有一个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
这是我感兴趣的网址。
我尝试使用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
但我不断收回原始网址,这意味着final_url
等于privacy_url
。
有没有办法遵循这种重定向并以编程方式访问生成的URL?
答案 0 :(得分:0)
我终于使用Mechanize gem制作了它。它们的关键是启用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