Перейти к основному содержимому

Пример автоматизации с Selenium

Это руководство описывает Python-скрипт, который использует библиотеку Selenium для автоматизации управления профилями браузера с помощью Indigo X API. Скрипт выполняет следующие действия:

  • Вход в Indigo X через API.
  • Запуск профиля браузера с Selenium в качестве типа автоматизации.
  • Получение порта, используемого запущенным профилем.
  • Инициализация Selenium WebDriver на localhost с полученным портом.
  • Выполнение действий в браузере с помощью WebDriver.
  • Остановка профиля после небольшой задержки.

К концу этой статьи у вас будет рабочий скрипт для автоматизации профилей браузера, и вы поймете, как адаптировать его для разных типов браузеров Indigo X (Mimic или Stealthfox).


Предварительные требования

Перед запуском скрипта убедитесь, что у вас есть следующее:

  1. Библиотеки Python: Установите необходимые библиотеки с помощью pip:

    pip install requests selenium
  2. Аккаунт Indigo X: Вам нужен действующий аккаунт Indigo X с:

    • USERNAME: Электронная почта вашего аккаунта Indigo X.
    • PASSWORD: Пароль вашего аккаунта Indigo X (шифрование MD5 не требуется).
    • FOLDER_ID и PROFILE_ID: Получите эти значения с помощью руководств Indigo X DevTools или Postman.
  3. Агент Indigo X: Убедитесь, что агент Indigo X подключен, так как он позволяет запускать профили.


Обзор скрипта

Python-скрипт подключается к API Indigo X, запускает профиль браузера и использует Selenium для его управления. Вот разбивка ключевых шагов:

  1. Вход: Аутентификация в API Indigo X для получения токена носителя.
  2. Запуск профиля: Запуск профиля браузера с автоматизацией Selenium и получение порта.
  3. Selenium WebDriver: Инициализация WebDriver для взаимодействия с браузером на указанном порту.
  4. Действия в браузере: Выполнение действий, таких как переход на веб-сайт.
  5. Остановка профиля: Закрытие профиля после 5-секундной задержки.

Скрипт совместим с типами браузеров Mimic и Stealthfox с небольшими изменениями конфигурации для Stealthfox.


Полный скрипт

Ниже приведен полный Python-скрипт. Замените заполнители (USERNAME, PASSWORD, FOLDER_ID, PROFILE_ID) на ваши собственные значения.

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
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" # Рекомендуется для запуска профилей
LOCALHOST = "http://127.0.0.1"
HEADERS = {"Accept": "application/json", "Content-Type": "application/json"}

# Информация об аккаунте (Замените на ваши значения)
USERNAME = ""
PASSWORD = ""
FOLDER_ID = ""
PROFILE_ID = ""

def signin() -> str:
"""Аутентификация в Indigo X и возврат токена носителя."""
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"\nОшибка при входе: {r.text}\n")
else:
response = r.json()["data"]
token = response["token"]
return token

def start_profile() -> webdriver:
"""Запуск профиля Indigo X и возврат 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"\nОшибка при запуске профиля: {r.text}\n")
else:
print(f"\nПрофиль {PROFILE_ID} запущен.\n")
selenium_port = response["data"]["port"]
driver = webdriver.Remote(
command_executor=f"{LOCALHOST}:{selenium_port}", options=ChromiumOptions()
)
return driver

def stop_profile() -> None:
"""Остановка профиля Indigo X."""
r = requests.get(f"{INDIGO_LAUNCHER}/profile/stop/p/{PROFILE_ID}", headers=HEADERS)
if r.status_code != 200:
print(f"\nОшибка при остановке профиля: {r.text}\n")
else:
print(f"\nПрофиль {PROFILE_ID} остановлен.\n")

# Выполнение автоматизации
token = signin()
HEADERS.update({"Authorization": f"Bearer {token}"})
driver = start_profile()
driver.get("https://indigobrowser.com/")
time.sleep(5)
stop_profile()

Настройка для Mimic и Stealthfox

Скрипт по умолчанию использует тип браузера Mimic, который использует ChromiumOptions. Чтобы использовать Stealthfox, измените инициализацию WebDriver в функции start_profile:

driver = webdriver.Remote(
command_executor=f"{LOCALHOST}:{selenium_port}", options=ChromiumOptions()
)
Конфигурация Stealthfox

Убедитесь, что вы импортировали Options из selenium.webdriver.firefox.options при использовании Stealthfox.


Запуск скрипта

Следуйте этим шагам для выполнения скрипта:

  1. Обновите переменные: Замените USERNAME, PASSWORD, FOLDER_ID и PROFILE_ID на ваши учетные данные и данные профиля Indigo X.
  2. Проверьте подключение агента: Убедитесь, что агент Indigo X запущен и подключен.
  3. Запустите скрипт: Выполните .py файл с помощью Python:
    python your_script.py

Скрипт:

  • Войдет в Indigo X.
  • Запустит указанный профиль.
  • Откроет браузер и перейдет на https://indigobrowser.com/.
  • Подождет 5 секунд.
  • Остановит профиль.

Устранение неполадок

Если возникнут проблемы, проверьте следующее:

  • Агент не подключен: Убедитесь, что агент Indigo X запущен.
  • Неверные учетные данные: Проверьте USERNAME и PASSWORD.
  • Некорректные идентификаторы: Дважды проверьте FOLDER_ID и PROFILE_ID.
  • Конфликты портов: Убедитесь, что никакие другие службы не используют тот же порт, что и профиль Indigo X.
Советы по отладке

Скрипт включает сообщения об ошибках для действий входа, запуска и остановки профиля. Просмотрите вывод консоли для получения подробной информации о любых сбоях.