1

有谁知道是否有一种简单的方法可以记录 url 重定向路径上的所有 url?

例如: url: (url 1) 重定向到 (url 2) 重定向到 (url 3)。

我想编写一个脚本,输入字符串(url 1)并返回(url 2)和(url 3)。

有没有一种简单的方法可以做到这一点(最好不使用 javascript)?

4

3 回答 3

1

在蟒蛇中:

import requests

url = 'http://google.com'

r = requests.get(url)

urls = [e.url for e in r.history]+[r.url]

然后你得到:

>>>urls
[u'http://google.com', u'http://www.google.com/']

仅当重定向在 http 层(30x 范围)时才有效

于 2013-10-14T18:44:00.293 回答
0
require 'net/http'

def redirect_tracker(url)
  paths_array = [url]
  code = nil

  begin
    response = Net::HTTP.start(URI.parse(url).host){|http| http.request Net::HTTP::Head.new(url) }
    code = response.code.to_i
    paths_array << url if url = response['location']        
  end while (301..303).include?(code)

  return paths_array
end

redirect_tracker('http://google.com') 
# => ["http://google.com/", "http://www.google.com/"]
于 2013-10-10T16:20:53.353 回答
0

给定一个$response来自 LWP 的,

my @request_uris;
while ($response) {
   unshift @request_uris, $response->request->uri;
   $response = $response->previous;
}
于 2013-10-10T16:51:08.007 回答