Как использовать AdsPower с Selenium: настройка и примеры
Быстрый обзор
Подключите AdsPower к Selenium через Local API, запускайте изолированные антидетект-профили и автоматизируйте мультиаккаунтинг с примерами кода на Python.
Как использовать AdsPower с Selenium: настройка и примеры
AdsPower даёт каждому профилю браузера изолированный отпечаток, а Selenium предоставляет код, управляющий браузером. Объединив их, вы сможете автоматизировать десятки аккаунтов, каждый из которых выглядит как отдельное реальное устройство. В этом руководстве объясняется, как эти два инструмента соединяются, пошагово описывается настройка и приводятся рабочие примеры на Python, которые можно адаптировать.
Зачем объединять AdsPower с Selenium

Selenium product interface.
Сам по себе Selenium запускает обычный браузер. Все сессии используют одни и те же cookie, отпечаток canvas, рендерер WebGL и user agent, поэтому платформы могут связать ваши аккаунты. AdsPower решает эту проблему, создавая изолированные браузерные окружения с уникальными отпечатками (Canvas, WebGL, User Agent, IP и другие) и назначением прокси для каждого профиля.
Комбинация даёт вам:
- Изоляцию отпечатков для каждого запуска автоматизации. Каждая сессия Selenium подключается к другому профилю AdsPower, поэтому два запуска не выглядят как одно устройство.
- Контроль прокси. Трафик выходит через прокси, привязанный к этому профилю, а не через ваш локальный IP.
- Масштабирование без переписывания скриптов. Один и тот же код Selenium работает с сотнями профилей при изменении одного ID.
- Сохранение состояния. Cookie и логины остаются внутри профиля, поэтому вы аутентифицируетесь один раз и повторно используете сессию.
Этот подход лежит в основе мультиаккаунтинга в электронной коммерции, масштабного маркетинга в социальных сетях, партнёрской работы и веб-скрапинга, где каждый запрос должен выглядеть как отдельный посетитель.
Как на самом деле работает подключение
AdsPower запускает локальную службу на вашем компьютере. Selenium не запускает Chrome сам; вместо этого он просит AdsPower запустить профиль, а затем подключается к уже работающему браузеру через интерфейс отладки.
Процесс выглядит так:
- Ваш скрипт вызывает AdsPower Local API для запуска профиля.
- AdsPower запускает браузер этого профиля с его отпечатком и прокси.
- API возвращает путь к WebDriver и адрес отладки (значение
seleniumвнутриws). - Selenium подключается к этому адресу с помощью
debuggerAddress. - Ваш скрипт управляет страницей как обычно.
- По завершении вы закрываете драйвер и вызываете конечную точку остановки.
Здесь важны две детали. Во-первых, WebDriver, возвращаемый API, должен соответствовать версии ядра браузера этого профиля, поэтому следует использовать путь, который даёт AdsPower, а не драйвер, скачанный отдельно. Во-вторых, Local API прослушивает http://local.adspower.net:50325 (или http://127.0.0.1:50325), поэтому ничего не нужно открывать в интернет.
Предварительные требования
Перед написанием кода убедитесь, что у вас есть:
- Установленный AdsPower и хотя бы один созданный профиль. Запомните его ID профиля (также называемый
user_id). - Включённый Local API в настройках AdsPower.
- Python 3.8 или новее с
pip. - Установленный пакет Selenium.
- API-ключ, если ваша версия AdsPower требует заголовки авторизации.
Установите зависимости:
pip install selenium requests
Шаг 1: Запуск профиля через Local API
Конечная точка запуска — это GET-запрос:
GET http://local.adspower.net:50325/api/v1/browser/start?user_id=<PROFILE_ID>
Полезные необязательные параметры включают headless=1 для фоновых запусков, open_tabs=1 чтобы пропустить восстановление предыдущих вкладок, ip_tab=0 чтобы подавить страницу определения IP, и launch_args для передачи флагов Chrome, таких как --disable-notifications. Успешный ответ выглядит так:
{
"code": 0,
"data": {
"ws": {
"selenium": "127.0.0.1:xxxx",
"puppeteer": "ws://127.0.0.1:xxxx/devtools/browser/xxxxxx"
},
"debug_port": "xxxx",
"webdriver": "C:\\xxxx\\chromedriver.exe"
},
"msg": "success"
}
Если code не равен 0, профиль не запустился. Поле msg обычно подсказывает, неверен ли ID профиля или не запущен Local API.
Шаг 2: Подключение Selenium к работающему браузеру

