Фон

Если вы не жили под камнем последние 5 лет, вы наверняка слышали о небольшом шоу под названием «Черное зеркало». На всякий случай, если вы не знаете, о чем идет речь, вот краткий обзор шоу. «Черное зеркало» - это серия антологий по научной фантастике, в которой основной идеал серии - отразить множество ужасающих способов, с помощью которых технологии могут выявить худшее в человечестве.

28 декабря 2018 года Black Mirror выпустили свой первый интерактивный фильм Bandersnatch на Netflix, в котором пользователь будет вынужден принимать экранное решение, которое будет определять события, свидетелями которых они являются на экране. В зависимости от сделанного вами выбора и количества концовок, которые вы хотите увидеть, продолжительность фильма может составлять от 1,5 до 5,5 часов. Моей первой мыслью было «Ничего себе, целых 5 часов оригинального черного зеркала. Я собираюсь потратить на это весь свой перерыв ». Перенесемся вперед, и через 3 часа я сижу за компьютером, измученный необходимостью умирать и переделывать выбор. Именно в этот момент я решил, что должен быть лучший способ найти все концовки. И есть !!!

«Взлом Bandersnatch»

Итак, после интенсивного поиска в Google я обнаружил, что для взлома вариантов Bandersnatch вам нужно открыть консоль разработчика и получить доступ к Netflix Player API во время просмотра Bandersnatch.

Вот так:

Код, который вы видите выше, представляет собой код Javascript, который подключает вас к видео API Netflix, находит ваш пользовательский сеанс и получает все интерактивные моменты в игре.

Подключается к Netflix API

const api = netflix.appContext.state.playerApp.getAPI ()

G задает идентификатор этого сеанса видео.

const playerSessionId = api.videoPlayer.getAllPlayerSessionIds () [0]

Получает хэш всех интерактивных моментов в игре

const ivm = api.branching.getInteractiveVideoMoments (playerSessionId)

Теперь предположим, что вы хотели увидеть массив доступных вариантов выбора, который существует в ivm.

Введите ivm.momentsBySegment в вашу консоль

он должен отображать такой хеш:

Обратите внимание на маленькое число в скобках перед каждой точкой выбора. Это позволит вам узнать, является ли точка выбора тупиком или у нее есть несколько решений.

Теперь вы можете получить информацию по любому пункту выбора. Как вы можете видеть, я щелкнул раскрывающийся список «1H:», затем «1:», затем раскрывающийся список «choices:». Это говорит вам о том, что если бы вы сыграли в момент выпадения 1H, вам пришлось бы выбирать между «ПРИНЯТЬ» или «ОТКАЗАТЬ» и предложить. Теперь, когда у вас есть эта информация, играть в точку выбора, которую вы хотите найти, стало легко.

Предоставляет вам доступ к самому видеопроигрывателю

const player = api.videoPlayer.getVideoPlayerBySessionId (playerSessionId)

Эта строка сообщает проигрывателю Netflix, какой сегмент выбора следует пропустить

player.playSegment («3L»)

Вышеупомянутая строка также могла быть «player.playSegment (« 7A »)» или любым player.playSegment («any_choicepoint»), который существовал, когда мы запускали ivm.momentsBySegments.

И как видите, в Netflix игрок сразу переходит к тому месту на видео, где делается выбор.