Как получить перенаправляющую ссылку с php из bit.ly - PullRequest
4 голосов
/ 01 мая 2010

Я пытаюсь получить URL-ссылки на эти перенаправления bit.ly. Я пытался открыть ссылки bit.ly с file_get_contents, но он уже получает контент с перенаправленного сайта, но как получить его URL?

Ответы [ 4 ]

8 голосов
/ 01 мая 2010

Я не знал о bit.ly API, вот простой способ сделать это:

$context = array
(
    'http' => array
    (
        'method' => 'GET',
        'max_redirects' => 1,
    ),
);

@file_get_contents('http://bit.ly/cmUTtb', null, stream_context_create($context));

echo 'Redirect to: ' . str_replace('Location: ', '', $http_response_header[6]);
6 голосов
/ 01 мая 2010

Вы можете запросить API-интерфейс bit.ly ( документация ) для длинного URL. Вам понадобится ваше имя пользователя и ключ API (их можно найти на странице учетной записи ).

$endpoint = 'http://api.bit.ly/v3/expand?';
$params   = array(
    'shortUrl' => 'http://bit.ly/aUmUDq',
    'login'    => 'your_bitly_username',
    'apiKey'   => 'your_api_key',
    'format'   => 'txt'
);
$api_url = $endpoint . http_build_query($params);
echo file_get_contents($api_url);
1 голос
/ 01 мая 2010

Используйте curl , который не будет следовать перенаправлениям по умолчанию.

0 голосов
/ 16 января 2017

см. https://stackoverflow.com/a/41680608/7426396

Я реализовал для получения каждой строки простого текстового файла с одним сокращенным URL-адресом на строку, соответствующим URL-адресом перенаправления:

<?php
// input: textfile with one bitly shortened url per line
$plain_urls = file_get_contents('in.txt');
$bitly_urls = explode("\r\n", $plain_urls);

// output: where should we write
$w_out = fopen("out.csv", "a+") or die("Unable to open file!");

foreach($bitly_urls as $bitly_url) {
  $c = curl_init($bitly_url);
  curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36');
  curl_setopt($c, CURLOPT_FOLLOWLOCATION, 0);
  curl_setopt($c, CURLOPT_HEADER, 1);
  curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 20);
  // curl_setopt($c, CURLOPT_PROXY, 'localhost:9150');
  // curl_setopt($c, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
  $r = curl_exec($c);

  // get the redirect url:
  $redirect_url = curl_getinfo($c)['redirect_url'];

  // write output as csv
  $out = '"'.$bitly_url.'";"'.$redirect_url.'"'."\n";
  fwrite($w_out, $out);
}
fclose($w_out);

Веселись и наслаждайся! * PW 1007 *

...