Как получить длинный URL из короткого URL? - PullRequest
7 голосов
/ 23 мая 2009

Как с помощью Ruby преобразовать короткие URL-адреса (tinyURL, bitly и т. Д.) В соответствующие длинные URL-адреса?

Ответы [ 3 ]

14 голосов
/ 23 мая 2009

Я не использую Ruby, но общая идея заключается в том, чтобы отправить HTTP-запрос HEAD на сервер, который, в свою очередь, вернет ответ 301 (постоянно перемещенный) с заголовком Location, который содержит URI.

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

РЕПЛИКА:

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

Это гораздо быстрее, чем открыть реальный URL, и вы не хотите получать перенаправленный URL. Это также хорошо работает с сервисом tinyurl.

Посмотрите на любые API HTTP или curl в ruby. Это должно быть довольно легко.

11 голосов
/ 24 мая 2009

Вы можете использовать httpclient rubygem, чтобы получить заголовки

#!/usr/bin/env ruby

require 'rubygems'
require 'httpclient'

client = HTTPClient.new

result = client.head(ARGV[0])
puts result.header['Location']
2 голосов
/ 09 июня 2009

Здесь есть отличная обёртка для битого API в Python: http://code.google.com/p/python-bitly/

Так что должно быть что-то подобное для Ruby.

...