2009-05-23 20 views

Trả lời

14

Tôi không sử dụng Ruby nhưng ý tưởng chung là gửi yêu cầu HTTP HEAD đến máy chủ mà lần lượt sẽ trả về 301 phản hồi (Đã di chuyển vĩnh viễn) với tiêu đề Location chứa URI.

HEAD /5b2su2 HTTP/1.1 
Host: tinyurl.com 
Accept: */* 

ỨNG PHÓ:

HTTP/1.1 301 Moved Permanently 
Location: http://stackoverflow.com 
Content-type: text/html 
Date: Sat, 23 May 2009 18:58:24 GMT 
Server: TinyURL/1.6 

Đây là nhanh hơn nhiều so với mở URL thực tế và bạn không thực sự muốn lấy URL được chuyển hướng. Nó cũng chơi tốt với dịch vụ tinyurl.

Xem bất kỳ API HTTP hoặc curl nào trong ruby. Nó sẽ khá dễ dàng.

+0

Và để rõ ràng, đây là một phương pháp hiệu quả để tìm điểm đến của bất kỳ chuyển hướng nào. –

+5

Bạn cũng có thể kiểm tra tiêu đề của bất kỳ vị trí cụ thể nào để bạn có thể theo dõi một chuỗi các chuyển hướng. – rampion

11

Bạn có thể sử dụng httpclient rubygem để có được những tiêu đề

#!/usr/bin/env ruby 

require 'rubygems' 
require 'httpclient' 

client = HTTPClient.new 

result = client.head(ARGV[0]) 
puts result.header['Location'] 
+0

Vì vậy, việc ngưng tụ ba dòng cuối cùng thành một là hữu ích đối với tôi: 'longUrl = HTTPClient.new.head (" http://bit.ly/GFscreener12 ") .header ['Location'] [0]' – Marcos