Как я автоматизировал активацию триал-подписок стриминговых сервисов с помощью ZennoPoster 🎬

  • Автор темы Автор темы coniglio
  • Дата начала Дата начала

coniglio

Client
Регистрация
14.08.2021
Сообщения
23
Реакции
9
Баллы
3
Являюсь разработчиком на базе ZennoPoster. Мне 22 года, но с ZennoClub уже больше 5 лет. На конкурс готовил две работы, вторая про большой wb-комбайн (много сложного и интересного: вайбкодинг, Yandex AI, API-интеграции, администрирование серверов и тд). Вероятно, не успею его оформить в статью и оставлю уже для следующего конкурса. Здесь же покажу свой маленький "домашний" проект.

В ZennoClub, имхо, есть:
  • те, кто постоянно ищет новые темы и возможности;
  • те, кто умеет превращать найденные идеи в автоматизацию;
  • и акулы, которые находят идеи и сами строят под них решения.
Себя я пока отношу скорее ко второй категории. Конечно, есть собственные проекты, но основное направление моей работы — разработка автоматизации под заказ.

Контакты:
kwork: @coniglio
tg: @fingec
Всем привет! Хочу поделиться опытом с дорогими читателями, в частности - с новичками, которые после прочтения смогут сразу "пощупать" практическую пользу такой программы как Zennoposter. Следуя слогану конкурса "от новичка до эксперта" спешу отметить, что это точно так же касается и проектов: от "костыльного" скрипта, сделанным под запись действий - до автономного комбайна на своем сервере, с базой данных, управлением через веб-панель, дашбордом с отчетом и тд. Сначала один стабильный сценарий → потом расширение. Вот и я здесь хочу поделиться одним таким сценарием. Рассказываю...

1789252172720.png


О проекте​
Эпоха телевизионных программ ушла и все больше пользователей у стриминговых площадок (к моему ящику, например, кабель вообще не подведен). Но далеко не каждый готов платить по 200-400 руб в месяц, особенно когда контент распределен между 8+ площадками. В России это Кинопоиск, Старт, Иви, Премьер, Кион, Винк, МореТВ, Окко и другие. Кто-то смирился и оплачивает, кто-то смотрит пиратку в 720p, херовым звуком и рекламой, а кто-то как я - хочет "и рыбку съесть..". До сего дня я ни разу не оплачивал подписку за деньги ни на 1 сервисе. Гайки как и везде подкручивают, но жить можно.

Цель проекта — автоматизировать процесс создания аккаунтов в онлайн-кинотеатрах с последующей активацией промокода и авторизацией нового устройства. Так как проект, напомню, домашний - здесь не будет шаблона с готовым под ключ регистратором на всех площадках. Площадки, которыми я пользуюсь и то как я их оплачиваю:
  • Кинопоиск - входит в семейную мультиподписку Плюса, которой думаю пользуется большинство из нас.
    1789839318685.png
    Поэтому автоматизировать данную площадку у меня пока не было надобности.
  • Окко - меняю на Сбер Спасибо, и на том спасибо..
  • Премьер, Кион, МореТВ, Винк - регистрация исключительно на номерах, я использую симбокс (подробнее ниже). Буду рад получить от вас обратную связь насчет онлайн-сервисов приема смс, кто чем пользуется? Тот же onlinesim насколько знаю продолжает работать, smsfast протестировал регистрацию на WB пока писал статью - смс пришла, все ок
  • Остается Иви и Старт, два гиганта. Иви - это огромный архив фильмов и сериалов с возможностью смотреть контент оффлайн пока едешь в поезде. Старт - это кладезь качественного и актуального контента. И, о чудо, именно они позволяют максимально просто срегать аккаунт.
  • НТВ Плюс - бонус для любителей футбола: Матч.Футбол 1, Матч.Футбол 2 и Матч.Футбол 3 в единой подписке "НТВ+" с недельным триал-периодом. Болея за свою любимую испанскую команду я столкнулся с проблемой: МатчТВ в случае накладки по времени вместо ЛаЛиги транслирует матчи наших суперфутболистов. Поэтому сразу занялся поиском бесплатной альтернативы и не было моей радости предела, когда я нашел сервис "НТВ+". Кстати, там и HD-порнушку по этому же триалу можно подключить, так что если матч скучный - переключаем вкладку и делаем ДЗЮБА-ДЗЮБА.
