Client-specific Python + Selenium desktop automation for scheduled voting browser workflows
Automates a recurring “vote” flow across AquaRetro and serveur-prive.net with a persistent Chrome profile, cooldown-aware scheduling, and mtcaptcha solving.
Keywords: python, selenium, browser automation, rpa, workflow automation, scheduling, windows, chromedriver, mtcaptcha
Status: proprietary / not open source.
- Runs scheduled voting cycles on two sites:
- Opens the voting entry point on AquaRetro.
- Switches to the external voting tab (Serveur-Privé.Net).
- Completes the vote flow and returns to AquaRetro to confirm the vote.
- Handles session persistence via a dedicated Chrome user-data profile (so the account stays logged in between runs).
- Detects “already voted” states and adapts its schedule based on the cooldown.
- Integrates with a third-party captcha-solving service for mtcaptcha-protected steps.
- Selenium reliability patterns
- Explicit waits and safe click helpers to reduce flakiness.
- Automatic scrolling + JS click fallback when elements are intercepted.
- Cooldown-aware scheduling
- Tracks last vote and sleeps until the next allowed window.
- Adds small randomized offsets to look less “machine-perfect”.
- Uses wall-clock-based sleep chunks to behave well across Windows suspend/resume.
- Operational guardrails (Windows)
- Profile lock inspection and targeted Chrome process termination to avoid corrupted profiles.
- Packaging
- PyInstaller spec included (
SPNBot.spec) to ship as a Windows console executable.
- PyInstaller spec included (
- Logging
- Colorized console logs + persistent file logging (
logs/spnbot.log).
- Colorized console logs + persistent file logging (
- Python 3
- Selenium 4 + ChromeDriver (managed via
webdriver-manager) python-dotenv/dotenvfor configuration- 2Captcha client (
2captcha-python) for captcha token retrieval - PyInstaller for packaging
main.py— orchestrates the voting loop, initializes the browser profile, and schedules runs.bot/aquaretro.py— navigation + confirmation on AquaRetro.spn.py— SPN vote flow + validation states.driver.py— Selenium wait/click helpers.
captcha/solver.py— mtcaptcha sitekey extraction and token injection.utils/selenium.py— Chrome profile + driver bootstrap, local driver caching.timer.py— cooldown + sleep-window logic.profile_lock.py— Windows profile lock detection/killing.logger.py— console/file logging.
This repository is shown for portfolio/engineering demonstration. It was developed for a specific client context and is not intended as a general-purpose product or “one size fits all” automation. Any automation must be used only where you have explicit authorization and where it complies with the applicable terms of service and local laws.
If you need a client-specific desktop automation tool (browser automation, account workflows, scheduled tasks, packaging to a single Windows executable, etc.), you can contact me on Discord: izeleam.