Як використовувати AdsPower з Playwright: повний посібник з налаштування

By Anonymous☉ 4411 Views

Take a Quick Look

Дізнайтеся, як підключити профілі антидетект-браузера AdsPower до Playwright через Local API та CDP для надійної багатоакаунтної автоматизації та збору даних.

🔥 Limited-Time Offer! Save extra 10% off on your first monthly plan with code: Anitdetect10

Як використовувати AdsPower з Playwright: повний посібник з налаштування

AdsPower надає вам ізольовані профілі браузера із захистом відбитків; Playwright — це швидкий і надійний фреймворк для автоматизації. Коли ви з'єднуєте їх, ви отримуєте робочий процес, який може керувати десятками акаунтів, збирати дані із захищених сторінок і запускати наскрізні тести в реалістичних браузерних середовищах, не викликаючи антибот-захисту. Цей посібник проведе вас через весь процес налаштування: від увімкнення AdsPower Local API до написання скриптів на Python та Node.js, які керують профілями через CDP-з'єднання Playwright.

Чому варто поєднувати AdsPower і Playwright?

Playwright product interface

Playwright product interface.

Playwright створений для сучасної веб-автоматизації. Він має автоматичне очікування, веб-орієнтовані твердження, стійкі локатори та вбудовану підтримку підключення до існуючих екземплярів браузера через Chrome DevTools Protocol (CDP). AdsPower надає саме це: локальну WebSocket-кінцеву точку для кожного запущеного профілю. Підключивши Playwright до цієї кінцевої точки, ви керуєте повністю ізольованим сеансом браузера зі зміненим відбитком, як звичайним екземпляром Chromium.

Ця комбінація вирішує конкретні проблеми:

  • Безпека багатьох акаунтів у масштабі. Кожен профіль AdsPower має власні файли cookie, кеш, відбиток Canvas/WebGL і проксі. Playwright керує ними без перехресного забруднення.
  • Менше блокувань під час збору даних. Антидетект-відбитки плюс реалістичні шаблони взаємодії Playwright знижують ймовірність того, що цільовий сайт позначить вашу автоматизацію.
  • Одна кодова база, багато ідентичностей. Ви можете перебирати ID профілів і запускати той самий скрипт Playwright проти сотень ізольованих сеансів.
  • Без спеціальних патчів браузера. Playwright спілкується з існуючим ядром Chromium AdsPower через CDP, тому технологія відбитків AdsPower залишається недоторканою.

Якщо ви все ще порівнюєте антидетект-браузери перед вибором, перегляньте AdsPower vs Maskfog vs Incogniton: Як обрати у 2026 році? для детального порівняння.

Попередні вимоги

Перш ніж писати будь-який код, переконайтеся, що у вас є:

  1. AdsPower встановлено та запущено на Windows, macOS або Linux.
  2. Створено принаймні один профіль браузера у клієнті AdsPower. Зверніть увагу на ID профілю, показаний у списку профілів.
  3. Python 3.8+ або Node.js 16+ встановлено, залежно від вашої мовної переваги.
  4. Playwright встановлено у вашому проєкті:
pip install playwright httpx
# або
npm install playwright axios
  1. AdsPower Local API увімкнено. У клієнті AdsPower перейдіть до Налаштування > Local API і підтвердьте, що служба працює на порту 50325. Якщо ви використовуєте перевірку за допомогою API-ключа, скопіюйте свій ключ; інакше ви можете вимкнути перевірку лише для локальної розробки.

Розуміння AdsPower Local API

Local API — це локальний HTTP-сервіс, який AdsPower запускає на http://127.0.0.1:50325. Він дозволяє програмно запускати та зупиняти профілі браузера. Ключові кінцеві точки:

  • GET /api/v1/browser/start?user_id={profile_id} — запускає профіль і повертає деталі з'єднання.
  • GET /api/v1/browser/stop?user_id={profile_id} — закриває профіль.
  • POST /api/v2/browser-profile/start — новіша кінцева точка v2 з додатковими опціями, такими як last_opened_tabs і proxy_detection.

Коли ви запускаєте профіль, відповідь містить поле data.ws.puppeteer. Це WebSocket-кінцева точка CDP, необхідна Playwright. Відповідь також містить data.webdriver — шлях до вбудованого драйвера Chrome AdsPower, корисний для Selenium, але не обов'язковий для Playwright.

Крок 1: Запуск профілю AdsPower через Local API

Перший крок у скрипті — завжди запустити профіль і отримати CDP-кінцеву точку. Ось мінімальний приклад на Python з використанням httpx:

import httpx

