@kirill-93

Как развернуть сокращенную ссылку ВК?

Пытаюсь разворачивать ссылки ВК с помощью curl. У них там целая цепочка.
Например, мне надо развернуть ссылку https://vk.com/away.php?to=https%3A%2F%2Fvk.cc%2F8... , которая в итоге приводит на сервис boom, если открыть ее в браузере.
Если же ее попытаться развернуть, то произойдет серия редиректов, которая упрется вот в такую ссылку https://vk.com/login?u=2&to=YWxfZmVlZC5waHA
Дальше развернуть не получится и даже открыть ее в браузере уже не получится.
Подскажите, пожалуйста, есть ли возможность развернуть сокращенные ссылки ВК?
  • Вопрос задан
  • 2386 просмотров
Решения вопроса 1
SerJook
@SerJook
кодер
Первую ссылку можно расшифровать без перехода по ней.
Потом выполнять запросы с выключенным CURLOPT_FOLLOWLOCATION.
Естественно надо проверять на ошибки и возможно зациклить.
<?php
function get_location($ch, $output){
    $curl_info = curl_getinfo($ch);
    $headers = substr($output, 0, $curl_info["header_size"]); //split out header
    preg_match("!\r\n(?:Location|URI): *(.*?) *\r\n!", $headers, $matches);
    return $matches[1];
}
$link = "https://vk.com/away.php?to=https%3A%2F%2Fvk.cc%2F8L3cD8&post=-75604109_25935&cc_key=";
$arr = parse_url($link);
parse_str($arr['query'], $output);

$vk_cc_link = $output['to'];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $vk_cc_link);
// Я задал эти параметры, потому что у меня на локалхосте не настроен SSL
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_HEADER, true);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec($ch);

$link = get_location($ch, $output);

$arr = parse_url($link);

parse_str($arr['query'], $out);
$new_link = $out['to'];
curl_setopt($ch, CURLOPT_URL, $new_link);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
$output = curl_exec($ch);
$link = get_location($ch, $output);
echo $link;
?>


Должно вывести:
https://boom.ru/redirect/album/6101146?web=1
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы