如何从短URL获取长URL?

use*_*734 7 ruby url short bit.ly

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

ale*_*emb 14

我不使用Ruby,但一般的想法是向服务器发送HTTP HEAD请求,然后服务器将返回Location包含URI 的标头的301响应(Moved Permanently).

HEAD /5b2su2 HTTP/1.1
Host: tinyurl.com
Accept: */*
Run Code Online (Sandbox Code Playgroud)

响应:

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
Run Code Online (Sandbox Code Playgroud)

这比打开实际的URL要快得多,而您实际上并不想获取重定向的URL.它也很适合tinyurl服务.

查看ruby中的任何HTTP或curl API.它应该相当容易.

  • 您可能还想检查任何给定位置的标题,以便您可以遵循一系列重定向. (5认同)

小智 11

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

#!/usr/bin/env ruby

require 'rubygems'
require 'httpclient'

client = HTTPClient.new

result = client.head(ARGV[0])
puts result.header['Location']
Run Code Online (Sandbox Code Playgroud)