Для bit.ly, в частности, вы можете использовать bit.ly API для выполнения вызова JSONP с использованием JavaScript для расширения рассматриваемых URL-адресов bit.ly.
В частности, вы бы использовали v3/expand
вызов.
Псевдокод:
var bitlyurl = "http://bit.ly/900913";
$.getJSON("http://api.bitly.com/v3/expand?shortUrl=" + encodeURIComponent(bitlyurl)+"&apikey=...&callback=?", function( bitlydata ){
var endurl = bitlydata.data.expand[0] //looks like this is where the end URL would point
});
Кроме того, вы можете перейти по URL-адресу на своем собственном сервере и использовать AJAX для проверки его значений.
Итак, выпередайте ему URL-адрес ($.get("/follow?url="+bitlyurl,function(data){var endurl = data.Location;});
и выполните HEAD-вызов для URL-адреса, чтобы увидеть, куда указывает Location.
Вот основные принципы того, как вы будете делать это в PHP:
<?php
$headers = get_headers($_GET["url"],1);
echo json_encode($headers);
?>
Ради интереса я реализовал конечную точку в реальном времени в App Engine, чтобы проверить, куда указывает URL-адрес. Не стесняйтесь использовать его! Базовый URL-адрес followtheredirect.appspot.com
, для него требуется параметр url и параметр обратного вызова, а затем возвращаетсяlocation
клавиша на полученном объекте, в случае успеха.
Пример кода:
$.getJSON("http://followtheredirect.appspot.com/?url="+encodeURIComponent('http://bitly.com/hhN7Ol')+"&callback=?",function(data){
var location = data.location;
});
Дайте мне знать, если вы найдете какие-либо ошибки :) это может быть немного грязно ...