2009-05-23 19 views

Odpowiedz

14

Nie używam Ruby, ale generalnie chodzi o wysłanie żądania HTTP HEAD do serwera, który z kolei zwróci odpowiedź 301 (przeniesiona na stałe) z nagłówkiem Location, który zawiera identyfikator URI.

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

ODPOWIEDŹ:

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 

Jest to o wiele szybciej niż otwarcie rzeczywisty adres URL i tak naprawdę nie chce pobrać przekierowany URL. Świetnie gra również z usługą tinyurl.

Przejrzyj wszystkie interfejsy API HTTP lub curl w ruby. To powinno być dość łatwe.

+0

Jest to skuteczna metoda wyszukiwania celu każdego przekierowania. –

+5

Możesz również sprawdzić nagłówek dowolnej lokalizacji, aby śledzić łańcuch przekierowań. – rampion

11

Można użyć httpclient rubygem uzyskać nagłówki

#!/usr/bin/env ruby 

require 'rubygems' 
require 'httpclient' 

client = HTTPClient.new 

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

Więc skondensowanie ostatnich trzech linii w jedną jest dla mnie przydatne: 'longUrl = HTTPClient.new.head (" http://bit.ly/GFscreener12 ") .header ['Location'] [0]' – Marcos

Powiązane problemy