如何从短URL获取长URL?

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

我不使用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。 它应该相当容易。

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

 #!/usr/bin/env ruby require 'rubygems' require 'httpclient' client = HTTPClient.new result = client.head(ARGV[0]) puts result.header['Location'] 

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

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

Interesting Posts