Перейти к содержимому
Гайды 2 мин чтения 2 просмотров

Использование прокси в Python с Playwright

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

Playwright и прокси

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

Установка

pip install playwright
playwright install  # скачивает браузеры

Базовая настройка прокси

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()

Это мощная функция: один браузер, несколько контекстов с разными прокси и fingerprints.

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

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

Домены из bypass-списка обращаются напрямую, минуя прокси.

Headless и Headed режимы

# Headless (без GUI) — для парсинга
browser = p.chromium.launch(headless=True, proxy={"server": "http://proxy:port"})

# Headed (с GUI) — для отладки
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)

Все три поддерживают прокси одинаково.

Stealth-режим и обход антиботов

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)  # применяет stealth-патчи
    page.goto("https://target-site.com")

Рекомендации для обхода

  1. Используйте residential или mobile прокси
  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 в одном браузере. В сочетании с stealth-патчами и residential прокси Playwright эффективен для парсинга защищённых сайтов.

Обновлено: 06.03.2026
Назад к категории

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

Гайды 1 мин

Настройка прокси в Cypress для E2E-тестирования

Настройка прокси в Cypress: HTTP_PROXY переменные, cy-proxy-middleware и тестирование гео-зависимого контента.

Гайды 1 мин

Как автоматизировать закупку прокси через API

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

Гайды 1 мин

Создание дашборда мониторинга прокси на Grafana

Пошаговое создание дашборда для мониторинга прокси в Grafana: метрики, Prometheus exporters и alerting.

Гайды 1 мин

Как тестировать прокси перед покупкой

Чеклист тестирования прокси перед покупкой: скорость, стабильность, анонимность, гео и совместимость с целевыми сайтами.

Гайды 1 мин

Как настроить sticky sessions через прокси

Sticky sessions (липкие сессии): сохранение одного IP на протяжении сессии, настройка через провайдера и самостоятельно.

Гайды 1 мин

Использование прокси с Camoufox

Camoufox — модифицированный Firefox для обхода антиботов. Настройка прокси, fingerprint и stealth-режим.

Попробуйте наши прокси

20,000+ прокси в 100+ странах мира