Selenium product interface.
В Selenium 4.18 и новее передайте возвращённый путь к WebDriver в объект Service и установите debuggerAddress в значение selenium:
import time
import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
import sys
ads_id = "your_profile_id"
api_key = "your_api_key_here"
open_url = f"http://local.adspower.net:50325/api/v1/browser/start?user_id={ads_id}"
close_url = f"http://local.adspower.net:50325/api/v1/browser/stop?user_id={ads_id}"
headers = {"Authorization": f"Bearer {api_key}"}
resp = requests.get(open_url, headers=headers).json()
if resp["code"] != 0:
print(resp["msg"])
sys.exit("Check the profile ID and Local API status")
chrome_driver = resp["data"]["webdriver"]
service = Service(executable_path=chrome_driver)
options = Options()
options.add_experimental_option("debuggerAddress", resp["data"]["ws"]["selenium"])
driver = webdriver.Chrome(service=service, options=options)
print(driver.title)
driver.get("https://www.browserscan.net/")
time.sleep(5)
driver.quit()
requests.get(close_url, headers=headers)
В старых сборках Selenium 3.x применяется та же идея, но путь к драйверу передаётся позиционно, а не через Service. Если вы всё ещё на 3.x, обновление — более простое решение.
Сначала открыть страницу проверки отпечатка — хорошая привычка. Это подтверждает, что профиль представляет настроенные вами отпечаток и IP, прежде чем вы запустите реальную задачу.
Шаг 3: Создание переиспользуемого помощника
Жёсткое кодирование этого в каждом скрипте становится громоздким. Оберните это в контекстный менеджер, чтобы профили открывались и закрывались чисто, даже если задача завершится ошибкой:
from contextlib import contextmanager
BASE = "http://local.adspower.net:50325"
@contextmanager
def adspower_profile(profile_id, api_key=""):
headers = {"Authorization": f"Bearer {api_key}"} if api_key else {}
start = requests.get(
f"{BASE}/api/v1/browser/start",
params={"user_id": profile_id, "open_tabs": 1, "ip_tab": 0},
headers=headers,
).json()
if start["code"] != 0:
raise RuntimeError(start["msg"])
data = start["data"]
options = Options()
options.add_experimental_option("debuggerAddress", data["ws"]["selenium"])
driver = webdriver.Chrome(
service=Service(executable_path=data["webdriver"]), options=options
)
try:
yield driver
finally:
driver.quit()
requests.get(
f"{BASE}/api/v1/browser/stop",
params={"user_id": profile_id},
headers=headers,
)
Теперь любая задача сводится к трём строкам:
with adspower_profile("profile_id_here", api_key) as driver:
driver.get("https://example.com/dashboard")
print(driver.title)
Практический пример: проверка аккаунтов по профилям
Распространённая задача — убедиться, что пакет аккаунтов всё ещё корректно входит в систему. Пройдитесь по ID профилей, подключите Selenium к каждому и запишите результат:
profiles = ["id_001", "id_002", "id_003"]
results = {}
for pid in profiles:
try:
with adspower_profile(pid, api_key) as driver:
driver.get("https://example.com/login")
driver.find_element("id", "email").send_keys("user@example.com")
driver.find_element("id", "password").send_keys("secret")
driver.find_element("css selector", "button[type=submit]").click()
results[pid] = "ok" if "dashboard" in driver.current_url else "check"
except Exception as exc:
results[pid] = f"error: {exc}"
print(results)
Поскольку каждый профиль хранит свои cookie, профиль, вошедший вчера, остаётся в системе и сегодня, и вы можете полностью пропустить шаг входа.
Если ваша работа — это скрапинг, а не управление аккаунтами, тот же помощник применим, но в паре с API для скрапинга или настройкой ротации прокси. Похожий подход описан в статье Как использовать AdsPower со Scrapestack: настройка и рабочий процесс.
Практический пример: параллельный запуск профилей
Последовательные запуски медленны, когда у вас много профилей. Поскольку каждый профиль — это независимый браузер, вы можете запускать несколько одновременно с помощью потоков:
from concurrent.futures import ThreadPoolExecutor
def scrape(pid):
with adspower_profile(pid, api_key) as driver:
driver.get("https://example.com/data")
return pid, driver.title
with ThreadPoolExecutor(max_workers=4) as pool:
for pid, title in pool.map(scrape, profiles):
print(pid, title)
Держите число рабочих потоков умеренным. Каждый запущенный профиль потребляет реальную память, а тяжёлый параллелизм на одной машине замедлит всё или вызовет тайм-ауты. От четырёх до восьми одновременных профилей — разумный начальный диапазон на типичной рабочей станции.
Частые проблемы и решения
Профиль запускается, но Selenium не может подключиться. Значение debuggerAddress должно быть полем selenium, а не WebSocket-URL puppeteer. Это разные интерфейсы.
Сессия не создана или несовпадение версии драйвера. Используйте путь webdriver, возвращённый API. Он подобран под ядро браузера этого профиля. Вручную скачанный драйвер часто не подходит.
API возвращает ненулевой код. Проверьте, что ID профиля указан точно, профиль ещё не открыт и Local API включён в настройках AdsPower.
Браузер открывается, но страница показывает неверное местоположение. Прокси привязан к профилю, а не к вашему коду Selenium. Исправьте это в настройках прокси профиля и подтвердите с помощью страницы проверки отпечатка или IP.
Скрипты зависают при выходе. Всегда вызывайте driver.quit(), а затем конечную точку остановки. Оставленные открытыми профили блокируют следующий запуск для того же профиля.
Headless-режим ведёт себя иначе. Некоторые сайты обнаруживают headless-браузеры. Если задача не выполняется только в headless-режиме, сначала протестируйте её с видимым окном, чтобы изолировать причину.
AdsPower против обычного Selenium: когда что подходит

