🎯 Мета
Створити десктопну програму або скрипт (на Python або Node.js), який автоматично відкриває реальні Chrome-профілі, заходить у 20 облікових записів Three+, витягує код (число) зі сторінки після входу й додає його до тієї ж CSV-таблиці.
⚙️ Функціональність
Програма запускається вручну на Windows (без фонових служб або автозапуску).
Обробляє перші 20 акаунтів за запуск (кількість задається в конфігу).
Працює через реальний Chrome із локальними профілями (user-data-dir + profile-directory).
Не використовує headless-режими, Selenium або HTTP-запити.
Імітує дії людини: відкриття браузера, навігація, кліки, паузи.
Пропускає обліковки, з яких код уже отримано — визначає це через дані в тій же CSV.
🔄 Алгоритм роботи
Відкриває Chrome з відповідним профілем, який уже залогінений у Three+.
Переходить до розділу Cineworld, натискає кнопку Get Reward.
Отримання коду:
a) Код зʼявляється у спливаючому вікні — зчитується й зберігається.
b) У поодиноких випадках у вікні зʼявляється лінк “Go to yours codes” — тоді програма переходить туди й бере код.
У будь-якому випадку, після натискання "Get Reward" код завжди йде в розділ My Codes, логічно щоб програма зчитувати його звідти.
Зберігає код у відповідну колонку у тому ж CSV-файлі поруч із логіном.
Закриває браузер, але не виходить з акаунту.
Обробляє наступні акаунти (до 20), пропускаючи вже оброблені.
Завершує роботу.
Наступного запуску програма продовжує з наступних необроблених записів.
⚙️ Конфігурація (settings.json або .ini)
Шлях до Chrome (chrome.exe)
Список профілів (імена або шляхи)
URL Rewards (змінюється щотижня)
Затримки між діями: 2–3 хвилин (random)
Шлях до CSV-файлу
🗺️ Особливості сайту
Домен: https://threeplus.three.co.uk
Rewards URL змінюється щопонеділка (потрібно зробити, щоб задавався у settings)
Сайт побудований на Flutter Web (canvas), HSTS активний, Капчі немає
🛠️ Технології
Python + Playwright або Node.js + Puppeteer
Використання реальних Chrome-профілів
Pauses: random + time.sleep()
Конфігурація через JSON або INI
📝 Чекаю на вихід
.exeфайл для Windows
Повний вихідний код із коментарями
README-файл з інструкцією
Приклад конфігураційного файлу
🚨 Важливо
🧍♂️ Усі дії мають імітувати ручну роботу користувача.
Програма має працювати максимально «по-людськи» (з паузами, справжніми User-Agent та без різких одночасних запитів), щоб уникнути блокувань або запитів на SMS-підтвердження.
✅ Вручну сайт працює стабільно — за 10 хвилин я можу без проблем отримати коди з 40 облікових записів.
✅ Програма має повторювати саме таку швидкість (не швидше, не повільніше), щоб не викликати підозр.
Програма не виконує логін — лише використовує вже залогінені профілі.
Вся поведінка має бути максимально «людською»: відкритий браузер, затримки, реальні кліки, уникаємо одночасних запитів.
Швидкість обробки = ~20 акаунтів за 4-8 хвилин (не швидше!)
IP не змінюється, проксі не використовується.
Програма не повинна викликати SMS-підтвердження.
🔹 Python + Playwright або Node.js + Puppeteer — це дійсно правильний вибір, оскільки:
Вони дозволяють запускати реальний Chrome з профілями, без headless і без зайвих емулювань.
Працюють стабільно навіть з сайтами на Flutter Web (як у випадку з Three+).
🔹 Немає авторизації — вхід виконується через існуючі профілі, тож ризик отримати SMS підтвердження мінімальний (при правильній симуляції користувача).
🔹 Збір коду через page.evaluate() — ефективно і природно, особливо при навігації через My Codes.
🔹 Затримки, кліки, поведінка користувача — важливий елемент: імітація ручної роботи (кожен профіль відкривається окремо, діє з паузами) — це ключ до уникнення блокувань.
🔹 CSV-логіка — правильна: зчитування, перевірка, оновлення — все в межах одного файлу, без зайвих баз даних.
🔹 Жодних headless, Selenium чи проксі — це саме те, що потрібно для безпечної автоматизації у такому чутливому середовищі.
✅ Якщо все реалізовано саме так — програма буде на 100% відповідати вимогам, і працюватиме максимально надійно, як ручна взаємодія.