LOCAL_API_BASE = "http://127.0.0.1:50325"
PROFILE_ID = "your_profile_id_here"
API_KEY = "your_api_key_here"  # необов'язково, якщо перевірку API вимкнено

headers = {"Authorization": f"Bearer {API_KEY}"}

response = httpx.post(
    f"{LOCAL_API_BASE}/api/v2/browser-profile/start",
    headers=headers,
    json={
        "profile_id": PROFILE_ID,
        "last_opened_tabs": "0",
        "proxy_detection": "0",
    },
)

if response.status_code != 200:
    raise RuntimeError(f"Не вдалося запустити профіль: {response.text}")

data = response.json()
cdp_endpoint = data["data"]["ws"]["puppeteer"]
print(f"CDP endpoint: {cdp_endpoint}")

Опція last_opened_tabs контролює, чи відновлює AdsPower вкладки з попереднього сеансу. Встановлення значення "0" дає чистий старт, що зазвичай потрібно для автоматизації.

Крок 2: Підключення Playwright до профілю

Отримавши CDP-кінцеву точку, використовуйте connect_over_cdp Playwright, щоб приєднатися до запущеного браузера:

from playwright.sync_api import sync_playwright

with sync_playwright() as playwright:
    browser = playwright.chromium.connect_over_cdp(cdp_endpoint)
    default_context = browser.contexts[0]
    page = default_context.pages[0] if default_context.pages else default_context.new_page()

    page.goto("https://www.browserscan.net")
    print(page.title())
    page.wait_for_timeout(10000)

    browser.close()

Для Node.js патерн майже ідентичний:

const axios = require('axios');
const { chromium } = require('playwright');

const PROFILE_ID = 'your_profile_id_here';
const API_KEY = 'your_api_key_here';

axios.get(`http://127.0.0.1:50325/api/v1/browser/start?user_id=${PROFILE_ID}`, {
  headers: { Authorization: `Bearer ${API_KEY}` }
}).then(async (res) => {
  const cdpEndpoint = res.data.data.ws.puppeteer;
  const browser = await chromium.connectOverCDP(cdpEndpoint);
  const defaultContext = browser.contexts()[0];
  const page = await defaultContext.newPage();
  await page.goto('https://www.browserscan.net');
  console.log(await page.title());
  await browser.close();
}).catch((err) => {
  console.error(err.message);
});

Важливо: використовуйте існуючий контекст

Коли ви підключаєтеся через CDP, Playwright створює обгортку навколо браузера, який AdsPower уже запустив. Не викликайте browser.newContext() — це створить новий контекст без конфігурації відбитків AdsPower. Завжди використовуйте browser.contexts[0], який представляє реальний контекст перегляду профілю з його проксі, файлами cookie та відбитком.

Крок 3: Чисте закриття профілю

Після завершення автоматизації закрийте браузер і зупиніть профіль через API. Це звільняє ресурси та гарантує, що AdsPower правильно збереже стан сеансу:

browser.close()
httpx.get(
    f"{LOCAL_API_BASE}/api/v1/browser/stop?user_id={PROFILE_ID}",
    headers=headers,
)

У Node.js:

await browser.close();
await axios.get(`http://127.0.0.1:50325/api/v1/browser/stop?user_id=${PROFILE_ID}`, {
  headers: { Authorization: `Bearer ${API_KEY}` }
});

Повний приклад на Python

Ось повний скрипт, який запускає профіль, переходить на сайт перевірки відбитків, виводить заголовок сторінки та завершує роботу:

import httpx
from playwright.sync_api import sync_playwright

LOCAL_API_BASE = "http://127.0.0.1:50325"
PROFILE_ID = "your_profile_id_here"
API_KEY = "your_api_key_here"

headers = {"Authorization": f"Bearer {API_KEY}"}

# 1. Запуск профілю AdsPower
resp = httpx.post(
    f"{LOCAL_API_BASE}/api/v2/browser-profile/start",
    headers=headers,
    json={"profile_id": PROFILE_ID, "last_opened_tabs": "0", "proxy_detection": "0"},
)
if resp.status_code != 200:
    raise RuntimeError(f"Помилка запуску: {resp.text}")

cdp_endpoint = resp.json()["data"]["ws"]["puppeteer"]

# 2. Підключення Playwright
with sync_playwright() as playwright:
    browser = playwright.chromium.connect_over_cdp(cdp_endpoint)
    context = browser.contexts[0]
    page = context.pages[0] if context.pages else context.new_page()

    page.goto("https://www.browserscan.net")
    print(f"Заголовок сторінки: {page.title()}")
    page.wait_for_timeout(8000)

    browser.close()

# 3. Зупинка профілю
httpx.get(f"{LOCAL_API_BASE}/api/v1/browser/stop?user_id={PROFILE_ID}", headers=headers)

