Sử dụng Ruby, làm thế nào để chuyển đổi các URL ngắn (tinyURL, bitly, vv) thành các URL dài tương ứng?Cách lấy URL dài từ URL ngắn?
Trả lời
Tôi không sử dụng Ruby nhưng ý tưởng chung là gửi yêu cầu HTTP HEAD đến máy chủ mà lần lượt sẽ trả về 301 phản hồi (Đã di chuyển vĩnh viễn) với tiêu đề Location
chứa URI.
HEAD /5b2su2 HTTP/1.1
Host: tinyurl.com
Accept: */*
ỨNG PHÓ:
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
Đây là nhanh hơn nhiều so với mở URL thực tế và bạn không thực sự muốn lấy URL được chuyển hướng. Nó cũng chơi tốt với dịch vụ tinyurl.
Xem bất kỳ API HTTP hoặc curl nào trong ruby. Nó sẽ khá dễ dàng.
Bạn có thể sử dụng httpclient rubygem để có được những tiêu đề
#!/usr/bin/env ruby
require 'rubygems'
require 'httpclient'
client = HTTPClient.new
result = client.head(ARGV[0])
puts result.header['Location']
Vì vậy, việc ngưng tụ ba dòng cuối cùng thành một là hữu ích đối với tôi: 'longUrl = HTTPClient.new.head (" http://bit.ly/GFscreener12 ") .header ['Location'] [0]' – Marcos
Có một wrapper tuyệt vời cho các API bitly bằng Python có sẵn ở đây: http://code.google.com/p/python-bitly/
Vì vậy, phải có một cái gì đó tương tự cho Ruby.
Và để rõ ràng, đây là một phương pháp hiệu quả để tìm điểm đến của bất kỳ chuyển hướng nào. –
Bạn cũng có thể kiểm tra tiêu đề của bất kỳ vị trí cụ thể nào để bạn có thể theo dõi một chuỗi các chuyển hướng. – rampion