-1

我有一个 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?

4

1 回答 1

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
于 2013-10-18T01:23:39.630 回答