# Multi-Site Sign-Up Automation Script

This script automates the process of signing up for multiple websites using a single configuration file. It is designed to be flexible and resilient, using advanced techniques to mimic human behavior.

---

## How It Works

The script reads its configuration from the `config.toml` file. It launches a browser using your real user profile to avoid bot detection, and then iterates through the list of sites you've defined, filling out and submitting the sign-up forms.

---

## Configuration (`config.toml`)

This is the main file you will edit to control the script. It has the following sections:

### 1. `[browser]` Section

This section controls the browser's behavior.

- `userDataDir` (Required): The absolute path to your Chrome/Chromium user profile. This is critical for avoiding bot detection.
- `userAgent` (Optional): A string to make the browser appear as a specific version (e.g., a Windows machine). If left blank, a random user agent is used.

**Example:**
```toml
[browser]
userDataDir = "/home/someone/.config/chromium"
userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
```

### 2. `[global_credentials]` Section

Define a default set of credentials here. The script will use these for any site that does not have its own specific credentials defined.

- `username`
- `email`
- `password`
- `age` (or any other custom field)

**Example:**
```toml
[global_credentials]
username = "MyGlobalUsername"
email = "my.global.email@gmail.com"
password = "MyGlobalPassword123!"
age = "28"
```

### 3. `[[sites]]` Blocks

Each site you want to process is defined in its own `[[sites]]` block.

- `name`: A unique name for the site (e.g., "CameraBoys").
- `category`: An organizational tag (e.g., "Social", "Financial").
- `url`: The direct URL to the sign-up page.
- `needsPreSubmitAction`: Set to `true` for sites that have a GDPR/cookie popup. Currently, this is only configured for "CameraBoys".

#### `[sites.locators]` Subsection

This is where you define the form fields for the site. The script will dynamically try to fill **any field you list here**.

- **Easy Mode:** Simply find the element in your browser's developer tools, right-click, "Copy element", and paste the entire HTML tag as the value.
- **Advanced Mode:** You can also use a standard CSS selector.

**Supported Fields:** `username`, `password`, `email`, `confirmEmail`, `age`, or any other custom field.
*Note: For `confirmEmail`, the script will automatically use the `email` value.*

**Example:**
```toml
[sites.locators]
email = '<input id="23510" class="required email" name="23510" type="text">'
confirmEmail = '<input id="confirmEmail" class="email required" name="confirmEmail" type="text">'
age = '#user_age' # You can still use CSS selectors
submit = '<button type="submit">Subscribe</button>'
```

#### `[sites.credentials]` Subsection (Optional)

If a site requires a unique login, you can define it here. This will **override** the `[global_credentials]` for this site only.

**Example:**
```toml
[sites.credentials]
username = "SiteSpecificUser"
email = "site.specific.email@gmail.com"
password = "SitePassword789"
age = "42"
```
