stace automates the Steam account creation flow, including email verification handling.
Name
staceis a short, memorable name derived from the phrase "Steam Account Creator" - letters were chosen to form a concise project name.
Features
- Automates Steam account creation flow
- Waits for and extracts the verification link from an IMAP inbox
- Simple username/password generation using wordlists
Requirements
- Python 3.8+
- See
requirements.txtfor dependencies
Environment
Set environment variables (recommended via a .env file):
EMAIL_HOST(IMAP host, default:localhost)EMAIL_USER(IMAP username)EMAIL_PASSWORD(IMAP password)ALIAS_FORMAT=test+[PLACEHOLDER]@example.com(Alias format, "[PLACEHOLDER]" will be replaced with a random string.)PASSWORD_LENGTH(Optional password lenght)
Quick start
- Create and activate a virtualenv:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt- Add a
.envfile with your IMAP credentials:
EMAIL_HOST=imap.example.com
EMAIL_USER=you@example.com
EMAIL_PASSWORD=supersecret
- Run the script (CLI)
python main.py --help
python main.py --chrome-path /usr/bin/chromium --driver-path /tmp/chromedriver --password-length 16Optional: Post to kuroi instance
python main.py --amount 2 --password-length 16 --kuroi-base-url "https://kuroi.example.com/" --kuroi-api-key "kuroi_SECRET_API_KEY"Behavior notes
- The CLI will retry the full flow a small number of times if the browser session unexpectedly closes (errors like "invalid session id" or "session deleted").
- You can set
PASSWORD_LENGTHor pass--password-lengthto control generated password length.
Notes & safety
- The script uses
undetected-chromedriverto reduce automation detection; this may not always work and could violate site terms. - Use responsibly and only against accounts/resources you own or have permission to test.
Troubleshooting
-
If you see the error "TypeError: Binary Location Must be a String" this is a known issue reported against
undetected-chromedriver: ultrafunkamsterdam/undetected-chromedriver#1544Workarounds:
- Ensure the Chrome/Chromium binary path you pass to the driver is a valid string (e.g.
/usr/bin/chromium). - If you set env vars like
CHROME_PATHorCHROMEDRIVER_PATH, confirm they're non-empty strings. - Upgrade
undetected-chromedriverto the latest version where the bug may be fixed. - As a temporary workaround, try using the system Chrome/Chromium binary explicitly and ensure your
create_driver()call receives the correct string paths.
See the upstream issue for discussion and additional context: ultrafunkamsterdam/undetected-chromedriver#1544
- Ensure the Chrome/Chromium binary path you pass to the driver is a valid string (e.g.
Contributing
- Bug reports and small improvements welcome. Keep changes focused and add tests where appropriate.
License
- MIT License