Открываем Adobe Flash в Docker в 2024-м

15 ИЮНЯ 2022

------------------------------------------------------------------------

Наш телеграм-канал: t.me/@mailsgun_online

Youtube: youtube.com/@mailsgun_online

------------------------------------------------------------------------

Обновить


dmitrmax
22 часа назад

Уровень сложности
Простой
Время на прочтение
3 мин

Количество просмотров 2.5K


Туториал

Шарился я тут в по Интернету в поисках видео событий 15-летний давности и нашел что-то вроде искомого, но никак не смог посмотреть — требовался Adobe Flash. Погуглил я как мне открыть это видео, но рабочих вариантов не нашел. «Ладно» — подумал я: «Challenge accepted». А нам с читателем лишняя возможность потренироваться в создании Docker-контейнеров.

Дисклеймер: использование устаревших версий браузера и самого Flash-плагина несёт потенциальную угрозу безопасности. Используйте этот метод на свой страх и риск.

Итак, начнём с того, что поддержка Flash-плагина была выпилена в Chromium начиная с версии 89. То есть нам нужно что-то где есть более ранняя версия. Это что-то — это Ubuntu 18.04 — там 65я версия, если без апдейтов, а с апдейтами 112-я. В какой-то момент должна была быть и 88-ая, но не нашел где её добыть — если читатель подскажет, буду безмерно благодарен. И так, поехали — создаём Dockerfile

FROM ubuntu:18.04
ARG DEBIAN_FRONTEND=noninteractive
ARG CHROMIUM_VERSION=65.0.3325.181-0ubuntu1
RUN apt-get update && 
    apt-get upgrade -y && 
    apt-get install -y 
    chromium-browser=$CHROMIUM_VERSION 
    chromium-browser-l10n=$CHROMIUM_VERSION 
    chromium-codecs-ffmpeg-extra=$CHROMIUM_VERSION 
    apt-get clean && rm -rf /var/lib/apt/lists/* /var/cache/*

Берем официальный образ ubuntu:18.04 за основу. Получаем список пакетов, устанавливаем обновления и ставим собственно браузер явным образом указывая версию — иначе установится последняя (на момент написания статьи) 112-я.

Последняя (12-я) строчка занимается тем, что удаляет из данного «слоя» скаченные deb-файлы и кэши, необходимые команде apt. В работе с контейнерами это правило хорошего тона.

Запускать будем под юзером, иначе Chromium будет ругаться. Создадим его, но без пароля:

RUN adduser --gecos "user" --disabled-password --shell /bin/bash user

Скачаем собственно архив с последней версией Flash-плагина для Chromium’а, который наудачу сохранили в Архиве Интернета:

ADD https://web.archive.org/web/20210000000000id_/https://fpdownload.adobe.com/get/flashplayer/pdc/32.0.0.465/flash_player_ppapi_linux.x86_64.tar.gz /tmp

Обращаю ваше внимание на полезное свойство директивы ADD, о котором многие забывают — добавлять можно не только файлы из локального Docker-контекста, но и с произвольного URL’а.

Далее собезъяничаем некоторые телодвижения и конфиги из некогда существовавшего пакета pepperflashplugin-nonfree:

COPY etc /etc
RUN mkdir -p /usr/lib/pepperflashplugin-nonfree && 
    tar -xz -f /tmp/flash_player_ppapi_linux.x86_64.tar.gz -C /usr/lib/pepperflashplugin-nonfree libpepflashplayer.so manifest.json && 
	chown root:root /usr/lib/pepperflashplugin-nonfree/libpepflashplayer.so && 
	chmod 644 /usr/lib/pepperflashplugin-nonfree/libpepflashplayer.so && 
	chown root:root /usr/lib/pepperflashplugin-nonfree/manifest.json && 
	chmod 644 /usr/lib/pepperflashplugin-nonfree/manifest.json

Устанавливаем DISPLAY для X-сервера

ENV DISPLAY=:0

И, казалось бы, можно запускать Сhromium, но, сделав так, упрёмся в первую неприятность: плагин будет проверять текущее время и, если оно перевалило за какое-то там января 2021-го года, то он откажется работать. Поэтому со временем надо его обмануть, для этого в список устанавливаемых пакетов вместе с Chromium’ом необходимо включить пакет faketime. Запустив Chromium из-под faketime, мы столкнемся с другой проблемой — сертификаты SSL не будут проходить проверку, так как все он выданы в будущем (для нашего фейкового времени). Посему придется игнорировать ошибки сертификатов параметром браузера --ignore-certificate-errors. В итоге получаем следующую точку входа в контейнер

CMD ["/usr/bin/faketime", "2020-12-24 08:15:42", "/usr/bin/chromium-browser", "--ignore-certificate-errors"]

Собираем Docker-образ, например, следующей командой:

docker build -t flash-image  .

И запускаем это дело следующей командой:

docker run -it --rm --user user:user -v /tmp/.X11-unix/:/tmp/.X11-unix  --cap-add SYS_ADMIN flash-image

А вот и страничка хроник суровых будней российских, на которой это можно проверить: https://www.zaks.ru/new/archive/view/68760

Целиком это всё можно в готовом виде забрать в репозитории https://github.com/dmitrmax/flash-in-docker

Серия занятий «Тренировки по алгоритмам 5.0» от Яндекса

Дата 1 марта – 19 апреля
Время
Место

Онлайн

Московский туристический хакатон

Дата 23 марта – 7 апреля

Место

Москва • Онлайн

Урок «Эффекты в Scala на примере ZIO»

Дата
Время
Место

Онлайн

Онлайн-презентация «GitVerse: открой вселенную кода»

Дата
Время 10:00 – 13:00
Место

Онлайн

Ну и напоследок напоминаю вам о нашем новом проекте vkserfing bot.