Selenium product interface.
| Сценарий | Обычный Selenium | AdsPower + Selenium |
|---|---|---|
| Тестирование собственного веб-приложения | Хорошо подходит | Излишние накладные расходы |
| Один аккаунт, одна машина | Хорошо подходит | Опционально |
| Много аккаунтов на одном устройстве | Отпечатки конфликтуют | Изолированные профили для каждого аккаунта |
| Прокси для каждого аккаунта | Ручная настройка | Привязан к профилю |
| Постоянные логины между запусками | Ненадёжно | Хранятся внутри профиля |
| Командный доступ к одним и тем же профилям | Не поддерживается | Общее рабочее пространство |
Если ваша автоматизация всегда работает только с одним аккаунтом, обычный Selenium проще. Как только связывание аккаунтов становится риском, антидетект-слой оправдывает себя. Если вы сравниваете антидетект-решения перед выбором, это сравнение AdsPower vs Incogniton vs BitBrowser охватывает работу с отпечатками, поддержку автоматизации и цены.
Масштабирование за пределы одной машины
Когда одной рабочей станции недостаточно, Selenium Grid распределяет сессии по нескольким машинам. Здесь работает та же идея: каждый узел Grid запускает свой экземпляр AdsPower со своим набором профилей, а ваш скрипт направляет работу на нужный узел. Держите сопоставление профилей и узлов явным, чтобы профиль никогда не открывался дважды одновременно.
Документация AdsPower Local API охватывает полный список параметров конечной точки запуска, включая headless-режим, аргументы запуска и очистку кэша. Официальная страница примеров кода включает версии на Python, JavaScript и Java как для Chrome, так и для Firefox, а справочник конечной точки открытия браузера документирует каждый параметр запроса и возвращаемое поле.
Похожие материалы
- Настройки приватности Instagram: полное руководство 2026 — Освойте настройки приватности Instagram в 2026 году: защитите аккаунт, контролируйте обмен данными, остановите отслеживание рекламы и обезопасьте мультиаккаунтинг с помощью антидетект-браузеров.
- AdsPower vs Linken Sphere vs Indigo: сравнение антидетект-браузеров — Сравниваем AdsPower, Linken Sphere и Indigo: отпечатки, автоматизация, команды, цены и сценарии использования. Узнайте, какой антидетект-браузер выбрать в 2026 году.
Источники и дополнительное чтение
- Proxy-Seller × AdsPower: руководство по веб-скрапингу — В этом руководстве мы объединяем AdsPower (антидетект-браузер) с Proxy-Seller (чистый выделенный IP для каждого профиля), подключаем их к AdsPower Local API и...
FAQ
Работает ли AdsPower с Selenium 4?
Да. Selenium 4.18 и новее работают с объектом Service, показанным выше. Selenium 3.141 также работает с немного другой настройкой драйвера.
Нужен ли мне API-ключ? Некоторые версии AdsPower требуют Bearer-токен в заголовках запроса. Если ваш Local API принимает неаутентифицированные запросы, заголовок можно опустить.
Могу ли я запускать профили AdsPower в headless-режиме с Selenium?
Да, передайте headless=1 в конечную точку запуска. Тестируйте осторожно, потому что некоторые сайты обрабатывают headless-браузеры иначе.
Сколько профилей можно запустить одновременно? Зависит от памяти и процессора вашей машины. Каждый профиль — это полноценный экземпляр браузера. Начните с четырёх одновременных профилей и постепенно увеличивайте.
Видит ли Selenium прокси профиля? Да. Прокси настроен на профиле, поэтому весь трафик из этой сессии браузера выходит через него без каких-либо настроек прокси на стороне Selenium.
Могу ли я использовать Firefox вместо Chrome? AdsPower поддерживает профили Firefox с Selenium, но для этого требуется недавний патч AdsPower и Firefox 123 или новее. Chrome — более распространённый и лучше документированный путь.
А как насчёт Puppeteer или Playwright?
Та же конечная точка запуска возвращает WebSocket-URL puppeteer, к которому Playwright и Puppeteer могут подключиться через CDP. Если ваш стек основан на JavaScript, этот путь работает так же хорошо.
Заключение
AdsPower и Selenium чётко разделяют работу: AdsPower отвечает за идентичность, отпечатки и прокси, а Selenium — за действия, выполняемые вашим скриптом. Интеграция сводится к одному шаблону: запустите профиль через Local API, прочитайте возвращённый путь к WebDriver и адрес отладки и подключите Selenium к работающему браузеру.
Как только эта функция-помощник существует, масштабирование — это просто цикл или пул потоков. Добавьте изоляцию на уровне профиля, поддерживайте разумное число рабочих потоков и всегда закрывайте профили по завершении задачи. Если вы также управляете магазинами или социальными аккаунтами вручную параллельно с автоматизацией, руководство вроде Как использовать AdsPower с Shopify: руководство по настройке нескольких магазинов показывает, как та же структура профилей поддерживает повседневные операции.



