En utilisant Ruby, comment puis-je convertir les URLs courtes (tinyURL, bitly etc) en les URL longues correspondantes?Comment obtenir une URL longue à partir d'une URL courte?
Répondre
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.
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']
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
Il y a une grande wrapper pour l'API bitly en Python ici: http://code.google.com/p/python-bitly/
Donc, il doit y avoir quelque chose de similaire pour Ruby.
Et pour être clair, c'est une méthode efficace pour trouver la destination de n'importe quelle redirection. –
Vous pouvez également vérifier l'en-tête d'un emplacement donné, afin de suivre une série de redirections. – rampion