使用 Ruby,如何将短 URL(tinyURL、bitly 等)转换为相应的长 URL?
我不使用 Ruby,但总体思路是向服务器发送 HTTP HEAD 请求,服务器反过来将返回 301 响应(永久移动),其中包含 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 rubygem 来获取标头
#!/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 一定有类似的东西。