Расшифровка коротких ссылок

111
09 апреля 2021, 14:00

заинтересовал скрипт по расшифровке коротких ссылок Есть ссылка, например: http://langamepp.com/chtst/DAFB5E48618B4D60DB8B69822BB7DB74EBC36A7F50BD3141E9A3B93CFB0B0AF50A41771313FE250CA8D6 И она отсылается на http://live-gtrkomsk.cdnvideo.ru/gtrkomsk/gtrkomsk.sdp/playlist.m3u8 Интересует как получить ссылку на которую она ссылается. Нашел онлайн сервис http://backlinks-checker.dimax.biz/tools/rasshifrovka-korotkih-ssilok.php Интересует как работает скрипт? Зарание спасибо.

Answer 1

Как это работает в браузере (к чему вы привыкли):

  • браузер переходит по ссылке, а веб-сервер ему указывает на новую ссылку (редирект)
  • браузер переходит по новой ссылке
  • и так далее, пока не получит окончательный вариант (или будет исчерпан лимит редиректов в браузере, он нужен против бесконечных переходов)

Редирект осуществляется через 3xx коды

Поэтому нам нужна сетевая утилита, которая будет переходить последовательно по адресам до тех пор, пока не получит окончательную страницу.

Можно сделать через curl:

curl -sL --head http://langamepp.com/chtst/DAFB5E48618B4D60DB8B69822BB7DB74EBC36A7F50BD3141E9A3B93CFB0B0AF50A41771313FE250CA8D6 | grep Location

Получим

Location: http://langamepp.com/mnogoust.mp4

Немного про использованные опции:

  • -s подавляет вывод прогресс-бара
  • -L следовать редиректам
  • -head - запрашиваем только заголовки

grep Location - фильтрация по слову Location - это именно то, куда при 3xx коде идет переход.

Можно сделать и чисто средствами PHP, суть та же, курл там есть. Мне нравится более короткий вариант, который вызывает оболочку:

$uri = 'http://langamepp.com/chtst/DAFB5E48618B4D60DB8B69822BB7DB74EBC36A7F50BD3141E9A3B93CFB0B0AF50A41771313FE250CA8D6';
$cmd = sprintf('curl -sL --head %s | grep Location', escapeshellarg($uri));
$data = shell_exec($cmd);
echo $data;

Также есть ответ на enSO, там есть обработка варианта перехода через JavaScript

READ ALSO
PDO & PHP проверка значений

PDO & PHP проверка значений

Всем привет,такой вопрос,есть такая таблица в MYSQL

121
PHP показывает старый url, как пофиксить?

PHP показывает старый url, как пофиксить?

Вообщем в зависимости нажат ли чекбокс в JS прокидываю параметр в url, а в PHP меняю значение переменной в зависимости от urlВсе работает хорошо,...

126
Как в php через сущность создать колонку с типом float с точностью до сотых

Как в php через сущность создать колонку с типом float с точностью до сотых

Есть некая сущностьВ ней формируем колонку, например: num

95
bind_param() не хочет передавать значение для id

bind_param() не хочет передавать значение для id

Fatal error: Cannot pass parameter 6 by reference in E:\OSPanel\domains\localhost\miacum1php on line 41

119