- Регистрация
- 14.08.2021
- Сообщения
- 23
- Реакции
- 8
- Баллы
- 3
Являюсь разработчиком на базе ZennoPoster. Мне 22 года, но с ZennoClub уже больше 5 лет. На конкурс готовил две работы, вторая про большой wb-комбайн (много сложного и интересного: вайбкодинг, Yandex AI, API-интеграции, администрирование серверов и тд). Вероятно, не успею его оформить в статью и оставлю уже для следующего конкурса. Здесь же покажу свой маленький "домашний" проект.
В ZennoClub, имхо, есть:
Контакты:
kwork: @coniglio
tg: @fingec
В ZennoClub, имхо, есть:
- те, кто постоянно ищет новые темы и возможности;
- те, кто умеет превращать найденные идеи в автоматизацию;
- и акулы, которые находят идеи и сами строят под них решения.
Контакты:
kwork: @coniglio
tg: @fingec
О проекте
Эпоха телевизионных программ ушла и все больше пользователей у стриминговых площадок (к моему ящику, например, кабель вообще не подведен). Но далеко не каждый готов платить по 200-400 руб в месяц, особенно когда контент распределен между 8+ площадками. В России это Кинопоиск, Старт, Иви, Премьер, Кион, Винк, МореТВ, Окко и другие. Кто-то смирился и оплачивает, кто-то смотрит пиратку в 720p, херовым звуком и рекламой, а кто-то как я - хочет "и рыбку съесть..". До сего дня я ни разу не оплачивал подписку за деньги ни на 1 сервисе. Гайки как и везде подкручивают, но жить можно.Цель проекта — автоматизировать процесс создания аккаунтов в онлайн-кинотеатрах с последующей активацией промокода и авторизацией нового устройства. Так как проект, напомню, домашний - здесь не будет шаблона с готовым под ключ регистратором на всех площадках. Площадки, которыми я пользуюсь и то как я их оплачиваю:
- Кинопоиск - входит в семейную мультиподписку Плюса, которой думаю пользуется большинство из нас. Поэтому автоматизировать данную площадку у меня пока не было надобности.
- Окко - меняю на Сбер Спасибо, и на том спасибо..
- Премьер, Кион, МореТВ, Винк - регистрация исключительно на номерах, я использую симбокс (подробнее ниже). Буду рад получить от вас обратную связь насчет онлайн-сервисов приема смс, кто чем пользуется? Тот же onlinesim насколько знаю продолжает работать, smsfast протестировал регистрацию на WB пока писал статью - смс пришла, все ок
- Остается Иви и Старт, два гиганта. Иви - это огромный архив фильмов и сериалов с возможностью смотреть контент оффлайн пока едешь в поезде. Старт - это кладезь качественного и актуального контента. И, о чудо, именно они позволяют максимально просто срегать аккаунт.
- НТВ Плюс - бонус для любителей футбола: Матч.Футбол 1, Матч.Футбол 2 и Матч.Футбол 3 в единой подписке "НТВ+" с недельным триал-периодом. Болея за свою любимую испанскую команду я столкнулся с проблемой: МатчТВ в случае накладки по времени вместо ЛаЛиги транслирует матчи наших суперфутболистов. Поэтому сразу занялся поиском бесплатной альтернативы и не было моей радости предела, когда я нашел сервис "НТВ+". Кстати, там и HD-порнушку по этому же триалу можно подключить, так что если матч скучный - переключаем вкладку и делаем ДЗЮБА-ДЗЮБА.
— довольно индивидуальная история и есть далеко не у каждого, поэтому оставлять эти площадки в проекте смысла не увидел. У меня для перехвата стоит специальный софт, который отправляет сообщение на сервер и уже оттуда я из зенки забираю код. Откуда симки, софт, сим-бокс и тд описывать не буду, но все в белую с точки зрения закона, нарушаю только правила площадки.
Будущее проекта — его коммерциализация. Были мысли, но руки пока не доходят. Сделать простенький лендинг или даже tg-бота, настроить принятие оплаты, автозапуск скрипта и продавать услугу. Ну и прокси прикрутить, хотя пока ни разу не было проблем с блокировкой ip. На данный момент точка роста проекта именно такая - не просто экономить, а зарабатывать. Спрос самое главное есть, даже взять просто свое окружение (родственники, друзья друзей и тд) уже набирается хороший трафик.
О шаблоне
Шаблон работает в 4 режимах:- Просто регистрация (создание нового аккаунта со свежей подпиской и записью его в excel/бд для будущих авторизаций)
- Регистрация + Авторизация TV (регистрация нового аккаунта и вход на него с телевизора по коду, введенному во входных настройках; все в рамках 1 запуска, записал видео как это работает изнутри)
- Авторизация TV (подключение устройства в активную подписку одного из ранее созданных аккаунтов, указанному во входных настройках)
- Авторизация ПК/Планшета/Телефона
UPD НТВ+ работает только в режиме регистрации, т.к. там вместо кодов - пароль. Я зашил в шаблон pass
zennolab и не стал выносить его во входные настройки.Входные данные:
- виртуальные карты (я делаю в Т-банке), этот процесс у меня тоже автоматизирован (создание + выгрузка)

