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

VK audio.get и неверный URL, решение?

Здравствуйте, решил сделать небольшое веб приложения для прослушивания музыки с ВК (после удаления Аудиозаписей с iOS), в итоге, плеер успешно получает все записи, успешно получает Артиста, Название, Обложку (через iTunes), однако напрочь отказывается воспроизводить трек.

Я понимаю что дело в том, что пользователь зашел с IP 123.234.123.234 (пример)
а у сервера IP 234.123.234.123 (пример), следовательно после привязки записи к IP, сервер ВК уже не может отдать пользователю запись, но отдает ее самому серверу. Следовательно, у меня вопрос, как можно воспроизвести музыку у пользователя, совершив запрос с сервера?
Вот кстати изображение с результатом (в консоли прямой запрос того же URL с сервера)
3dcc3a9b0342489b91debf8dafa5f4a3.PNG
(Картинка кликабельна, взята с Habrastorage)

Бекэндом является PHP, следовательно все запросы идут через него + OAuth2.0

Вот ссылка на localhost:
https://cs1-31v4.vk-cdn.net/p8/7aa9ddecd985e9.mp3 - Все работает, можно слушать (запрос то с одного IP)

А вот ссылка с сервера:
https://psv6.vk.me/c4510/u58711694/audios/a45df583... - Сервер может прослушать (через RDP), а вот пользователь из браузера получит ошибку, мол страницы не существует

Есть ли какие-либо решения данной проблемы, или же это было сделано специально, дабы запретить такой вид прослушивания музыки?

P.S. Вычитал на stackoverflow что можно попробовать задать CURLOPT_HTTPHEADER вида
CURLOPT_HTTPHEADER => array("REMOTE_ADDR: ".$_SERVER['REMOTE_ADDR'], "HTTP_X_FORWARDED_FOR: ".$_SERVER['REMOTE_ADDR'])

но это не помогло, все равно 404 страница если запрашивать с сервера и открывать в браузере

Если нужны какие уточнения по коду, я всегда здесь
  • Вопрос задан
  • 4708 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
wendel
@wendel
Есть 2 варианта решения вашей проблемы:

1. Использовать для получения URL mp3 Javascript API, тогда ссылка будет привязана к IP клиента а не сервера.
2. Если не хотите использовать Javascript API сделайте скрипт ретранслятор который полученный URL передаст скрипту на PHP который в свою очередь будет читать файл из контакта и отдавать пользователю, т.е вместо URL выданного по API бэкендом передать плееру URL вида /play.php?vk=ссылка которая пришла из апи, play.php получает ссылку, читает файл и отдает пользователю.

Подделать ip не получится, можете даже не пытаться, проверено.
Ответ написан
nazarpc
@nazarpc
Open Source enthusiast
Есть третий вариант - поднять SSH тоннель к серверу либо VPN на нём (что немного сложнее) и выходить в мир из-под того же IP что и сервер)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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