Automated Reddit account registration bot with antidetect browser integration, Shadow DOM support, email verification handling, and captcha solving.
- Antidetect Browser Integration: Supports AdsPower and Multilogin
- Test Mode: Regular Puppeteer mode for testing without antidetect browsers
- Shadow DOM Support: Handles Reddit's web component architecture
- Email Verification: Automatic skip or code entry from email
- Captcha Solving: NextCaptcha API integration for reCAPTCHA
- Onboarding Flow: Handles "About you" and Interests pages
- Human-like Behavior: Random delays and typing simulation
- Error Handling: Stops process immediately on critical errors
- Account Management: Saves registered accounts to JSON file
- Node.js (v18 or higher)
- AdsPower or Multilogin antidetect browser (optional for production)
- NextCaptcha API Key (from https://nextcaptcha.com) - optional
- Browser Profiles set up with proxies in your antidetect browser (for production)
npm install
- Copy
.env.example
to.env
:
copy .env.example .env
- Edit
.env
and add your credentials:
NEXTCAPTCHA_API_KEY=your_api_key_here
BROWSER_TYPE=adspower
ADSPOWER_API_URL=http://local.adspower.net:50325
For testing the registration flow without antidetect browsers:
node test.js
This will launch a regular Chrome browser and test the full registration process.
Edit index.js
and set your profile ID:
const PROFILE_ID = 'your_adspower_profile_id';
Then run:
npm start
import { RedditBot } from './reddit-bot.js';
// Production mode with AdsPower
const bot = new RedditBot('profile_id_123');
// Test mode
const testBot = new RedditBot('test-profile', true);
const username = bot.generateRandomUsername('reddit');
const password = bot.generateRandomPassword(14);
const result = await bot.registerAccount(username, password);
if (result.success) {
console.log('Account created:', result);
// result contains: username, email, password, profileId
}
import { RedditBot } from './reddit-bot.js';
const profiles = ['profile1', 'profile2', 'profile3'];
for (const profileId of profiles) {
const bot = new RedditBot(profileId);
const username = bot.generateRandomUsername('reddit');
const password = bot.generateRandomPassword(14);
const result = await bot.registerAccount(username, password);
if (result.success) {
console.log(`✓ Created account: ${result.username}`);
} else {
console.log(`✗ Failed: ${result.error}`);
}
// Wait 1 minute between registrations
await new Promise(resolve => setTimeout(resolve, 60000));
}
The bot handles the complete Reddit registration process:
- Email Entry: Enters email address (handles Shadow DOM)
- Email Verification:
- Tries to click "Skip" button
- If no skip, fetches verification code from email
- Enters code and continues
- Username & Password: Uses Reddit's default username, enters password
- About You: Clicks "Skip" or selects "Man" option
- Interests: Selects 3-5 random interests
- Captcha: Solves reCAPTCHA if present
- Verification: Confirms successful registration
reddit-bot/
├── index.js # Main entry point (production)
├── test.js # Test mode entry point
├── reddit-bot.js # Core registration logic with Shadow DOM
├── browser-manager.js # Browser integration (AdsPower/Multilogin/Test)
├── captcha-solver.js # NextCaptcha API integration
├── email-service.js # Email generation and verification
├── config.js # Configuration
├── package.json
├── .env # Your credentials (not tracked)
├── .env.example # Example configuration
└── accounts.json # Registered accounts (auto-generated)
Reddit uses Shadow DOM for form inputs. The bot handles this by:
- Using
evaluateHandle()
to pierce shadow roots - Accessing inputs inside web components
- Working with
faceplate-text-input
elements
The bot automatically handles email verification:
- Detects verification page
- Looks for "Skip" button
- If skip available, clicks it
- If no skip, fetches code from email API
- Enters code and continues
The bot stops immediately on critical errors:
- Email input not found
- Password input not found
- Required pages not loading
- Cannot skip or verify email
This prevents wasted time on failed registrations.
- Install AdsPower
- Create browser profiles with proxies
- Get profile IDs from AdsPower UI
- Use profile IDs in the bot
- Ensure daily limit not exceeded (free plan has limits)
- Install Multilogin
- Create browser profiles with proxies
- Get profile IDs from Multilogin
- Set
BROWSER_TYPE=multilogin
in.env
- AdsPower free plan has daily limits
- Use test mode:
node test.js
- Upgrade AdsPower plan
- Wait 23 hours for limit reset
- Make sure AdsPower/Multilogin is running
- Check API URL in
.env
matches your setup - Verify profile ID is correct
- Try test mode to isolate issue
- Verify NextCaptcha API key is valid
- Check account balance
- Ensure site key extraction works
- "Could not access email input" - Page not fully loaded
- Increase wait times in
reddit-bot.js
- Check if Reddit updated their web components
- Page may not appear for all accounts
- Bot will stop if expected page doesn't load
- Check browser console for actual page state
- Reddit may have changed their form structure
- Check browser console for errors
- Update selectors in
reddit-bot.js
- Use test mode to debug visually
Always use test mode when developing:
node test.js
This lets you see the browser and debug issues.
- Add console.logs in
reddit-bot.js
- Increase delays to see what's happening
- Check browser console for errors
- Use test mode to see visual feedback
If Reddit changes their UI:
- Inspect element in browser
- Update selectors in
reddit-bot.js
- Test with
node test.js
- Verify in production mode
This tool is for educational purposes only. Automated account creation may violate Reddit's Terms of Service. Use responsibly and at your own risk. The authors are not responsible for any misuse of this software.
MIT