javascript

YouTube упал? Или проблема одного процента

  • пятница, 16 февраля 2018 г. в 03:15:04
https://habrahabr.ru/post/349218/
  • Отладка
  • JavaScript




Второй день наблюдаются проблемы с просмотром видео на YouTube.
Новостные агрегаторы уже окрестили это «масштабным сбоем» — Масштабный сбой YouTube.

Некоторые высказывают предположения, что это всевидящий «Роскомнадзор» чего-то там заблокировал, и не смотреть нам больше любимых котиков:)

Стало интересно (к тому же проблема наблюдалась еще вчера). Решил немного покопаться.

Все оказалось до банальности просто — проблема в проценте. Да, именно один процент не позволяет нам смотреть любимые видосики.

Перед некоторыми видео вставляется реклама. И один такой ролик (как минимум) убивает плеер ютюба.

Как удалось выяснить по минифицированному коду
www.youtube.com/yts/jsbin/player-vflGoYKgz/ru_RU/base.js

function(a,b){return a?b?(0,window.decodeURI)(a.replace(/%25/g,"%2525")):(0,window.decodeURIComponent)(a):""};

— каждый урл (возможно не каждый, но часть точно) обрабатываются стандартной функцией window.decodeURI.

Она не переваривает процент в конце (20%). А именно обработка урла

домен_одного_ритейлера/%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C_CashBack_20%

приводит к падению с ошибкой «URIError: malformed URI sequence».

Решается просто — дополнительная проверка или вырезание процентов.

Ждем исправления от Google :)