Как настроить и использовать прокси для Playwright - Полное руководство
Основные выводы
Playwright поддерживает HTTP, HTTPS и SOCKS5 прокси как на уровне браузера, так и на уровне контекста.
Прокси на уровне браузера применяется ко всей сессии; прокси на уровне контекста позволяет запускать несколько IP параллельно в одном экземпляре браузера.
Playwright не вращает прокси автоматически — вы управляете вращением, создавая новые контексты браузера.
Резиденционные прокси обеспечивают наивысшие уровни успеха для сканирования и автоматизации браузера в больших масштабах.
Резиденционные прокси Nstproxy напрямую интегрируются с Playwright на Python, Node.js, Java и .NET менее чем за 10 строк кода.
Playwright является одним из самых широко используемых фреймворков для автоматизации браузеров. Он обрабатывает страницы, отрисованные с помощью JavaScript, поддерживает Chromium, Firefox и WebKit, и надежно работает в безголовом режиме в CI окружениях. Но на большом масштабе — или когда нацеливаетесь на сайты с защитой от ботов — простой экземпляр Playwright быстро блокируется.
Решение простое: направьте трафик через прокси. Этот гид охватывает все практические конфигурационные схемы для прокси Playwright, от самой простой настройки с одним IP до вращения на уровне контекста. Примеры кода приведены как на Python, так и на Node.js.
Как работает конфигурация прокси Playwright
Playwright поддерживает настройки прокси на двух уровнях:
1. На уровне браузера: Устанавливается один раз при launch(). Каждая страница и контекст в этом экземпляре браузера используют один и тот же IP прокси. Это правильный выбор, когда вы хотите один IP для всей сессии.
2. На уровне контекста: Устанавливается в newContext(). Разные контексты могут использовать разные прокси, при этом деля один и тот же процесс браузера. Это схема для выполнения параллельных задач сканирования с изоляцией IP.
Попробуйте Nstproxy - Начните бесплатный тест сегодня
Официальная документация Playwright подтверждает, что поддерживаются как HTTP(S), так и SOCKSv5 прокси, с необязательными полями username и password для аутентифицированных соединений, и полем bypass для исключения конкретных хостов.
Объект конфигурации прокси выглядит следующим образом на всех языках:
Метод 1: Базовый прокси на уровне браузера (Python)
Самая простая настройка. Все страницы в этом экземпляре браузера используют один и тот же прокси.
from playwright.sync_api import sync_playwright
with sync_playwright()as p: browser = p.chromium.launch( proxy={"server":"http://gate.nstproxy.io:24125","username":"YOUR_USERNAME","password":"YOUR_PASSWORD"}) page = browser.new_page() page.goto("https://httpbin.org/ip")print(page.content()) browser.close()
Проверьте, что прокси работает, проверяя IP, возвращаемый с https://httpbin.org/ip. Он должен соответствовать местоположению прокси, а не вашему реальному IP.
Метод 2: Базовый прокси на уровне браузера (Node.js)
Метод 3: Прокси на уровне контекста для параллельной изоляции IP
Это схема, которую следует использовать при выполнении нескольких одновременных задач, каждая из которых нуждается в своем собственном IP. Один процесс браузера поддерживает несколько контекстов, каждый из которых настроен с другим прокси. Это позволяет избежать значительных затрат производительности от запуска нескольких отдельных экземпляров браузера.
import asyncio
from playwright.async_api import async_playwright
PROXIES =[{"server":"http://gate.nstproxy.io:24125","username":"user1","password":"pass1"},{"server":"http://gate.nstproxy.io:24126","username":"user2","password":"pass2"},{"server":"http://gate.nstproxy.io:24127","username":"user3","password":"pass3"},]asyncdefscrape(browser, proxy, url):# Запустить изолированный контекст с его собственными настройками прокси context =await browser.new_context(proxy=proxy)try: page =await context.new_page()await page.goto(url)returnawait page.content()finally:await context.close()asyncdefmain():asyncwith async_playwright()as p: browser =await p.chromium.launch()try: tasks =[ scrape(browser, proxy,"https://httpbin.org/ip")for proxy in PROXIES
]
results =await asyncio.gather(*tasks)for r in results:print(r)finally:await browser.close()asyncio.run(main())
Каждый контекст полностью изолирован — отдельные куки, хранилище и IP. Это стандартный подход для масштабного обхода, когда вам нужны параллельные сессии без перекрестного загрязнения.
Метод 4: Ротация прокси-серверов между запросами (Сессионная ротация или TTL=0)
Playwright не осуществляет ротацию IP автоматически. Чтобы ротация IP работала, вы создаете новый контекст (что устанавливает новое соединение) для каждой задачи. С Nstproxy вы можете добиться автоматической ротации для каждого контекста, генерируя уникальный session ID или устанавливая ttl=0 (используя параметр r_0m) в имени пользователя.
Вот как реализовать ротацию с использованием динамических идентификаторов сессии на Python:
import uuid
from playwright.sync_api import sync_playwright
urls =["https://example.com/page/1","https://example.com/page/2","https://example.com/page/3",]with sync_playwright()as p: browser = p.chromium.launch()try:for url in urls:# Генерируем случайный идентификатор сессии, чтобы заставить Nstproxy ротировать IP для этого контекста session_id = uuid.uuid4().hex[:8] proxy ={"server":"http://gate.nstproxy.io:24125",# Добавьте уникальный идентификатор сессии (-s_...) к имени пользователя"username":f"6EEA899B5A77B936-residential-country_ANY-r_10m-s_{session_id}","password":"YOUR_NSTPROXY_PASSWORD"} context = browser.new_context(proxy=proxy)try: page = context.new_page() page.goto(url)print(f"URL: {url} | Title: {page.title()}")finally: context.close()finally: browser.close()
Ротация с TTL = 0 (Без управления сессиями)
Если вы не хотите управлять идентификаторами сессии в своем коде, вы можете установить параметр TTL на r_0m (что представляет собой ttl=0). Это сигнализирует Nstproxy о том, чтобы автоматически назначить новый жилой IP для каждого нового соединения/контекста, установленного Playwright.
# Конфигурация прокси с TTL=0 (r_0m) для автоматической ротации при каждом новом контекстеproxy ={"server":"http://gate.nstproxy.io:24125","username":"6EEA899B5A77B936-residential-country_ANY-r_0m","password":"YOUR_NSTPROXY_PASSWORD"}
Какой прокси использовать для каждой задачи Playwright
Задача
Рекомендуемый прокси
Ротация
Примечания
Общее веб-сканирование
Жилой
По контексту
Наилучший процент успеха на антикросс-сайтах
Проверки локальных SERP
Жилой (нацеленный на город)
По запросу
Требует геонацеливания на уровне города
Автоматизация на основе аккаунтов
Статический ISP
Привязка сессии
Последовательный IP для каждого аккаунта
Сбор ключевых слов в больших объемах
Центр обработки данных
По запросу
Быстрее, ниже стоимость для низкорисковых целей
Контент, специфичный для мобильных устройств
Мобильный прокси
По запросу
IP операторов для мобильных рендеринг-путей
CI/тестовые среды
Центр обработки данных
Статический
Скорость и предсказуемость важнее
Некоторые отчеты отмечают, что бесплатные прокси имеют процент отказов 70–90% и подходят только для локального тестирования, но никогда для продакшн-сканирования. Различие между настройкой на уровне браузера и на уровне контекста также разделяет базовые настройки с одним IP от промышленного многопоточного параллелизма.
Подключение жилых прокси Nstproxy к Playwright
Nstproxy поддерживает протоколы HTTP(S) и SOCKS5 напрямую, и их конечная точка жилого прокси по умолчанию назначает новый IP для каждой новой сессии — что четко соответствует модели ротации контекста на запрос.
Интеграция использует стандартную конечную точку Nstproxy с учетными данными вашей учетной записи:
Для целевой настройки на уровне города добавьте параметры местоположения к имени пользователя в соответствии с форматом Nstproxy (например, username-country-US-city-NewYork). Это дает сессиям Playwright геонацеленные IP без дополнительной инфраструктуры.
Сеть жилых прокси Nstproxy охватывает 195+ стран с целевой настройкой города и ASN, что важно для таких задач, как проверка локальных SERP и доступ к геоссредоточенному контенту непосредственно внутри Playwright.
Для команд, использующих прокси с ротацией в масштабе, та же конечная точка работает без статического списка IP — ротация происходит на сервере при каждом новом контексте.
Сервер прокси недоступен. Проверьте хост, порт и наличие блокировок порта вашим сетевым фильтром/брандмауэром. Протестируйте с помощью curl -x http://proxy:port https://httpbin.org/ip перед запуском Playwright.
407 Требуется аутентификация прокси
Учётные данные не переданы или неверны. Убедитесь, что username и password установлены в объекте конфигурации прокси. Не встраивайте учётные данные в строку URL сервера — передавайте их в отдельных полях.
Тайм-аут страницы без явной ошибки
Прокси подключился, но целевой сайт не ответил вовремя. Увеличьте тайм-аут навигации:
page.goto("https://example.com", timeout=60000)
Также проверьте, не блокирует ли целевой сайт геолокацию прокси — некоторые сайты блокируют трафик из определённых стран на уровне CDN.
Прокси работает с headless:false, но не работает с headless
Некоторые системы противодействия ботам распознают headless Chromium независимо от прокси. Добавьте стандартные аргументы запуска браузера (--no-sandbox, --disable-blink-features=AutomationControlled) и проверьте, что ваша строка user-agent не является строкой по умолчанию для headless. Запуск headless: false временно помогает подтвердить, является ли сам прокси точкой сбоя.
Несогласованные результаты в разных контекстах
Если вы используете один и тот же прокси между контекстами, IP-адрес может быть общим и уже помеченным. Используйте распределение прокси по контекстам с разными учётными данными или ротацию конечной точки.
3 реальных случаев использования Playwright + Proxy
1. Мониторинг цен в электронной коммерции
Команда аналитики розничной торговли ежедневно собирает данные о ценах с 15 сайтов конкурентов. Каждый сайт использует другого поставщика противодействия ботам. Запуск всех запросов с IP-адреса дата-центра определяется в рамках первого цикла обхода.
С прокси Nstproxy на основе жилых адресов и ротацией на уровне контекста в Playwright, каждый загрузка страницы выглядит так, как будто её делает другой органический пользователь. Команда запускает 500 параллельных контекстов через asyncio, собирая 50,000 страниц в час с уровнем блокировок менее 1%.
2. Проверка локального SEO SERP
SEO-агентство проверяет ранжирование в Google для 300 ключевых слов клиентов в 20 городах США. Каждая проверка должна выглядеть так, как будто она проходит из целевого города, иначе результат становится географически нерелевантным.
Используя Playwright с Nstproxy на основе жилых IP, ориентированных на город, каждому контексту назначается локальный IP, соответствующий рынку клиента. Один и тот же код работает для всех 20 городов, просто меняя параметр местоположения имени пользователя — никакой отдельной инфраструктуры для каждого города.
3. Проверка рекламы на разных рынках
Маркетинговая команда проверяет, корректно ли отображаются рекламные кампании в Германии, Японии и Бразилии. Без прокси, ориентированных на геолокацию, каждая проверка возвращает одно и то же локально поставляемое рекламное содержание с IP-адреса их офиса.
Контексты Playwright с жилыми прокси, ориентированными на страну, возвращают фактическое рекламное креатив, который видит каждый рынок, ловя ошибки локализации до того, как кампании запустят.
Сравнение: Подходы Playwright к прокси
Подход
Случай использования
Управление ротацией
Сложность
Статический прокси на уровне браузера
Односессионный сбор данных, тестирование
Нет — один IP на запуск
Низкая
Статический прокси на уровне контекста
Параллельные изолированные сессии
Вручную — один IP на контекст
Средняя
Статический прокси с пулом прокси
Пользовательская логика ротации
Полная — выбирайте любой IP для задачи
Средняя
Ротационная жилая конечная точка
Масштабируемый сбор данных
Автоматическая серверная
Низкая (самая простая при масштабировании)
Для большинства производственных случаев использования ротационная жилая конечная точка проще поддерживать: одна конечная точка, учётные данные, которые включают опциональную геолокацию, и автоматическое назначение IP для каждого контекста.
Заключение
Конфигурация прокси в Playwright не является сложной — API понятный, а паттерны на уровне браузера и контекста хорошо документированы. Более сложной частью является выбор правильного типа прокси, правильное управление ротацией и отладка неисправностей, возникающих из-за систем противодействия ботам, а не самой конфигурации прокси.
Для серьезного сбора данных или автоматизации в большом масштабе жилые прокси с автоматической ротацией и таргетингом на уровне города покрывают большинство производственных сценариев. Nstproxy интегрируется непосредственно с конфигурацией прокси Playwright в несколько строк, поддерживает как HTTP(S), так и SOCKS5 и обрабатывает геотаргетинг через параметры учётных данных без дополнительной инфраструктуры.
В: Могу ли я установить другой прокси для каждой страницы в Playwright?
Плейрайт устанавливает прокси на уровне браузера или контекста, а не на уровне отдельной страницы. Чтобы использовать другой прокси для каждой страницы, создайте новый контекст для каждой страницы.
**В: Поддерживает ли Плейрайт прокси SOCKS5?**
Да. Используйте `socks5://` в качестве префикса протокола в поле `server`: `"server": "socks5://gate.nstproxy.io:24125"`. Поведение SOCKS5 может различаться в зависимости от движка браузера, поэтому протестируйте с помощью минимального скрипта перед масштабированием.
**В: Могу ли я настроить несколько прокси в одном контексте Плейрайта?**
Нет. Один контекст браузера использует одну конфигурацию прокси. Если вам нужно несколько прокси одновременно, используйте несколько контекстов или несколько процессов браузера.
**В: Как мне проверить, что мой прокси работает в Плейрайте?**
Перейдите по адресу `https://httpbin.org/ip` или `https://api.ipify.org?format=json` и прочитайте ответ. IP-адрес, который вы получите, должен соответствовать местоположению прокси, а не вашему реальному IP.
**В: Будут ли работать прокси Плейрайта в безголовом режиме?**
Да, поддержка прокси идентична в безголовом и обычном режимах. Если вы видите сбои только в безголовом, проблема обычно связана с обнаружением анти-ботов (а не с прокси) — попробуйте добавить `--disable-blink-features=AutomationControlled` в аргументы запуска.
**В: Сколько прокси мне нужно для крупномасштабного парсинга?**
Общее базовое значение — один вращающийся IP на 10–20 одновременных запросов. Для 500 одновременных контекстов Плейрайта пул из 50–100 жилых IP с автоматической ротацией позволяет держать любой отдельный IP значительно ниже порогов обнаружения. При использовании вращающегося конечного пункта (серверная ротация) это обрабатывается автоматически.
## Связанная литература
- [Какие жилые прокси мне использовать для мониторинга SEO и отслеживания позиций?](https://www.nstproxy.com/blog/residential-proxies-for-seo-monitoring-rank-tracking)
- [Что такое вращающиеся прокси и как они работают?](https://www.nstproxy.com/blog/what-are-rotating-proxies-nstproxy)
- [Искусственный интеллект и веб-парсинг: основные проблемы и решения с прокси](https://www.nstproxy.com/blog/mastering-ai-web-scraping-with-proxy)
- [Как использовать прокси с HTTPX в Python](https://www.nstproxy.com/blog/httpx-with-proxies)
Как использовать Proxifier для обхода ограничений с помощью прокси-сервера
Proxifier позволяет настольным приложениям направлять трафик через прокси-серверы, даже если эти приложения не поддерживают настройки прокси напрямую. Этот гид объясняет, как работает Proxifier, как добавить Nstproxy, как создать правила проксирования и как исправить распространенные проблемы с подключением. Он написан для законных случаев использования, таких как маршрутизация приложений, устранение неполадок с доступом, тестирование, исследование и контролируемые рабочие процессы с прокси.
Lena Zhou
Jul. 1st 2026
110M+ реальных IP с 99.9% успешных доступов
Средний отклик ~0.5с для задач высокой конкуренции
Всего от $0.1/GB
Мгновенный доступ к премиальным residential, datacenter, IPv6 и ISP пулам.