【问题标题】:How to get long URL from short URL?如何从短网址获取长网址?
【发布时间】:2010-10-28 11:33:07
【问题描述】:

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

【问题讨论】:

    标签: ruby url bit.ly short


    【解决方案1】:

    我不使用 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。这应该很容易。

    【讨论】:

    • 需要明确的是,这是找到任何重定向目的地的有效方法。
    • 您可能还想检查任何给定位置的标题,以便您可以跟踪一系列重定向。
    【解决方案2】:

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

    #!/usr/bin/env ruby
    
    require 'rubygems'
    require 'httpclient'
    
    client = HTTPClient.new
    
    result = client.head(ARGV[0])
    puts result.header['Location']
    

    【讨论】:

    • 所以将最后三行压缩为一行对我很有用:longUrl = HTTPClient.new.head("http://bit.ly/GFscreener12").header['Location'][0]
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      相关资源
      最近更新 更多