使用 Ruby,如何将短 URL(tinyURL、bitly 等)转换为相应的长 URL?
问问题
3277 次
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 rubygem 来获取标头
#!/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 回答