Задать вопрос
CrazyKing
@CrazyKing

Как правильно использовать прямую ссылку с Яндекс.диска?

Добрый день!
Суть проблемы:
Есть скрипт:
$public_key = "https://yadi.sk/d/AvWmc-wb0fK1vw";  //публичная ссылка на Яндекс.Диск
$json_decode = json_decode(file_get_contents("https://cloud-api.yandex.net/v1/disk/public/resources/download?public_key=".$public_key),true); //получаем прямую ссылку
$link = $json_decode[href]; //выбираем только ссылку из JSON

  echo '</br><a href="' . $link . '">Скачать</a>'; // выводим ссылку на скачивание


Всё вроде бы хорошо но, когда я пытаюсь перейти по ссылке, получаю в ответ статус 403:

5f23e22018656067756651.png

При этом, если просто вбить полученную ссылку в браузере, он без проблем даёт скачать файл, и после этого ссылка начинает работать как надо.
Вопрос, можно ли как-то обойти ручные манипуляции с браузером и сразу скачать файл?
  • Вопрос задан
  • 20078 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
@alekssamos
Программист любитель
Ответ написан
Комментировать
Яндекс начал блокировать частые запросы с сайтов.

Решением оказалось включить в html заголовок head метатег:
<meta name="referrer" content="no-referrer" />
Это чтобы ваш сайт не передавал откуда идет запрос к картинке или к файлу.

Альтернатива указывать не глобально как сказано выше, а указывать для каждой ссылки rel="noreferrer", как в примере ниже:
<a href="http://example.com/" rel="noreferrer">ssilka</a>


На нашем сервисе https://getfile.dokpub.com/yandex/ реализован именно точно такой же механизм.

Связанные вопросы:
Как программно скачать файл с Яндекс.Диск?
Ответ написан
Ваш ответ на вопрос

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

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