Ruby では、次のように 301/302 リダイレクトに従って mechanize を使用すると、
require 'mechanize'
m = WWW::Mechanize.new
m.get('http://google.com')
リダイレクトされた機械化されたページのリストを取得する方法は? ( http://google.com => http://www.google.com => http://google.com.uaのように)
OK、これがリダイレクトを担当する mechanize のコードです
elsif res_klass <= Net::HTTPRedirection
return page unless follow_redirect?
log.info("follow redirect to: #{ response['Location'] }") if log
from_uri = page.uri
raise RedirectLimitReachedError.new(page, redirects) if redirects + 1 > redirection_limit
redirect_verb = options[:verb] == :head ? :head : :get
page = fetch_page( :uri => response['Location'].to_s,
:referer => page,
:params => [],
:verb => redirect_verb,
:redirects => redirects + 1
)
@history.push(page, from_uri)
return page
しかし m.history.map {|p| puts p.uri} は、最後のページの uri の 3 倍を示します。