Состав проекта — внутри находятся все необходимые файлы для входной и выходной информации (подробнее в разделе "О шаблоне") и сам скрипт. В нем регистраторы + активаторы на площадках Start, IVI и НТВ+. Под Премьер, Кион, Море и Винк (а также Кинопоиск и Окко) можно допилить шаблон с использованием онлайн-сервисов приема смс.

— довольно индивидуальная история и есть далеко не у каждого, поэтому оставлять эти площадки в проекте смысла не увидел. У меня для перехвата стоит специальный софт, который отправляет сообщение на сервер и уже оттуда я из зенки забираю код. Откуда симки, софт, сим-бокс и тд описывать не буду, но все в белую с точки зрения закона, нарушаю только правила площадки.

Будущее проекта — его коммерциализация. Были мысли, но руки пока не доходят. Сделать простенький лендинг или даже tg-бота, настроить принятие оплаты, автозапуск скрипта и продавать услугу. Ну и прокси прикрутить, хотя пока ни разу не было проблем с блокировкой ip. На данный момент точка роста проекта именно такая - не просто экономить, а зарабатывать. Спрос самое главное есть, даже взять просто свое окружение (родственники, друзья друзей и тд) уже набирается хороший трафик.

О шаблоне​
Шаблон работает в 4 режимах:
  1. Просто регистрация (создание нового аккаунта со свежей подпиской и записью его в excel/бд для будущих авторизаций)
  2. Регистрация + Авторизация TV (регистрация нового аккаунта и вход на него с телевизора по коду, введенному во входных настройках; все в рамках 1 запуска, записал видео как это работает изнутри)
  3. Авторизация TV (подключение устройства в активную подписку одного из ранее созданных аккаунтов, указанному во входных настройках)
  4. Авторизация ПК/Планшета/Телефона
d7e7cbfb-6086-48ee-a1e4-9f7bab3fc988.png
5bf408ed-b67a-4ae0-9ce3-5818f143d4b3.png

☝️ Если указали код с телевизора - значит скрипт активирует его, если оставили поле пустым - значит скрипт выведет в уведомление и в лог код, который нужно ввести на планшете, ПК или телефоне.
✌️Сценария "Регистрация + Авторизация ПК/Планшета/Телефона" по понятным причинам нет: мы не можем ввести почту до того как она сгенерируется. Поэтому если нам нужна новая подписка, например, на планшет делаем так: регистрируем аккаунт, указываем во входных настройках сгенерированную почту, ее же вводим на своем устройстве и получаем код в уведомлении. Можно и руками зайти получить в принципе, но так быстрее.
UPD НТВ+ работает только в режиме регистрации, т.к. там вместо кодов - пароль. Я зашил в шаблон pass zennolab и не стал выносить его во входные настройки.

