2009-05-23 12 views

risposta

14

Non uso Ruby ma l'idea generale è di inviare una richiesta HEAD HTTP al server che a sua volta restituirà una risposta 301 (spostata in modo permanente) con l'intestazione Location che contiene l'URI.

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

RISPOSTA:

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 

Questo è molto più veloce che aprire l'URL reale e non si vuole veramente per andare a prendere l'URL di reindirizzamento. Gioca anche bene con il servizio tinyurl.

Cerca in qualsiasi API HTTP o curl all'interno di ruby. Dovrebbe essere abbastanza facile.

+0

E per essere chiari, questo è un metodo efficace per trovare la destinazione di qualsiasi reindirizzamento. –

+5

Puoi anche controllare l'intestazione di qualsiasi posizione specifica, in modo da poter seguire una catena di reindirizzamenti. – rampion

11

è possibile utilizzare il httpclient rubygem per ottenere le intestazioni

#!/usr/bin/env ruby 

require 'rubygems' 
require 'httpclient' 

client = HTTPClient.new 

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

Quindi per me è utile condensare le ultime tre righe: 'longUrl = HTTPClient.new.head (" http://bit.ly/GFscreener12 ") .header ['Posizione'] [0]' – Marcos

Problemi correlati