2009-05-23 21 views

Respuesta

14

No utilizo Ruby pero la idea general es enviar una solicitud HTTP HEAD al servidor que a su vez devolverá una respuesta 301 (movido permanentemente) con el encabezado Location que contiene el URI.

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

RESPUESTA:

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 

Esto es mucho más rápido que la apertura de la URL real y que realmente no quieren buscar la URL redirigida. También funciona bien con el servicio tinyurl.

Mire cualquier HTTP o curl API dentro de ruby. Debería ser bastante fácil.

+0

Y para ser claros, este es un método efectivo para encontrar el destino de cualquier redirección. –

+5

Es posible que también desee comprobar el encabezado de cualquier ubicación determinada, de modo que pueda seguir una cadena de redireccionamientos. – rampion

11

se puede utilizar el httpclient rubygem para obtener las cabeceras

#!/usr/bin/env ruby 

require 'rubygems' 
require 'httpclient' 

client = HTTPClient.new 

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

Así que condensar las últimas tres líneas en una es útil para mí: 'longUrl = HTTPClient.new.head (" http://bit.ly/GFscreener12 ") .header ['Location'] [0]' – Marcos

Cuestiones relacionadas