🎯 Goal
Create a desktop application or script (in Python or Node.js) that automatically opens real Chrome profiles, logs into 20 accounts of Three+, retrieves the code (number) from the page after login, and adds it to the same CSV table.
⚙️ Functionality
The program is launched manually on Windows (without background services or auto-start).
Processes the first 20 accounts per launch (the number is set in the config).
Works through real Chrome with local profiles (user-data-dir + profile-directory).
Does not use headless modes, Selenium or HTTP requests.
Simulates human actions: opening the browser, navigation, clicks, pauses.
Skips accounts from which the code has already been obtained — determined by data in the same CSV.
🔄 Workflow Algorithm
Opens Chrome with the appropriate profile, already logged into Three+.
Goes to the Cineworld section, clicks the Get Rewards button.
Retrieving the code:
a) The code appears in a popup window — it is read and saved.
b) In rare cases, a link “Go to My Codes” appears in the window — then the program navigates there and retrieves the code.
In any case the code is always after clicking Get Rewards in the My Codes section, so it can be read only from there.
Saves the code in the corresponding column in the same CSV file next to the login.
Closes the browser, but does not log out.
Processes the next accounts (up to 20), skipping already processed ones.
Ends the operation.
On the next launch, the program continues from the next unprocessed entries.
⚙️ Configuration (settings.json or .ini)
Path to Chrome (chrome.exe)
List of profiles (names or paths)
Rewards URL (changes weekly)
Delays between actions: 2–3 minutes (random)
Path to CSV file
🗺️ Site Features
Domain: https://threeplus.three.co.uk
Rewards URL changes every Monday (should be configurable in settings)
The site is built on Flutter Web (canvas), HSTS is active, no Captchas
🛠️ Technologies
Python + Playwright or Node.js + Puppeteer
Using real Chrome profiles
Pauses: random + time.sleep()
Configuration via JSON or INI
📝 Awaited Release
.exe-file for Windows
Full source code with comments
README file with instructions
Example configuration file
🚨 Important
🧍♂️ All actions must imitate manual user work.
The program should operate as “human-like” as possible (with pauses, real User-Agent, and without sudden simultaneous requests), to avoid blocks or SMS verification requests.
✅ Manual site operation is stable — in 20 minutes I can easily get codes from 40 accounts.
✅ The program should repeat exactly this speed (not faster, not slower) to avoid suspicion
The program does not perform login — it only uses already logged-in profiles.
All behavior should be as “human” as possible: open browser, delays, real clicks, avoiding simultaneous requests.
Processing speed = ~20 accounts in 5-10 minutes (no faster!)
IP remains unchanged, proxies are not used.
The program should not trigger SMS verification.
🔹 Python + Playwright or Node.js + Puppeteer — are the right choices because:
They allow running real Chrome with profiles, without headless and unnecessary emulations.
They work reliably even with complex Flutter Web sites (like Three+).
🔹 No authorization — login is done through existing profiles, so risk of SMS confirmation is minimal (with proper user simulation).
🔹 Code collection via page.evaluate() — effective and natural, especially when navigating through My Codes.
🔹 Delays, clicks, user behavior — an important element: mimicking manual work (each profile opens separately, acts with pauses) — this is key to avoiding blocks.
🔹 CSV logic — correct: reading, checking, updating — all within one file, no extra databases.
🔹 No headless, Selenium, or proxies — exactly what is needed for safe automation in such a sensitive environment.
✅ If everything is implemented as described — the program will fully meet the requirements, and work most reliably as manual interaction.