7

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

4

3 回答 3

14

我不使用 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 服务配合得很好。

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

于 2009-05-23T19:01:09.493 回答
11

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

#!/usr/bin/env ruby

require 'rubygems'
require 'httpclient'

client = HTTPClient.new

result = client.head(ARGV[0])
puts result.header['Location']
于 2009-05-23T21:15:20.800 回答
2

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

所以 Ruby 一定有类似的东西。

于 2009-06-09T09:31:52.787 回答