Перейти до вмісту
Гайды 5 хв читання 32 переглядів

Налаштування проксі для Playwright

Опануйте інтеграцію проксі Playwright для Python та Node.js. Цей посібник охоплю

Python Браузер
Налаштування проксі для Playwright

Playwright дозволяє налаштовувати проксі для скриптів Python та Node.js переважно через опції browserType.launch() або browser.newContext(), дозволяючи вказувати адресу проксі-сервера, порт та облікові дані для автентифікації. Ця конфігурація спрямовує всі подальші мережеві запити від запущеного екземпляра браузера або контексту через вказаний проксі.

Огляд конфігурації проксі Playwright

Playwright підтримує конфігурації проксі на двох основних рівнях:

  1. На рівні запуску браузера: Застосування проксі до всього екземпляра браузера. Усі контексти та сторінки, створені в цьому браузері, використовуватимуть вказаний проксі. Це підходить, коли всі завдання автоматизації вимагають одного й того ж проксі.
  2. На рівні контексту браузера: Застосування проксі до певного контексту браузера. Це дозволяє різним контекстам в одному екземплярі браузера використовувати різні проксі, або деяким контекстам не використовувати проксі взагалі, що корисно для керування різноманітними сценаріями скрапінгу або тестування.

Об'єкт або словник конфігурації проксі Playwright зазвичай включає адресу server (наприклад, http://proxy.example.com:8080, socks5://localhost:9050), а також необов'язкові username та password для автентифікованих проксі.

Підтримувані типи проксі

Playwright підтримує стандартні протоколи проксі:

  • HTTP-проксі: Вказуються зі схемами http:// або https://.
  • SOCKS-проксі: Вказуються зі схемами socks5:// або socks4://.

Якщо схема опущена (наприклад, proxy.example.com:8080), Playwright за замовчуванням використовує HTTP-проксі. Явне вказання схеми рекомендується для ясності та забезпечення використання правильного протоколу.

Налаштування проксі Playwright для Python

У Python конфігурація проксі передається як словник до аргументу proxy функцій browser_type.launch() або browser.new_context().

Базове налаштування HTTP/HTTPS проксі

Щоб використовувати неавтентифікований HTTP або HTTPS проксі:

from playwright.sync_api import sync_playwright

# Для проксі на весь браузер
with sync_playwright() as p:
    browser = p.chromium.launch(proxy={"server": "http://your.proxy.server:8080"})
    page = browser.new_page()
    page.goto("https://httpbin.org/ip")
    print(page.content())
    browser.close()

# Для проксі, специфічного для контексту
with sync_playwright() as p:
    browser = p.chromium.launch()
    context = browser.new_context(proxy={"server": "http://another.proxy.server:8080"})
    page = context.new_page()
    page.goto("https://httpbin.org/ip")
    print(page.content())
    context.close()
    browser.close()

Налаштування автентифікованого HTTP/HTTPS проксі

Для проксі, що вимагають автентифікації, включіть ключі username та password у словник проксі:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(
        proxy={
            "server": "http://user.proxy.server:8080",
            "username": "proxy_user",
            "password": "proxy_password"
        }
    )
    page = browser.new_page()
    page.goto("https://httpbin.org/ip")
    print(page.content())
    browser.close()

Налаштування SOCKS проксі

Вкажіть протокол SOCKS у рядку server:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(
        proxy={"server": "socks5://your.socks.proxy:9050"}
    )
    page = browser.new_page()
    page.goto("https://httpbin.org/ip")
    print(page.content())
    browser.close()

SOCKS-проксі також підтримують автентифікацію шляхом додавання username та password до словника.

Обхід проксі для певних доменів

Ключ bypass у словнику проксі дозволяє вказати розділений комами список хостів або доменів, які не повинні використовувати проксі. Підтримуються символи узагальнення (*).

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(
        proxy={
            "server": "http://your.proxy.server:8080",
            "bypass": "*.local, .example.com, 192.168.1.1"
        }
    )
    page = browser.new_page()
    page.goto("http://example.com") # Буде обходити проксі, якщо example.com є у списку bypass
    page.goto("https://google.com") # Буде використовувати проксі
    browser.close()

Налаштування проксі Playwright для Node.js

У Node.js конфігурація проксі передається як об'єкт до властивості proxy функцій browserType.launch() або browser.newContext().

Базове налаштування HTTP/HTTPS проксі

Щоб використовувати неавтентифікований HTTP або HTTPS проксі:

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

(async () => {
  // Для проксі на весь браузер
  const browser = await chromium.launch({
    proxy: {
      server: 'http://your.proxy.server:8080'
    }
  });
  const page = await browser.newPage();
  await page.goto('https://httpbin.org/ip');
  console.log(await page.content());
  await browser.close();

  // Для проксі, специфічного для контексту
  const browser2 = await chromium.launch();
  const context = await browser2.newContext({
    proxy: {
      server: 'http://another.proxy.server:8080'
    }
  });
  const page2 = await context.newPage();
  await page2.goto('https://httpbin.org/ip');
  console.log(await page2.content());
  await context.close();
  await browser2.close();
})();

Налаштування автентифікованого HTTP/HTTPS проксі

Для проксі, що вимагають автентифікації, включіть властивості username та password в об'єкт проксі:

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

(async () => {
  const browser = await chromium.launch({
    proxy: {
      server: 'http://user.proxy.server:8080',
      username: 'proxy_user',
      password: 'proxy_password'
    }
  });
  const page = await browser.newPage();
  await page.goto('https://httpbin.org/ip');
  console.log(await page.content());
  await browser.close();
})();

Налаштування SOCKS проксі

Вкажіть протокол SOCKS у рядку server:

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