- 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 (опционально, нужен только для НТВ+)
Что внутри:
Под каждый сервис - своя ветка с похожей логикой: переход на страницу с промокодом, ввод промокода, редирект на авторизационную страницу, регистрация нового аккаунта, привязка карты и ввод кода (для TV) либо вывод кода в лог (для входа с ПК или моб. устройства).
Выходные данные:
- Таблица Excel/SQL с отчетом
| Subscriptions | ||||
|---|---|---|---|---|
| Платформа | Емайл | Дата окончания подписки | Номер карты | Промокод |
| START | coniglio+zenno13092358@gmail.com | 14 октября | 2200 3940 6767 1944 | zennolabmaster9 |
Аккаунтов много, а Gmail один?

Это официальная и очень удобная функция Google Почты, которая называется алиасом. Для Gmail знак плюса и любые символы после него до знака @ не имеют значения. Роботы Google просто игнорируют эту часть и доставляют все письма на ваш основной ящик — login@gmail.com.
Помимо стандартных алиасов через знак "+", у Gmail есть ещё одна интересная особенность — Dot trick (точечный алиас). Адреса, сгенерированные по шаблону: l.og.in@gmail.com для Gmail являются одним и тем же почтовым ящиком. Google полностью игнорирует точки в логине до символа @ и доставляет все письма на основной адрес. Есть много сервисов по автоматической генерации таких алиасов по логину (ТЫК)
А что насчет кода для привязки карты?
В шаблоне настроено уведомление с полем для ввода кода (приходит как капча), который нужно вписать вручную. Процесс полуавтоматический - вы занимаетесь своими делами и вводите код в окошко не отвлекаясь от основных дел. А так у меня симка, к которой привязан банк, подключена к тому же симбоксу, поэтому и эта часть полностью автоматизирована. Но уверен, что есть еще способы (по типу пересылки сообщений с телефона), мб кто-то поделится?
Техническая часть
C# сниппет формирования алиаса:
Результат кладем в
Формула для генерации конечного email-адреса:
{-Variable.gmail_email-} = {-Variable.gmail_login-}+{-Variable.platform-}{-Variable.day-}, т.е. сгенерированный уникальный адрес, поэтому парсить будущее письмо от сервиса по отправителю нет смысла: забираем по получателю.
REGEX для забора письма с кодом от площадки:
gmail_email приводим к regex-формату и кладем результат в gmail_email_regex
REGEX для вытягивания кода из письма:
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 категории:
- Прогнозируемые
Ошибки, которые мы уже на старте можем предположить и подготовиться к ним. Для таких я делаю обработчик: повторные попытки (если, например, не прогрузилась страница), альтернативный сценарий прохождения, уведомления, записи в лог и тд. Здесь, например, однозначно не хватает обработчиков ошибок. Настроено уведомление только о том, что файл с картами пуст и о неверном формате строки. А ведь еще может истечь срок действия промокода, не пройти уже использованная карта, не подойти код с телевизора и тд. - Непредвиденные
Конечно, все не учесть, поэтому во всех шаблонах делаю Bad End. В нем: вывод в лог id действия по которому потом можно найти кубик, завершивший с ошибкой + скриншот инстанса в папку errors директории проекта. Всего 2 кубика, а на отладке спасают, экономя кучу времени. Например, если есть цель увеличить скорость работы шаблона, то можно убрать все паузы и запустить несколько раз скрипт, далее по ошибкам понять где ему не хватает времени на загрузку и добавить задержку только в этих местах.
"Нет БД? - Не беда" или "Как поднять базу данных за 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;
ufw allow 3306apt install phpmyadmin -y


