|
| 1 | +# Beatport Automation Tool |
| 2 | + |
| 3 | +Automated Beatport account creation, bulk purchasing, and PDF receipt generation — with Cloudflare Turnstile bypass, proxy support, and a rich terminal UI. |
| 4 | + |
| 5 | +--- |
| 6 | + |
| 7 | +## Features |
| 8 | + |
| 9 | +- **Automated Account Creation** — Generates fake identities, fills signup forms, and handles the full registration flow |
| 10 | +- **Cloudflare Turnstile Bypass** — Intercepts and solves Turnstile captchas via 2Captcha API |
| 11 | +- **Billing Registration** — Automatically sets up billing with card details after account creation |
| 12 | +- **Bulk Purchasing** — Purchase any product across multiple accounts in a single session |
| 13 | +- **Smart Purchase Verification** — Detects successful purchases even when the checkout API returns errors |
| 14 | +- **IP Address Tracking** — Captures the proxy IP for each purchase and stores it in CSV |
| 15 | +- **PDF Receipt Export** — Generates branded PDF receipts with song names, IP addresses, and company branding |
| 16 | +- **Multi-Card Rotation** — Randomly picks from a pool of configured cards for each account |
| 17 | +- **Proxy Support** — Routes all browser traffic through a configurable proxy |
| 18 | +- **Rich Terminal UI** — Progress bars, styled tables, color-coded output, and session summaries |
| 19 | +- **Credential Logging** — All created accounts and purchases saved to CSV |
| 20 | +- **File Logging** — Persistent log file with timestamped entries for debugging |
| 21 | + |
| 22 | +--- |
| 23 | + |
| 24 | +## Prerequisites |
| 25 | + |
| 26 | +- **Python 3.10+** |
| 27 | +- **2Captcha API Key** — Required for solving Cloudflare Turnstile captchas ([2captcha.com](https://2captcha.com)) |
| 28 | +- **Proxy** (recommended) — Residential proxy to avoid IP-based rate limiting |
| 29 | + |
| 30 | +--- |
| 31 | + |
| 32 | +## Installation |
| 33 | + |
| 34 | +### 1. Get the project |
| 35 | + |
| 36 | +**If you have repo access:** |
| 37 | +```bash |
| 38 | +git clone <repository-url> |
| 39 | +cd beatport-acc-creator |
| 40 | +``` |
| 41 | + |
| 42 | +**If you received a ZIP:** |
| 43 | +``` |
| 44 | +Extract the ZIP to a folder and open a terminal there. |
| 45 | +``` |
| 46 | + |
| 47 | +### 2. Install dependencies |
| 48 | + |
| 49 | +```bash |
| 50 | +pip install -r requirements.txt |
| 51 | +``` |
| 52 | + |
| 53 | +### 3. Install Playwright browsers |
| 54 | + |
| 55 | +```bash |
| 56 | +playwright install chromium |
| 57 | +``` |
| 58 | + |
| 59 | +### 4. Create the `.env` file |
| 60 | + |
| 61 | +Copy the example and fill in your credentials: |
| 62 | + |
| 63 | +```bash |
| 64 | +cp .env.example .env |
| 65 | +``` |
| 66 | + |
| 67 | +Then edit `.env` with your actual values: |
| 68 | + |
| 69 | +```env |
| 70 | +TWOCAPTCHA_API_KEY=your_2captcha_api_key |
| 71 | +BEATPORT_SITEKEY=0x4AAAAAAARdaJSylLhXz0zB |
| 72 | +
|
| 73 | +# Proxy |
| 74 | +PROXY_USERNAME=your_proxy_username |
| 75 | +PROXY_PASSWORD=your_proxy_password |
| 76 | +PROXY_HOST=gate.decodo.com |
| 77 | +PROXY_PORT=10001 |
| 78 | +
|
| 79 | +# Cards (format: number,expiry,cvv separated by semicolons) |
| 80 | +CARDS=4111111111111111,12/31,123;5500000000000004,12/31,456 |
| 81 | +``` |
| 82 | + |
| 83 | +| Variable | Description | |
| 84 | +|---|---| |
| 85 | +| `TWOCAPTCHA_API_KEY` | Your 2Captcha API key for solving Turnstile captchas | |
| 86 | +| `BEATPORT_SITEKEY` | Beatport's Cloudflare Turnstile site key (pre-filled) | |
| 87 | +| `PROXY_USERNAME` | Proxy authentication username | |
| 88 | +| `PROXY_PASSWORD` | Proxy authentication password | |
| 89 | +| `PROXY_HOST` | Proxy server hostname | |
| 90 | +| `PROXY_PORT` | Proxy server port | |
| 91 | +| `CARDS` | Payment cards in `number,M/YY,cvv` format, separated by `;` | |
| 92 | + |
| 93 | +### 5. Run |
| 94 | + |
| 95 | +```bash |
| 96 | +python main.py |
| 97 | +``` |
| 98 | + |
| 99 | +--- |
| 100 | + |
| 101 | +## Usage |
| 102 | + |
| 103 | +When you launch the tool, you'll see: |
| 104 | + |
| 105 | +``` |
| 106 | +╭─────────────────────────────────────────────────────╮ |
| 107 | +│ Beatport Automation Tool │ |
| 108 | +│ Account creation, automated purchases, and receipts│ |
| 109 | +╰─────────────────────────────────────────────────────╯ |
| 110 | +
|
| 111 | +Select an option: |
| 112 | + 1. Create accounts |
| 113 | + 2. Perform purchases |
| 114 | + 3. Export PDF receipt |
| 115 | +
|
| 116 | +Option: > _ |
| 117 | +``` |
| 118 | + |
| 119 | +### Option 1: Create Accounts |
| 120 | + |
| 121 | +Enter the number of accounts to create. The bot processes each account automatically: |
| 122 | + |
| 123 | +1. Generates a fake identity (name, email, username, password, US address) |
| 124 | +2. Checks email/username availability via Beatport API |
| 125 | +3. Creates the account with Turnstile captcha bypass |
| 126 | +4. Sets up billing with a randomly selected card |
| 127 | +5. Saves credentials to `created_accounts.csv` |
| 128 | + |
| 129 | +### Option 2: Perform Purchases |
| 130 | + |
| 131 | +1. Enter the Beatport product URL (e.g., `https://www.beatport.com/fr/release/caliente/5812893`) |
| 132 | +2. Enter the number of purchases to perform |
| 133 | +3. The bot filters eligible accounts (those that haven't already purchased the product) |
| 134 | +4. For each account: logs in, captures the proxy IP, verifies the library, and completes the purchase |
| 135 | +5. Updates CSV with the purchase record and IP address |
| 136 | + |
| 137 | +**Smart error handling:** If the checkout API returns an error (e.g., HTTP 400), the bot checks the library to verify if the purchase actually went through before retrying. |
| 138 | + |
| 139 | +### Option 3: Export PDF Receipt |
| 140 | + |
| 141 | +Generates a branded PDF receipt (`purchase_receipt.pdf`) listing all purchases across all accounts: |
| 142 | + |
| 143 | +- **Header:** Company logo + document title + generation date |
| 144 | +- **Body:** Table with song names (extracted from URLs) and IP addresses |
| 145 | +- **Footer:** Beatpush, Inc. company address |
| 146 | + |
| 147 | +--- |
| 148 | + |
| 149 | +## Output Files |
| 150 | + |
| 151 | +| File | Description | |
| 152 | +|---|---| |
| 153 | +| `created_accounts.csv` | All account credentials and purchase records | |
| 154 | +| `beatport_bot.log` | Timestamped log file for debugging | |
| 155 | +| `purchase_receipt.pdf` | Generated PDF receipt (via option 3) | |
| 156 | + |
| 157 | +### CSV Format |
| 158 | + |
| 159 | +```csv |
| 160 | +email,password,username,first_name,last_name,card_number,card_type,created_at,purchased_songs,purchase_ips |
| 161 | +li5yl.john@inbox.testmail.app,aB3!xYz9,john4821,John,Smith,4165...5229,001,2026-03-06T14:30:00,https://www.beatport.com/fr/release/caliente/5812893,203.0.113.42 |
| 162 | +``` |
| 163 | + |
| 164 | +- `purchased_songs`: Pipe-separated (`|`) list of product URLs |
| 165 | +- `purchase_ips`: Pipe-separated (`|`) list of proxy IPs (parallel to purchased_songs) |
| 166 | + |
| 167 | +--- |
| 168 | + |
| 169 | +## Card Configuration |
| 170 | + |
| 171 | +Cards are configured in the `.env` file using a compact format: |
| 172 | + |
| 173 | +``` |
| 174 | +CARDS=number,expiry,cvv;number,expiry,cvv |
| 175 | +``` |
| 176 | + |
| 177 | +- **Expiry format:** `M/YY` (e.g., `3/31` = March 2031) |
| 178 | +- **Separator:** `;` between cards |
| 179 | +- The bot randomly selects a card for each account |
| 180 | + |
| 181 | +**Example with multiple cards:** |
| 182 | +``` |
| 183 | +CARDS=4165981722225229,3/31,673;5354563333133382,3/31,818;5200828444428210,3/31,897 |
| 184 | +``` |
| 185 | + |
| 186 | +--- |
| 187 | + |
| 188 | +## Project Structure |
| 189 | + |
| 190 | +``` |
| 191 | +beatport-acc-creator/ |
| 192 | +├── main.py # Entry point — menu, account/purchase loops, CSV management |
| 193 | +├── automator.py # Core automation — Playwright browser control |
| 194 | +├── pdf_generator.py # PDF receipt generation |
| 195 | +├── configs.py # Config class — loads .env variables |
| 196 | +├── logger.py # Rich console output + file logging |
| 197 | +├── requirements.txt # Python dependencies |
| 198 | +├── assets/ |
| 199 | +│ └── logo.png # Company logo for PDF header |
| 200 | +├── .env # Your credentials (not in repo) |
| 201 | +├── .env.example # Template for .env |
| 202 | +├── LICENSE # License & Terms of Service |
| 203 | +│ |
| 204 | +├── created_accounts.csv # Output — account credentials & purchases (not in repo) |
| 205 | +├── purchase_receipt.pdf # Output — generated PDF receipt (not in repo) |
| 206 | +└── beatport_bot.log # Output — timestamped log file (not in repo) |
| 207 | +``` |
| 208 | + |
| 209 | +--- |
| 210 | + |
| 211 | +## Troubleshooting |
| 212 | + |
| 213 | +### "TWOCAPTCHA_API_KEY" / KeyError on startup |
| 214 | + |
| 215 | +Your `.env` file is missing or incomplete: |
| 216 | +1. Copy `.env.example` to `.env` |
| 217 | +2. Fill in all required values |
| 218 | +3. Make sure there are no extra spaces around the `=` sign |
| 219 | + |
| 220 | +### Playwright browser not found |
| 221 | + |
| 222 | +Run the browser installer: |
| 223 | +```bash |
| 224 | +playwright install chromium |
| 225 | +``` |
| 226 | + |
| 227 | +### Captcha solving fails / times out |
| 228 | + |
| 229 | +- Verify your 2Captcha API key is correct and has balance |
| 230 | +- Check that `BEATPORT_SITEKEY` matches the current Beatport Turnstile key |
| 231 | +- 2Captcha Turnstile solving typically takes 10-20 seconds |
| 232 | + |
| 233 | +### Proxy connection errors |
| 234 | + |
| 235 | +- Verify your proxy credentials and host/port in `.env` |
| 236 | +- Ensure the proxy supports HTTP/HTTPS traffic |
| 237 | +- Check that the proxy service is active and not rate-limiting |
| 238 | + |
| 239 | +### State/Province selection fails repeatedly |
| 240 | + |
| 241 | +The bot generates US addresses using Faker. Occasionally, a generated state abbreviation doesn't match Beatport's dropdown options. The bot retries automatically (up to 5 times) with new address data. |
| 242 | + |
| 243 | +### Checkout returns error but purchase succeeded |
| 244 | + |
| 245 | +This is handled automatically. When checkout returns an error (e.g., HTTP 400 "Cart does not contain any items"), the bot checks the library to verify if the purchase went through before retrying. |
| 246 | + |
| 247 | +### Account creation succeeds but billing fails |
| 248 | + |
| 249 | +The account is still created and saved to CSV. You can manually set up billing later. Common causes: |
| 250 | +- Card was declined or expired |
| 251 | +- Proxy IP was flagged by the payment processor |
| 252 | + |
| 253 | +--- |
| 254 | + |
| 255 | +## FAQ |
| 256 | + |
| 257 | +**How long does each account take?** |
| 258 | +Typically 30-60 seconds per account, depending on captcha solving speed and network latency. |
| 259 | + |
| 260 | +**Can I run it headless (no browser window)?** |
| 261 | +The browser currently launches in visible mode (`headless=False`) for debugging. To run headless, modify `automator.py` line 64: change `headless=False` to `headless=True`. (May not work properly in headless!) |
| 262 | + |
| 263 | +**What if Beatport changes their signup flow?** |
| 264 | +The bot interacts with specific form elements by role/label. If Beatport significantly changes their UI, the selectors in `automator.py` may need updating. |
| 265 | + |
| 266 | +**Can I use different email domains?** |
| 267 | +Currently uses `inbox.testmail.app`. To change it, modify the `email_address` format in `automator.py` in the `_sync_generate_fake_data` method. |
| 268 | + |
| 269 | +**Is each account created with a unique IP?** |
| 270 | +If your proxy rotates IPs per session (e.g., residential rotating proxies), yes. Each account gets a fresh browser context routed through the proxy. |
| 271 | + |
| 272 | +--- |
| 273 | + |
| 274 | +## Support & Pricing |
| 275 | + |
| 276 | +| | | |
| 277 | +|---|---| |
| 278 | +| **Price** | Contact for pricing | |
| 279 | +| **Purchase & Support** | [Contact on Telegram](https://t.me/AkibHridoy) | |
| 280 | + |
| 281 | +### Developer |
| 282 | + |
| 283 | +**Abir Hasan** |
| 284 | +- GitHub: [github.com/AbirHasan2005](https://github.com/AbirHasan2005) |
| 285 | +- Telegram: [t.me/AbirHasan2005](https://t.me/AbirHasan2005) |
| 286 | + |
| 287 | +--- |
| 288 | + |
| 289 | +## License & Legal |
| 290 | + |
| 291 | +This software is proprietary and commercially licensed. By using this tool, you agree to the terms outlined in the [LICENSE](LICENSE) file, which includes the License Agreement, Terms of Service, Confidentiality & Anti-Redistribution Policy, and Privacy Policy. |
| 292 | + |
| 293 | +**Unauthorized redistribution of this software is strictly prohibited and will result in legal action.** |
0 commit comments