Selenium automation example
This guide walks you through a Python script that leverages the Selenium library to automate browser profile manipulation using the Indigo X API. The script performs the following actions:
- Signs into Indigo X using the API.
 - Starts a browser profile with Selenium as the automation type.
 - Retrieves the port used by the running profile.
 - Initializes a Selenium WebDriver on localhost with the retrieved port.
 - Performs browser actions using the WebDriver.
 - Stops the profile after a brief delay.
 
By the end of this article, you'll have a working script to automate browser profiles and understand how to adapt it for different Indigo X browser types (Mimic or Stealthfox).
Prerequisites
Before running the script, ensure you have the following:
- 
Python Libraries: Install the required libraries using pip:
pip install requests selenium - 
Indigo X Account: You need a valid Indigo X account with:
 - 
Indigo X Agent: Ensure the Indigo X agent is connected, as it enables profile launching.
 
Script Overview
The Python script connects to the Indigo X API, starts a browser profile, and uses Selenium to manipulate it. Here's a breakdown of the key steps:
- Sign In: Authenticates with the Indigo X API to obtain a bearer token.
 - Start Profile: Launches a browser profile with Selenium automation and retrieves the port.
 - Selenium WebDriver: Initializes a WebDriver to interact with the browser on the specified port.
 - Browser Actions: Performs actions like navigating to a website.
 - Stop Profile: Closes the profile after a 5-second delay.
 
The script is compatible with Mimic and Stealthfox browser types, with a minor configuration change for Stealthfox.
Full Script
Below is the complete Python script. Replace the placeholder values (USERNAME, PASSWORD, FOLDER_ID, PROFILE_ID) with your own.
import requests
import hashlib
import time
from selenium import webdriver
from selenium.webdriver.chromium.options import ChromiumOptions
from selenium.webdriver.firefox.options import Options
# API Endpoints
INDIGO_BASE = "https://api.indigobrowser.com"
INDIGO_LAUNCHER = "https://launcher.indigobrowser.com:45011/api/v1"
INDIGO_LAUNCHER_V2 = "https://launcher.indigobrowser.com:45011/api/v2"  # Recommended for launching profiles
LOCALHOST = "http://127.0.0.1"
HEADERS = {"Accept": "application/json", "Content-Type": "application/json"}
# Account Information (Replace with your values)
USERNAME = ""
PASSWORD = ""
FOLDER_ID = ""
PROFILE_ID = ""
def signin() -> str:
    """Authenticate with Indigo X and return a bearer token."""
    payload = {
        "email": USERNAME,
        "password": hashlib.md5(PASSWORD.encode()).hexdigest(),
    }
    r = requests.post(f"{INDIGO_BASE}/user/signin", json=payload)
    if r.status_code != 200:
        print(f"\nError during login: {r.text}\n")
    else:
        response = r.json()["data"]
    token = response["token"]
    return token
def start_profile() -> webdriver:
    """Start a Indigo X profile and return a Selenium WebDriver."""
    r = requests.get(
        f"{INDIGO_LAUNCHER_V2}/profile/f/{FOLDER_ID}/p/{PROFILE_ID}/start?automation_type=selenium",
        headers=HEADERS,
    )
    response = r.json()
    if r.status_code != 200:
        print(f"\nError while starting profile: {r.text}\n")
    else:
        print(f"\nProfile {PROFILE_ID} started.\n")
    selenium_port = response["data"]["port"]
    driver = webdriver.Remote(
        command_executor=f"{LOCALHOST}:{selenium_port}", options=ChromiumOptions()
    )
    return driver
def stop_profile() -> None:
    """Stop the Indigo X profile."""
    r = requests.get(f"{INDIGO_LAUNCHER}/profile/stop/p/{PROFILE_ID}", headers=HEADERS)
    if r.status_code != 200:
        print(f"\nError while stopping profile: {r.text}\n")
    else:
        print(f"\nProfile {PROFILE_ID} stopped.\n")
# Execute the automation
token = signin()
HEADERS.update({"Authorization": f"Bearer {token}"})
driver = start_profile()
driver.get("https://indigobrowser.com/")
time.sleep(5)
stop_profile()
Configuring for Mimic vs. Stealthfox
The script defaults to the Mimic browser type, which uses ChromiumOptions. To use Stealthfox, modify the WebDriver initialization in the start_profile function:
- Mimic (Default)
 - Stealthfox
 
driver = webdriver.Remote(
    command_executor=f"{LOCALHOST}:{selenium_port}", options=ChromiumOptions()
)
driver = webdriver.Remote(
    command_executor=f"{LOCALHOST}:{selenium_port}", options=Options()
)
Ensure you import Options from selenium.webdriver.firefox.options when using Stealthfox.
Running the Script
Follow these steps to execute the script:
- Update Variables: Replace 
USERNAME,PASSWORD,FOLDER_ID, andPROFILE_IDwith your Indigo X credentials and profile details. - Ensure Agent Connection: Verify that the Indigo X agent is running and connected.
 - Run the Script: Execute the 
.pyfile using Python:python your_script.py 
The script will:
- Sign into Indigo X.
 - Start the specified profile.
 - Open a browser and navigate to 
https://indigobrowser.com/. - Wait for 5 seconds.
 - Stop the profile.
 
Troubleshooting
If you encounter issues, check the following:
- Agent Not Connected: Ensure the Indigo X agent is running.
 - Invalid Credentials: Verify your 
USERNAMEandPASSWORD. - Incorrect IDs: Double-check 
FOLDER_IDandPROFILE_ID. - Port Conflicts: Ensure no other services are using the same port as the Indigo X profile.
 
The script includes error messages for login, profile start, and stop actions. Review the console output for details on any failures.