2009-05-23 8 views

Répondre

14

Je n'utilise pas Ruby mais l'idée générale est d'envoyer une requête HTTP HEAD au serveur qui retournera une réponse 301 (Moved Permanently) avec l'en-tête Location qui contient l'URI.

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

RÉPONSE:

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 

Ceci est beaucoup plus rapide que d'ouvrir l'URL et vous ne voulez pas vraiment chercher l'URL de redirection. Il joue aussi bien avec le service tinyurl.

Regardez dans n'importe quelle API HTTP ou curl dans ruby. Cela devrait être assez facile.

+0

Et pour être clair, c'est une méthode efficace pour trouver la destination de n'importe quelle redirection. –

+5

Vous pouvez également vérifier l'en-tête d'un emplacement donné, afin de suivre une série de redirections. – rampion

11

Vous pouvez utiliser le httpclient rubygem pour obtenir les en-têtes

#!/usr/bin/env ruby 

require 'rubygems' 
require 'httpclient' 

client = HTTPClient.new 

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

Donc condenser les trois dernières lignes en une seule est utile pour moi: 'longUrl = HTTPClient.new.head (" http://bit.ly/GFscreener12 ") .header ['Location'] [0]' – Marcos

Questions connexes