如何从短URL获取长URL?

时间:2009-05-23 18:51:16

标签: ruby url bit.ly short

使用Ruby,如何将短URL(tinyURL,bitly等)转换为相应的长URL?

3 个答案:

答案 0 :(得分:14)

我不使用Ruby,但一般的想法是向服务器发送HTTP HEAD请求,而服务器将返回301响应(Moved Permanently),其中包含URI的Location标头。

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服务。

查看ruby中的任何HTTP或curl API。这应该相当容易。

答案 1 :(得分:11)

您可以使用httpclient ruby​​gem来获取标题

#!/usr/bin/env ruby

require 'rubygems'
require 'httpclient'

client = HTTPClient.new

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

答案 2 :(得分:2)

Python中的bitly API有一个很棒的包装器: http://code.google.com/p/python-bitly/

所以Ruby必须有类似的东西。