Blog
Views: 663956

Проблема с аудиозаписями

Недавно появились проблемы с аудиозаписями на APIdog: при попытке воспроизвести на абсолютно любой будет написано, что она была изъята из публичного доступа. Как оказалось, это не массовая блокировка аудиоконтента, а всего лишь очередная палка в колёса APIdog от ВК.


Техническая суть проблемы

Аудиозаписи в APIdog получаются через API, метод audio.get. В один прекрасный день поочередно каждого приложения (Android, iPhone, iPad, Windows Phone, затем Blackberry, Snapster, Kate, Lynt...) перестали возвращаться ссылки на аудио. После около 10 часов тупежа по этому поводу, Эдуард Безменов (из проекта VK Coffee) выдал идею, которая и оказалась верной. ВК стал проверять заголовок User-Agent при запросе метода audio.get. Это означало лишь то, что в нашей ситуации APIdog оказывается в полной заднице, потому как пути решения было два, и они оба не подходили. Первое: нужно изменить заголовок User-Agent у клиента, то есть в текущем коде заменить заголовок. Но это не предоставляется возможным, потому как сайт общается с API через GET-запрос путем тега <script> → заменить вообще ничего невозможно. Второй путь заключался в том, чтобы отправлять запрос через сервер, но и здесь ожидало разочарование: если мы запрашиваем аудио с сервера, то адреса автоматически крепятся под IP-сервера, а у пользователя по этой ссылке будет ошибка 404. Последнее, что пришло мне (разработчику) на ум — вернуться к старому расширению APIdog LongPoll, разобрать его (уже давно руки чесались это сделать) и сделать так, чтобы все запросы при наличии расширения шли именно через него, а в самом расширении отправлять запрос с модифицированными заголоками. В итоге, это сработало.


Решение проблемы

Решение нашлось только одно: подмена заголовков User-Agent при запросе к API ВКонтакте. Если Вы не знаете что это такое или просто не хотите вдаваться в подробности, то мы уже всё сделали за Вас. Просто написали расширения под браузеры, которые не только исправят аудиозаписи, но и LongPoll.


Open Source

Нам скрывать нечего, весь код расширений открыт, Вы можете его посмотреть и если нам не доверяете (что мы что-то свое добавляем), можете сами его собрать вручную.

GitHub - APIdog Plus for webkit

GitHub - APIdog Plus for Firefox


Хронология событий

Кому, вдруг, интересно и лень просматривать стену группы, выкладываю посты в хронологическом порядке

Разработчик | 30.03.2016 00:33