Входные данные:
  • виртуальные карты (я делаю в Т-банке), этот процесс у меня тоже автоматизирован (создание + выгрузка):bo:
  • 1 аккаунт Gmail с паролем для приложений (https://myaccount.google.com/apppasswords). Убедитесь, что у вас включена «Двухэтапная аутентификация» (без неё функция скрыта)
  • промокод (https://promokodi.net/store/start-ru/ и тд); делюсь лайфхаком: premier хавает больше 1 промокода, а значит можно на одном аккаунте держать подписку до нескольких месяцев
  • Указать платформу, путь к txt-файлу с картами (я создаю одинаковые списки с названиями по площадкам, чтобы 1 сервис не удалял карту, которой еще не воспользовался 2), путь к excel-файлу (с будущим отчетом по подпискам), код с телевизора*. Если входим в существующий аккаунт, то чекбокс + полный адрес (например, zennomaster9+start14090147@gmail.com)
  • БД (опционально, подробности ниже)
  • Заполненный txt-файл alias (опционально, нужен только для НТВ+)
1789252929830.png
1789252902378.png
1789252893075.png

Что внутри:
Под каждый сервис - своя ветка с похожей логикой: переход на страницу с промокодом, ввод промокода, редирект на авторизационную страницу, регистрация нового аккаунта, привязка карты и ввод кода (для TV) либо вывод кода в лог (для входа с ПК или моб. устройства).

1789254372042.png

Выходные данные:
  • Таблица Excel/SQL с отчетом
Subscriptions
ПлатформаЕмайлДата окончания подпискиНомер картыПромокод
STARTconiglio+zenno13092358@gmail.com14 октября2200 3940 6767 1944zennolabmaster9

Аккаунтов много, а Gmail один?
1789251391555.png
Адреса, сгенерированные по шаблону login+random@gmail.com, площадки воспринимают как разные, а письма при этом приходят на основной :bd:
Это официальная и очень удобная функция Google Почты, которая называется алиасом. Для Gmail знак плюса и любые символы после него до знака @ не имеют значения. Роботы Google просто игнорируют эту часть и доставляют все письма на ваш основной ящик — login@gmail.com.

Помимо стандартных алиасов через знак "+", у Gmail есть ещё одна интересная особенность — Dot trick (точечный алиас). Адреса, сгенерированные по шаблону: l.og.in@gmail.com для Gmail являются одним и тем же почтовым ящиком. Google полностью игнорирует точки в логине до символа @ и доставляет все письма на основной адрес. Есть много сервисов по автоматической генерации таких алиасов по логину (ТЫК)
❗ Данный метод используется при регистрации НТВ+, который не пропускает email со знаком "+", поэтому для его работы необходимо заполнить файл alias.txt


А что насчет кода для привязки карты?
В шаблоне настроено уведомление с полем для ввода кода (приходит как капча), который нужно вписать вручную. Процесс полуавтоматический - вы занимаетесь своими делами и вводите код в окошко не отвлекаясь от основных дел. А так у меня симка, к которой привязан банк, подключена к тому же симбоксу, поэтому и эта часть полностью автоматизирована. Но уверен, что есть еще способы (по типу пересылки сообщений с телефона), мб кто-то поделится?
❗IVI, кстати, единственный кто не запрашивает подтверждения при привязке карты

Техническая часть
C# сниппет формирования алиаса:
return DateTime.Now.ToString("ddMMHHmm");
Результат кладем в {-Variable.day-} и соединяем с {-Variable.platform-} - получаем уникальный алиас

Формула для генерации конечного email-адреса:
{-Variable.gmail_email-} = {-Variable.gmail_login-}+{-Variable.platform-}{-Variable.day-}, т.е. сгенерированный уникальный адрес, поэтому парсить будущее письмо от сервиса по отправителю нет смысла: забираем по получателю.

REGEX для забора письма с кодом от площадки: {-Variable.gmail_email_regex-}
gmail_email приводим к regex-формату и кладем результат в gmail_email_regex
Код:
Развернуть Свернуть Копировать
string text = project.Variables["gmail_email"].Value;
string regex = System.Text.RegularExpressions.Regex.Escape(text) + ".*?";
return regex;

REGEX для вытягивания кода из письма: (?<=:\ ).*?(?=\ -\ Ваш\ код\ подтверждения)
В шаблоне есть возможность подключить свою облачную БД. Для этого необходимо:
  • Создать новую таблицу
Код:
Развернуть Свернуть Копировать
CREATE TABLE subscriptions (
    id INT AUTO_INCREMENT PRIMARY KEY,
    platform VARCHAR(255),
    email VARCHAR(255),
    expiration_date VARCHAR(255),
    card_number VARCHAR(255),
    promo_code VARCHAR(255)
);
  • Указать данные для подключения во входных настройках. Строка подключения выглядит так:
server={-Variable.server-};database={-Variable.database-};user id={-Variable.userid-};password={-Variable.password-}
  • Сформировать тело запроса для записи успешной регистрации нового аккаунта
Код:
Развернуть Свернуть Копировать
INSERT INTO subscriptions (
    platform,
    email,
    expiration_date,
    card_number,
    promo_code
) VALUES (
    '{-Variable.platform-}',
    '{-Variable.gmail_email-}',
    '{-Variable.untilDate-}',
    '{-Variable.cardNumber-}',
    '{-Variable.promocode-}'
);
В своих проектах всегда уделяю особое внимание потенциальным ошибкам. Я их делю на 2 категории:
  1. Прогнозируемые
    Ошибки, которые мы уже на старте можем предположить и подготовиться к ним. Для таких я делаю обработчик: повторные попытки (если, например, не прогрузилась страница), альтернативный сценарий прохождения, уведомления, записи в лог и тд. Здесь, например, однозначно не хватает обработчиков ошибок. Настроено уведомление только о том, что файл с картами пуст и о неверном формате строки. А ведь еще может истечь срок действия промокода, не пройти уже использованная карта, не подойти код с телевизора и тд.
  2. Непредвиденные
    Конечно, все не учесть, поэтому во всех шаблонах делаю Bad End. В нем: вывод в лог id действия по которому потом можно найти кубик, завершивший с ошибкой + скриншот инстанса в папку errors директории проекта. Всего 2 кубика, а на отладке спасают, экономя кучу времени. Например, если есть цель увеличить скорость работы шаблона, то можно убрать все паузы и запустить несколько раз скрипт, далее по ошибкам понять где ему не хватает времени на загрузку и добавить задержку только в этих местах.
1789254764605.png

"Нет БД? - Не беда" или "Как поднять базу данных за 5 минут.."
Согласен, что для личного использования достаточно и excel, но у меня есть арендованный сервер, поэтому от excel-таблицы я отказался даже здесь. Ну и плюс всегда могу с телефона посмотреть до какого числа подписка. Поэтому бонусом поделюсь как максимально просто и быстро создать облачную Базу Данных по шагам.
❗Если у вас нет в аренде сервера, то для теста можно воспользоваться бесплатным периодом 😂 от хостеров (например, рег.ру)

Подключаемся к серверу через PuttY:
ssh root@IP_СЕРВЕРА

Установка:
Код:
Развернуть Свернуть Копировать
apt update
apt install mysql-server -y
Заходим в MySQL:
Код:
Развернуть Свернуть Копировать
mysql

Создаём базу:
Код:
Развернуть Свернуть Копировать
CREATE DATABASE Test
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

Создаём пользователя (укажите пароль!):
Код:
Развернуть Свернуть Копировать
CREATE USER 'zenno'@'%' IDENTIFIED BY 'ПАРОЛЬ';

Выдаём права:
Код:
Развернуть Свернуть Копировать
GRANT ALL PRIVILEGES ON *.* TO 'zenno'@'%';

Выходим:
Код:
Развернуть Свернуть Копировать
exit;
Открываем настройки MySQL:
nano /etc/mysql/mysql.conf.d/mysqld.cnf

Находим все строки с:
bind-address = 127.0.0.1

Меняем на:
bind-address = 0.0.0.0

Сохраняем (Ctrl O + Enter + Ctrl X).

Снимок экрана 2026-09-14 005348.png

Перезапускаем:
systemctl restart mysql
ufw allow 3306
apt install phpmyadmin -y

👀В консоли пишем "y" когда спрашивает. Будет несколько высплывающих окошек, тут будьте внимательны! Выбираем "apache2" (чтобы выбрать жмем пробел, затем стрелками на OK и жмем Enter), потом создаем пароль для phpMyAdmin (можно тот же указать, что и для БД либо вообще пропустить шаг) и затем указываем пароль от БД.

1789338165320.png1789338136350.png1789338145276.png

Перезапуск:
systemctl restart apache2
Открываем: http://IP_СЕРВЕРА/phpmyadmin
Логин: zenno
Пароль: тот, который создали
В phpMyAdmin
Код:
Развернуть Свернуть Копировать
CREATE TABLE subscriptions (
    id INT AUTO_INCREMENT PRIMARY KEY,
    platform VARCHAR(255),
    email VARCHAR(255),
    expiration_date VARCHAR(255),
    card_number VARCHAR(255),
    promo_code VARCHAR(255)
);

1789338357981.png
server=IP_СЕРВЕРА;database=Test;user id=zenno;password=PASS

Вайб-кодинг :bc:​
Ну и как же не упомянуть слово 2026 года. Звучит очень свежо, но что под капотом? БД в консоли PuttY - слишком даже для меня, phpMyAdmin - меня устраивает, но клиентам, конечно, неудобно. Решение максимально ориентированное на пользователя - это дашборд с отчетом, который можно открыть с ПК или телефона в любое время где бы не находился.​

На сегодня в моем портфолио десяток подобных дашбордов, которые я делаю за пару часов (для этого проекта мне, например, понадобилось меньше получаса). И это уже не те же таблицы из БД в красивой обертке, а настоящие централизованные панели управления, где можно не просто увидеть отчет о выполненном задании, но и поставить новое (а еще формировать и скачивать документы, получать информацию из сторонней системы по API, считать план-факт, запускать новое задание или корректировать существующее и многое многое другое). Пишу в GPT (в режиме "Работа"), других пока не пробовал: и так все устраивает. Обучил его уже достаточно хорошо, понимает что я от него хочу (ну и я формулировать тоже стал удобнее для него) и даже дает полезные рекомендации на основе прошлых проектов (спойлер ниже). Но давайте по порядку, с чего все начиналось.

Я пришел с таким багажом: уверенное знание HTML + CSS (спасибо html-академии с интересными интерактивными заданиями, которую я прошел еще в 15 лет), умение писать BI-Отчеты в Битрикс24, понимание как правильно формулировать задачу и писать ТЗ. И как вы уже догадались, последний навык - ключевой, остальное - мое преимущество, которое на старте позволило мне вайбкодить быстрее. Сейчас к этим знаниям уже прибавилось уверенное владение php, понимание как работает связка файлов внутри сайта (кто кого вызывает и тд), умение писать авторизационные скрипты и хранить сессию с помощью кук ну и много чего еще интересного, но самое главное - развите продолжается.

Дашборд для проекта из статьи

1789902780069.png
1789902866623.png


Как я к нему пришел
Перед тем как писать дашборд для этого проекта я внес небольшие правки в таблицу БД (создал столбец "who" - владелец подписки и "created_at" - дата создания подписки). Первый - для того, чтобы не забыть для кого этот аккаунт (заполняю во входных настройках и шаблон записывает его по окончании выполнения), а второй - для нормальной работы фильтрации активных подписок, т.к. там у нас год не указан (заполняется автоматически при создании строки). Дальше промпт - пару правок - готовый сайт.

У меня в БД есть таблица со списком подписок:
id - who - platform - email - expiration_date - card_number - promo_code

Напиши пожалуйста страницу-дашборд под эту таблицу. Столбцы: Владелец (who), Платформа, Email, Срок действия (expiration_date). Номер карты и промокод не нужно выводить. Название: Подписки

Требования к дашборду:
  1. Фильтр по платформе и владельцу подписки
  2. В дашборде 2 вкладки: Активные и Архив. В активных все подписки у которых дата меньше или равна сегодня. Важно! Дата в expiration_date хранится в формате "21 сентября" (оптимизируем сайт, чтобы он учитывал столбец "created_at" тип "дата" с датой создания подписки и корректно показывал активные и архивные). По умолчанию открывается вкладка Активные
  3. Таблица должна открывать сразу. Если указали в фильтре что-то жмем кнопку "Показать". Рядом с ней кнопка "Сбросить", чтобы снять фильтры
  4. Используй стиль zennolab (зелено-бело-голубые цвета). Страница должны выглядеть свежо и современно, минимализм без лишнего.
  5. Строка подключения к БД: server=153.80.242.155;database=Test;user id=zenno;password=coniglio (потом поменяю конечно)
  6. Оптимизируй верстку под мобильное устройство.
  7. Дай рекомендации по улучшению отчета в будущем
Требования к результату:
Получить файлы для загрузки на сервер, чтобы по http://153.80.242.155/striming-dashboard открывался дашборд с отчетом. Файлы: index.php, style.css + маленький файл подключения к БД и файл с запросами к ней. Мб что-то упустил)
Я бы ещё следующим шагом добавил:
  • 🔐 простую авторизацию админа (чтобы никто не открыл список аккаунтов)
  • 🔎 поиск по email
  • 📊сверху карточки:
    • Всего подписок
    • Активных
    • Истекают сегодня
    • По платформам
  • 🟢/🔴подсветку срока:
    • осталось >7 дней зелёный
    • <3 дней жёлтый
    • просрочено красный
  • index.php — главная страница дашборда. Показывает заголовок, фильтры, вкладки и таблицу подписок.
  • style.css — внешний вид сайта: зелёно-бело-голубые цвета, кнопки, таблица и мобильная версия.
  • db.php — настройки подключения к базе данных: сервер, название БД, логин и пароль.
  • queries.php — получает подписки из БД, применяет фильтры, вычисляет год окончания и разделяет записи на активные и архивные.
Подключаемся к сервере через FileZilla -> Создаем в /var/www/html/ папку striming-dashboard и грузим туда содержимое архива, которое выдал нам GPT

1789903178925.png

Заключение​
Спасибо всем, кто дочитал статью до конца! Буду рад получить обратную связь, узнать ваше мнение и, конечно же, ответить на вопросы. Возможно, у кого-то есть более интересные решения или идеи для развития подобных проектов.

У меня, например, осталось несколько открытых вопросов: какие онлайн-сервисы для приема смс в России актуальны в 2026 году и какие существуют решения для пересылки сообщений (для автоматизации подтверждения привязки карт)?

Надеюсь, статья была полезной, особенно для новичков. Главная идея, которую я хотел показать — не нужно бояться больших проектов. Любая сложная система когда-то начиналась с простого шаблона и постепенно превращалась во что-то большее.

Отдельное спасибо ZennoLab за возможность поделиться своим опытом. Всем удачной автоматизации! 🚀

 

Вложения

Последнее редактирование:
  • Оценить
Реакции: dr.pen

Кто просматривает тему: (Всего: 2, Пользователи: 2, Гости: 0)