Ruby 如何从短URL获取长URL?

Ruby 如何从短URL获取长URL?,ruby,url,bit.ly,short,Ruby,Url,Bit.ly,Short,使用Ruby,如何将短URL(tinyURL、bitly等)转换为相应的长URL?我不使用Ruby,但一般的想法是向服务器发送HTTP HEAD请求,然后服务器将返回301响应(永久移动),其中包含URI的位置头 HEAD /5b2su2 HTTP/1.1 Host: tinyurl.com Accept: */* 答复: HTTP/1.1 301 Moved Permanently Location: http://stackoverflow.com Content-type: text/h

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

我不使用Ruby,但一般的想法是向服务器发送HTTP HEAD请求,然后服务器将返回301响应(永久移动),其中包含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。这应该相当容易。

您可以使用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有一个很好的包装器:


所以Ruby肯定也有类似的功能。

而且要清楚,这是一种查找任何重定向目标的有效方法。您可能还需要检查任何给定位置的标题,以便可以遵循一系列重定向。因此,将最后三行压缩为一行对我很有用:
longUrl=HTTPClient.new.head("http://bit.ly/GFscreener12“”。标题['Location'][0]