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

Використання проксі у Python з Playwright

Налаштування проксі у Playwright для Python: HTTP та SOCKS5 проксі, автентифікація, контексти браузера та обхід антиботів.

Використання проксі у Python з Playwright

Використання проксі в Python з Playwright

Playwright та проксі

Playwright — це фреймворк для автоматизації браузера від Microsoft, що підтримує Chromium, Firefox та WebKit. Версія Playwright для Python має вбудовану підтримку проксі на рівні браузера та для окремих контекстів.

Встановлення

pip install playwright
playwright install  # downloads browsers

Базова конфігурація проксі

HTTP-проксі

from playwright.sync_api import sync_playwright

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

З автентифікацією

from playwright.sync_api import sync_playwright

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

SOCKS5-проксі

browser = p.chromium.launch(
    proxy={"server": "socks5://proxy_ip:port"}
)

Асинхронний режим

import asyncio
from playwright.async_api import async_playwright

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch(
            proxy={
                "server": "http://proxy_ip:port",
                "username": "user",
                "password": "pass"
            }
        )
        page = await browser.new_page()
        await page.goto("https://httpbin.org/ip")
        content = await page.content()
        print(content)
        await browser.close()

asyncio.run(main())

Проксі на рівні контексту

Playwright дозволяє встановлювати різні проксі для різних контекстів (профілів) в одному браузері:

from playwright.sync_api import sync_playwright

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

    # Контекст 1 — проксі США
    context1 = browser.new_context(
        proxy={
            "server": "http://us_proxy:port",
            "username": "user",
            "password": "pass"
        }
    )

    # Контекст 2 — проксі Німеччини
    context2 = browser.new_context(
        proxy={
            "server": "http://de_proxy:port",
            "username": "user",
            "password": "pass"
        }
    )

    page1 = context1.new_page()
    page2 = context2.new_page()

    page1.goto("https://httpbin.org/ip")
    page2.goto("https://httpbin.org/ip")

    print("US:", page1.content())
    print("DE:", page2.content())

    browser.close()

Це потужна функція: один браузер, кілька контекстів з різними проксі та відбитками.

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

browser = p.chromium.launch(
    proxy={
        "server": "http://proxy_ip:port",
        "bypass": "localhost,*.local,example.com"
    }
)

Домени зі списку обходу доступні безпосередньо, минаючи проксі.

Headless та Headed режими

# Headless (без графічного інтерфейсу) — для скрапінгу
browser = p.chromium.launch(headless=True, proxy={"server": "http://proxy:port"})

# Headed (з графічним інтерфейсом) — для налагодження
browser = p.chromium.launch(headless=False, proxy={"server": "http://proxy:port"})

Робота з різними браузерами

Playwright підтримує три рушії:

# Chromium
browser = p.chromium.launch(proxy=proxy_config)

# Firefox
browser = p.firefox.launch(proxy=proxy_config)

# WebKit (Safari)
browser = p.webkit.launch(proxy=proxy_config)

Усі три підтримують проксі ідентично.

Режим невидимості та обхід анти-ботів

Playwright виявляється анти-бот системами. Щоб обійти це:

playwright-stealth

pip install playwright-stealth
from playwright.sync_api import sync_playwright
from playwright_stealth import stealth_sync

with sync_playwright() as p:
    browser = p.chromium.launch(proxy={"server": "http://proxy:port"})
    page = browser.new_page()
    stealth_sync(page)  # застосовує патчі невидимості
    page.goto("https://target-site.com")

Рекомендації щодо обходу

  1. Використовуйте резидентні або мобільні проксі
  2. Встановіть реалістичний User-Agent
  3. Налаштуйте розмір області перегляду (viewport)
  4. Додайте затримки між діями
  5. Імітуйте рухи миші та прокручування

Знімки екрана та PDF через проксі

page.goto("https://example.com")
page.screenshot(path="screenshot.png", full_page=True)
page.pdf(path="page.pdf")

Перехоплення запитів

def handle_route(route):
    # Зміна запитів
    headers = route.request.headers
    headers["X-Custom-Header"] = "value"
    route.continue_(headers=headers)

page.route("**/*", handle_route)
page.goto("https://example.com")

Практичний приклад: Скрапінг з ротацією

import asyncio
from playwright.async_api import async_playwright
import random

PROXIES = [
    {"server": "http://proxy1:port", "username": "u", "password": "p"},
    {"server": "http://proxy2:port", "username": "u", "password": "p"},
    {"server": "http://proxy3:port", "username": "u", "password": "p"},
]

async def scrape_page(playwright, url):
    proxy = random.choice(PROXIES)
    browser = await playwright.chromium.launch(proxy=proxy)
    page = await browser.new_page()
    try:
        await page.goto(url, timeout=30000)
        title = await page.title()
        return title
    except Exception as e:
        return f"Error: {e}"
    finally:
        await browser.close()

async def main():
    urls = [f"https://example.com/page/{i}" for i in range(10)]
    async with async_playwright() as p:
        tasks = [scrape_page(p, url) for url in urls]
        results = await asyncio.gather(*tasks)
        for url, result in zip(urls, results):
            print(f"{url}: {result}")

asyncio.run(main())

Висновок

Playwright — це потужний інструмент для роботи з проксі в Python. Підтримка проксі на рівні контексту дозволяє запускати кілька сесій з різними IP в одному браузері. У поєднанні з патчами невидимості та резидентними проксі, Playwright є ефективним для скрапінгу захищених веб-сайтів.

Оновлено: 06.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.