(async () => {
  const browser = await chromium.launch({
    proxy: {
      server: 'socks5://your.socks.proxy:9050'
    }
  });
  const page = await browser.newPage();
  await page.goto('https://httpbin.org/ip');
  console.log(await page.content());
  await browser.close();
})();

SOCKS-проксі також підтримують автентифікацію шляхом додавання username та password до об'єкта.

Обхід проксі для певних доменів

Властивість bypass в об'єкті проксі дозволяє вказати розділений комами список хостів або доменів, які не повинні використовувати проксі. Підтримуються символи узагальнення (*).

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

(async () => {
  const browser = await chromium.launch({
    proxy: {
      server: 'http://your.proxy.server:8080',
      bypass: '*.local, .example.com, 192.168.1.1'
    }
  });
  const page = await browser.newPage();
  await page.goto('http://example.com'); // Буде обходити проксі, якщо example.com є у списку bypass
  await page.goto('https://google.com'); // Буде використовувати проксі
  await browser.close();
})();

Порівняння конфігурації проксі Playwright

Функція/Мова Python (dict) Node.js (object) Опис
Сервер {"server": "http://host:port"} { server: "http://host:port" } Обов'язково. Адреса та порт проксі, з необов'язковою схемою.
Ім'я користувача {"username": "user"} { username: "user" } Необов'язково. Для автентифікованих проксі.
Пароль {"password": "pass"} { password: "pass" } Необов'язково. Для автентифікованих проксі.
Обхід {"bypass": "*.local,domain.com"} { bypass: "*.local,domain.com" } Необов'язково. Розділений комами список хостів/доменів для обходу проксі.
Рівень запуску browser_type.launch(proxy={...}) browserType.launch({ proxy: {...} }) Застосовує проксі до всього екземпляра браузера.
Рівень контексту browser.new_context(proxy={...}) browser.newContext({ proxy: {...} }) Застосовує проксі до певного контексту браузера.

Додаткові міркування щодо проксі

Проксіювання конкретних запитів за допомогою page.route()

Для дуже детального контролю page.route() може перехоплювати мережеві запити та перенаправляти їх на різні проксі на основі конкретних критеріїв. Цей метод забезпечує більшу гнучкість, ніж глобальні або контекстні налаштування проксі, але вимагає ручної обробки запитів.

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()

    def handle_route(route):
        if "example.com" in route.request.url:
            route.fulfill(status=200, body="Blocked by route handler.")
        else:
            # Перенаправити інші запити через конкретний проксі
            # Це вимагає ручного налаштування HTTP-клієнта або може бути складним для прямого проксіювання
            # Для простих випадків використання краще глобальний/контекстний проксі.
            # Для складного маршрутизації проксі розгляньте використання зовнішнього менеджера проксі.
            route.continue_({"url": route.request.url}) # Приклад: продовжити без модифікації

    page.route("**/*", handle_route)
    page.goto("https://www.google.com") # Буде маршрутизовано
    page.goto("https://www.example.com") # Буде виконано
    browser.close()

page.route() зазвичай використовується для імітації, модифікації запитів або блокування, а не для динамічного перенаправлення на різні проксі, якщо це не інтегровано з власною логікою обробки проксі.

Перевірка функціональності проксі

Після налаштування проксі перевірте його роботу, перейшовши до служби перевірки IP-адреси, наприклад https://httpbin.org/ip або https://whatismyipaddress.com/. Відображена IP-адреса повинна відповідати проксі-серверу, а не локальній машині.

Обробка помилок та тайм-аутів проксі

Проксі можуть створювати додаткові точки відмови. Впроваджуйте надійну обробку помилок для мережевих запитів при використанні проксі. Це включає:

  • Повторні спроби: Повторна спроба запиту, якщо з'єднання з проксі не вдається або закінчується тайм-аут.
  • Тайм-аути: Налаштування відповідних мережевих тайм-аутів для операцій Playwright.
  • Ротація проксі: Для великомасштабних операцій обертайте пул проксі, щоб зменшити обмеження швидкості, блокування IP або збої одного проксі. Це зазвичай передбачає керування списком проксі та динамічне оновлення конфігурації proxy для нових контекстів або повторних спроб.

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

При використанні автентифікованих проксі уникайте жорсткого кодування облікових даних безпосередньо у вихідному коді. Замість цього використовуйте змінні середовища або безпечну систему керування конфігурацією для отримання username та password. Це запобігає розкриттю облікових даних та спрощує керування ними в різних середовищах.

Оновлено: 03.03.2026
Назад до категорії

Читайте також

Гайды 1 хв

Налаштування проксі в Cypress для E2E тестування

Налаштування проксі в Cypress: змінні HTTP_PROXY, cy-proxy-middleware та тестування геозалежного контенту.

Гайды 1 хв

Як автоматизувати купівлю проксі через API

Автоматизація купівлі та управління проксі через API провайдерів: інтеграція, моніторинг використання та автопоновлення.

Гайды 1 хв

Створення інформаційної панелі моніторингу проксі в Grafana

Покрокове створення інформаційної панелі для моніторингу проксі в Grafana: метрики,

Гайды 1 хв

Як тестувати проксі перед покупкою

Чек-лист тестування проксі перед покупкою: швидкість, стабільність, анонімність, гео та сумісність з ціллю

Гайды 1 хв

Як налаштувати липкі сесії через проксі

Липкі сесії: підтримка однієї IP-адреси протягом усієї сесії, налаштовуються через провайдера та самостійно.

Гайды 1 хв

Використання проксі з Camoufox

Camoufox — це модифікований Firefox для обходу антиботів. Налаштування проксі, відбиток та режим невидимості.

Спробуйте наші проксі

20,000+ проксі в 100+ країнах світу

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.