Масштабування на багато профілів

Одна з найбільших переваг цієї установки — циклічний перебір багатьох профілів. Зберігайте список ID профілів і запускайте той самий робочий процес для кожного послідовно або паралельно:

profile_ids = ["profile_a", "profile_b", "profile_c"]

for pid in profile_ids:
    resp = httpx.post(
        f"{LOCAL_API_BASE}/api/v2/browser-profile/start",
        headers=headers,
        json={"profile_id": pid, "last_opened_tabs": "0", "proxy_detection": "0"},
    )
    cdp_endpoint = resp.json()["data"]["ws"]["puppeteer"]

    with sync_playwright() as playwright:
        browser = playwright.chromium.connect_over_cdp(cdp_endpoint)
        page = browser.contexts[0].pages[0]
        page.goto("https://example.com")
        # Ваша логіка для кожного профілю тут
        browser.close()

    httpx.get(f"{LOCAL_API_BASE}/api/v1/browser/stop?user_id={pid}", headers=headers)

Для великих обсягів збору даних поєднайте цей цикл із масовим створенням профілів AdsPower і ротацією проксі. Якщо ви будуєте більший конвеєр даних, посібник з автоматизації збору даних охоплює підходи на основі браузера та API, а також способи уникнення блокувань у масштабі.

Практичні випадки використання

Керування багатьма акаунтами в соціальних мережах

Запускайте той самий скрипт публікації або взаємодії для окремих профілів AdsPower, кожен зі своїм проксі та відбитком. Playwright обробляє логіку взаємодії; AdsPower зберігає ізоляцію ідентичностей.

Моніторинг цін в електронній комерції

Запускайте профілі, налаштовані для різних регіонів, переходьте на сайти рітейлерів і отримуйте дані про ціни. Різноманітність відбитків плюс резидентні проксі знижує ймовірність блокувань за IP.

Перевірка реклами та тестування цільових сторінок

Відкривайте кампанії з точки зору різних профілів користувачів і геолокацій. Функції скріншотів і тверджень Playwright дозволяють перевірити, що реклама правильно відображається для кожного сегмента аудиторії.

Робочі процеси з великою кількістю CAPTCHA

Коли цільовий сайт показує CAPTCHA, ви можете інтегрувати рішення в той самий скрипт Playwright. Повний посібник дивіться в статті Як використовувати AdsPower з CapSolver.

Вирішення поширених проблем

Відмова в з'єднанні на порту 50325

Переконайтеся, що AdsPower запущено, а Local API увімкнено в налаштуваннях. На деяких системах брандмауер може блокувати трафік localhost — дозвольте порт 50325 для локальних з'єднань.

Час очікування connect_over_cdp вичерпано

Переконайтеся, що CDP-кінцева точка доступна. Виведіть кінцеву точку та перевірте її в браузері або за допомогою curl. Якщо AdsPower запустив профіль, але WebSocket не відповідає, перезапустіть профіль і спробуйте знову.

Порожня сторінка або відсутній контекст

Якщо browser.contexts[0] не має сторінок, створіть одну за допомогою context.new_page(). Уникайте виклику browser.newContext(), оскільки це обходить налаштування відбитків AdsPower.

API повертає код помилки

Перевірте, чи правильний ID профілю та чи профіль не запущено. Кінцева точка v1 start повертає code: 0 у разі успіху; будь-яке інше значення вказує на проблему, часто недійсний ID або вже активний профіль.

Невідповідність версії Playwright

Використовуйте останній випуск Playwright. Метод connect_over_cdp був стабільним у сучасних версіях, але старіші випуски можуть не мати повної підтримки CDP для новіших функцій протоколу Chromium.

AdsPower + Playwright проти Selenium і Puppeteer

Local API AdsPower повертає деталі з'єднання для всіх трьох основних інструментів автоматизації. Чому варто обрати Playwright?

Особливість Playwright Selenium Puppeteer
Автоматичне очікування Вбудоване Ручні очікування Часткове
Веб-орієнтовані твердження Так Ні Ні
Стійкі локатори Так Обмежені Обмежені
CDP-з'єднання connect_over_cdp debuggerAddress puppeteer.connect
Паралельна ізоляція тестів Вбудовані контексти Ручна Часткова
Підтримка багатьох мов Python, Node.js, Java, .NET Багато Тільки Node.js

Автоматичне очікування Playwright усуває більшість проблем із нестабільними тестами, а бібліотека тверджень робить перевірку чистішою. Для довготривалих завдань збору даних, де потрібен максимальний контроль над сеансом браузера, Puppeteer є надійною альтернативою; для команд, які вже стандартизувалися на Selenium, AdsPower також підтримує це. Але для нових проєктів автоматизації Playwright пропонує найкращий баланс надійності та досвіду розробника.

Міркування щодо безпеки

  • Тримайте перевірку API увімкненою у виробництві. Її вимкнення означає, що будь-який локальний процес може керувати вашими профілями.
  • Зберігайте API-ключі в змінних середовища, а не у вихідному коді.
  • Використовуйте виділені проксі для кожного профілю. AdsPower підтримує HTTP, SOCKS5 та SSH проксі — налаштуйте їх на рівні профілю, щоб Playwright автоматично їх успадковував.
  • Перевіряйте довіру до профілів. Запускайте лише ті профілі, які ви створили самі, особливо під час виконання сторонніх скриптів.

Якщо ви хочете перевірити, що ваш проксі та відбиток працюють правильно перед запуском автоматизації в масштабі, посібник з налаштування AdsPower + Whoer.net показує, як перевірити витоки IP та відбитків.

Пов'язані матеріали

Джерела та додаткове читання

  • Приклади коду - Приклади коду для автоматизації AdsPower за допомогою Python, Javascript та Java.Chrome code samplesPython Selenium Демо пройшло тест у версії selenium 3.141.0 import requests,time from selenium import webdriver fro
  • r/Playwright на Reddit: Чи хтось керував браузером AdsPower ... - 7 жовтня 2024 ... Чи хтось керував браузером AdsPower за допомогою Python Playwright? ... Привіт. Я переглянув офіційну документацію AdsPower, і там немає згадок ...
  • AdsPower LocalAPI MCP Server: Розумніша автоматизація браузера з AI - Дізнайтеся, як AdsPower LocalAPI MCP Server підключає AI-інструменти, такі як Claude, для автоматизації створення, керування та контролю профілів браузера — почніть тестування вже сьогодні.

Часті запитання

Чи офіційно AdsPower підтримує Playwright?

Так. Офіційна документація Local API AdsPower містить приклади Playwright на Python та JavaScript, які використовують connect_over_cdp з кінцевою точкою ws.puppeteer, що повертається API запуску.

Чи можу я використовувати асинхронний API Playwright з AdsPower?

Так. Замініть sync_playwright() на async_playwright() і використовуйте await playwright.chromium.connect_over_cdp(cdp_endpoint). Логіка з'єднання ідентична; відрізняється лише синтаксис.

Чи потрібно встановлювати окремий Chromium для Playwright?

Ні. Коли ви підключаєтеся через CDP, Playwright керує екземпляром Chromium, який AdsPower уже запустив. Для цього робочого процесу вам не потрібні вбудовані бінарні файли браузера Playwright.

Чи можу я запускати кілька профілів AdsPower паралельно з Playwright?

Так. Запустіть кілька профілів через Local API, зберіть їхні CDP-кінцеві точки та підключіться до кожної. Для Python використовуйте asyncio з async_playwright(); для Node.js — Promise.all.

Чи працює Playwright з профілями AdsPower на основі Firefox?

Підтримка Firefox в AdsPower вимагає спеціальної версії патча та Firefox 123 або новішої. Патерн CDP-з'єднання розроблений для профілів Chromium, тому для автоматизації Playwright використовуйте профілі на основі Chromium.

Яка різниця між кінцевими точками запуску v1 і v2?

Кінцева точка v2 (/api/v2/browser-profile/start) приймає JSON-тіло з додатковими опціями, такими як last_opened_tabs і proxy_detection. Кінцева точка v1 використовує параметри запиту. Обидві повертають однакову структуру даних з'єднання.

Висновок

Підключення AdsPower до Playwright — це простий трикроковий патерн: запустіть профіль через Local API, підключіть Playwright через connect_over_cdp і зупиніть профіль після завершення. Цей простий цикл відкриває потужну комбінацію — надійні примітиви автоматизації Playwright, що працюють в ізольованих середовищах браузера AdsPower із захистом відбитків. Незалежно від того, чи керуєте ви десятками соціальних акаунтів, збираєте ціни конкурентів чи перевіряєте рекламу в різних регіонах, ця інтеграція дає вам контроль і безпеку для масштабування без спрацювання антибот-систем.

Почніть з одного профілю, перевірте свій скрипт на сайті перевірки відбитків, наприклад BrowserScan, а потім розширюйте до багатопрофільних циклів із проксі. Як тільки патерн налагоджено, ви можете застосувати його майже до будь-якого робочого процесу веб-автоматизації, який вимагає реалістичних, ізольованих ідентичностей браузера.

AI INSIGHTS

Need a Quick Summary? Ask AI