-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_urlprivacy_url.

この種のリダイレクトに従い、結果の URL にプログラムでアクセスする方法はありますか?

4

1 に答える 1

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