Перезапуск:
systemctl restart apache2Открываем: http://IP_СЕРВЕРА/phpmyadmin
Логин: zenno
Пароль: тот, который создали
Логин: zenno
Пароль: тот, который создали
server=IP_СЕРВЕРА;database=Test;user id=zenno;password=PASS
Вайб-кодинг
Ну и как же не упомянуть слово 2026 года. Звучит очень свежо, но что под капотом? БД в консоли PuttY - слишком даже для меня, phpMyAdmin - меня устраивает, но клиентам, конечно, неудобно. Решение максимально ориентированное на пользователя - это дашборд с отчетом, который можно открыть с ПК или телефона в любое время где бы не находился.
На сегодня в моем портфолио десяток подобных дашбордов, которые я делаю за пару часов (для этого проекта мне, например, понадобилось меньше получаса). И это уже не те же таблицы из БД в красивой обертке, а настоящие централизованные панели управления, где можно не просто увидеть отчет о выполненном задании, но и поставить новое (а еще формировать и скачивать документы, получать информацию из сторонней системы по API, считать план-факт, запускать новое задание или корректировать существующее и многое многое другое). Пишу в GPT (в режиме "Работа"), других пока не пробовал: и так все устраивает. Обучил его уже достаточно хорошо, понимает что я от него хочу (ну и я формулировать тоже стал удобнее для него) и даже дает полезные рекомендации на основе прошлых проектов (спойлер ниже). Но давайте по порядку, с чего все начиналось.
Я пришел с таким багажом: уверенное знание HTML + CSS (спасибо html-академии с интересными интерактивными заданиями, которую я прошел еще в 15 лет), умение писать BI-Отчеты в Битрикс24, понимание как правильно формулировать задачу и писать ТЗ. И как вы уже догадались, последний навык - ключевой, остальное - мое преимущество, которое на старте позволило мне вайбкодить быстрее. Сейчас к этим знаниям уже прибавилось уверенное владение php, понимание как работает связка файлов внутри сайта (кто кого вызывает и тд), умение писать авторизационные скрипты и хранить сессию с помощью кук ну и много чего еще интересного, но самое главное - развите продолжается.
Дашборд для проекта из статьи
Как я к нему пришел
Перед тем как писать дашборд для этого проекта я внес небольшие правки в таблицу БД (создал столбец "who" - владелец подписки и "created_at" - дата создания подписки). Первый - для того, чтобы не забыть для кого этот аккаунт (заполняю во входных настройках и шаблон записывает его по окончании выполнения), а второй - для нормальной работы фильтрации активных подписок, т.к. там у нас год не указан (заполняется автоматически при создании строки). Дальше промпт - пару правок - готовый сайт.
У меня в БД есть таблица со списком подписок:
id - who - platform - email - expiration_date - card_number - promo_code
Напиши пожалуйста страницу-дашборд под эту таблицу. Столбцы: Владелец (who), Платформа, Email, Срок действия (expiration_date). Номер карты и промокод не нужно выводить. Название: Подписки
Требования к дашборду:
Получить файлы для загрузки на сервер, чтобы по http://153.80.242.155/striming-dashboard открывался дашборд с отчетом. Файлы: index.php, style.css + маленький файл подключения к БД и файл с запросами к ней. Мб что-то упустил)
id - who - platform - email - expiration_date - card_number - promo_code
Напиши пожалуйста страницу-дашборд под эту таблицу. Столбцы: Владелец (who), Платформа, Email, Срок действия (expiration_date). Номер карты и промокод не нужно выводить. Название: Подписки
Требования к дашборду:
- Фильтр по платформе и владельцу подписки
- В дашборде 2 вкладки: Активные и Архив. В активных все подписки у которых дата меньше или равна сегодня. Важно! Дата в expiration_date хранится в формате "21 сентября" (оптимизируем сайт, чтобы он учитывал столбец "created_at" тип "дата" с датой создания подписки и корректно показывал активные и архивные). По умолчанию открывается вкладка Активные
- Таблица должна открывать сразу. Если указали в фильтре что-то жмем кнопку "Показать". Рядом с ней кнопка "Сбросить", чтобы снять фильтры
- Используй стиль zennolab (зелено-бело-голубые цвета). Страница должны выглядеть свежо и современно, минимализм без лишнего.
- Строка подключения к БД: server=153.80.242.155;database=Test;user id=zenno;password=coniglio (потом поменяю конечно)
- Оптимизируй верстку под мобильное устройство.
- Дай рекомендации по улучшению отчета в будущем
Получить файлы для загрузки на сервер, чтобы по 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Заключение
Спасибо всем, кто дочитал статью до конца! Буду рад получить обратную связь, узнать ваше мнение и, конечно же, ответить на вопросы. Возможно, у кого-то есть более интересные решения или идеи для развития подобных проектов.У меня, например, осталось несколько открытых вопросов: какие онлайн-сервисы для приема смс в России актуальны в 2026 году и какие существуют решения для пересылки сообщений (для автоматизации подтверждения привязки карт)?
Надеюсь, статья была полезной, особенно для новичков. Главная идея, которую я хотел показать — не нужно бояться больших проектов. Любая сложная система когда-то начиналась с простого шаблона и постепенно превращалась во что-то большее.
Отдельное спасибо ZennoLab за возможность поделиться своим опытом. Всем удачной автоматизации!
Вложения
Последнее редактирование модератором:




