Как настроить прокси в Playwright

Playwright упрощает настройку прокси, но только если вы понимаете, куда именно его подключать. Если вы тестируете из одной страны или проверяете страницу с гео-ограничением, трафик браузера можно направить через прокси вместо локальной сети. Это меняет IP-адрес, который видит сайт. И вместе с ним меняется профиль рисков.

Прокси в Playwright находится между браузером и сайтом. Браузер отправляет запросы на прокси, а прокси пересылает их дальше. Сайт видит IP прокси, а не ваш. Это важно для проверки региональных ограничений, лимитов запросов и скриптов, которые должны вести себя по-разному в зависимости от локации. Если вам нужен более широкий контекст по связанным инструментам, страница гайды по VPN, прокси и приватности поможет разобраться в основах без лишней сложности.

1. Что делает прокси в Playwright

Playwright может направлять трафик браузера через прокси либо при запуске, либо на уровне browser context. Это значит, что переходы на страницы, XHR-запросы и большая часть трафика браузера могут выходить уже с адреса прокси, а не с машины, где выполняется тест. Для базовой геопроверки этого обычно достаточно. Для более сложной автоматизации это может стать разницей между чистым запуском и блокировкой.

Представьте прокси как ворота с адресом. Браузер по-прежнему ведёт себя как браузер, Playwright по-прежнему им управляет, но сайт смотрит именно на эти ворота. Поэтому команды используют прокси для проверки цен и контента по регионам, сценариев входа и страниц с требованиями по странам. Один и тот же сайт может показывать разные варианты доставки в Лондоне и Лиссабоне. Прокси позволяет проверить это без поездок.

Есть и второй сценарий, которому уделяют меньше внимания: ротация IP. Скрипт, который постоянно обращается к одному и тому же ресурсу с одного адреса, быстро упирается в ограничения. Прокси не гарантирует успех, но даёт возможность менять исходящий маршрут. Если нужен связанный вводный материал по поведению запросов, смотрите руководство как скрыть IP-адрес.

2. Какие варианты прокси можно использовать

Playwright поддерживает объект proxy с URL сервера и необязательными учётными данными. Основные поля простые: адрес прокси-сервера, имя пользователя и пароль. В некоторых конфигурациях используется и настройка прокси на уровне browser context — это удобно, когда прокси нужен только для одного изолированного контекста, а не для всей браузерной сессии. Такая деталь важна, если одному тесту прокси нужен, а другому — нет.

Формат адреса прокси обычно включает протокол, хост и порт. Типичное значение может выглядеть так: http://proxy.example.com:8000. Если прокси требует авторизацию, Playwright может передать имя пользователя и пароль в том же объекте. Протокол должен соответствовать типу прокси. SOCKS5-эндпоинт — это не то же самое, что HTTP-прокси, и неверный протокол приводит к легко избежным ошибкам. Если нужно сравнить эти форматы, статья SOCKS5 или HTTP-прокси для скрейпинга поможет не путаться в типах.

Playwright также позволяет более узко ограничивать действие прокси. Это полезно в тестовых наборах, где один браузерный контекст проверяет региональную витрину, а другой — публичную главную страницу. Один браузер, два контекста, прокси только там, где он нужен. Аккуратнее. Меньше неожиданностей.

Перед тем как писать код, полезно разобраться в терминологии портов, аутентификации и протоколов. Глоссарий VPN и прокси пригодится, если провайдер использует слова вроде endpoint, tunnel или upstream server так, что они кажутся очевидными, пока не доходишь до практики.

3. Шаг 1: установите и инициализируйте Playwright

Начните с проекта, в котором уже запускается базовый скрипт Playwright. В Node.js это обычно означает создание папки, инициализацию package.json и установку Playwright, поэтому прокси Playwright Node.js удобно внедрять уже после того, как базовый запуск начнёт стабильно работать. Один из типичных путей — сначала выполнить установку через npm, а затем создать небольшой тестовый файл, который запускает браузер и открывает страницу. Первый скрипт оставьте простым. Не добавляйте прокси сразу.

Минимальная стартовая схема выглядит так: установить Playwright, запустить Chromium, открыть одну страницу и закрыть браузер. Это даёт вам надёжную базовую точку отсчёта. Если браузер открывает страницу без прокси, значит, окружение работает, и вы не меняете ничего лишнего. Это экономит время позже, потому что неисправный прокси и неверная установка Playwright могут выглядеть подозрительно похоже.

Запустите скрипт один раз. Потом — ещё раз. Прокси, добавленный слишком рано, может скрыть простые проблемы проекта, особенно если страница не загружается и браузер не стартует корректно. Я видел, как команды часами искали баг в прокси, хотя настоящая проблема была в отсутствующей зависимости после первоначальной установки.

4. Шаг 2: добавьте конфигурацию прокси в запуск браузера

Именно здесь вопрос, как настроить прокси в Playwright, становится практическим, и особенно полезной становится Playwright proxy настройка для тех сценариев, где нужно быстро проверить другой IP. Объект proxy должен находиться в параметрах запуска браузера для той сессии, на которую нужно повлиять. В типичном JavaScript-сценарии это означает передачу поля proxy в launch() вместе с другими опциями браузера. Адрес сервера указывается там же. При необходимости туда же добавляются учётные данные.

Достаточно простой структуры, чтобы показать идею:

в параметры запуска можно добавить объект proxy с полями server, username и password. Поле server указывает на хост и порт прокси. Поля username и password используются только тогда, когда прокси требует авторизацию. Если прокси открытый и без логина, эти поля просто опускаются.

Размещайте объект proxy на том же уровне, что и остальные настройки запуска, а не внутри page.goto или какого-либо более позднего вызова навигации. Это важно, потому что Playwright определяет исходящий маршрут браузера в момент запуска браузера или контекста. Если поместить прокси не туда, ничего не изменится. Тихая ошибка всё равно остаётся ошибкой.

Вот схема простыми словами: создайте браузер с параметрами запуска, добавьте туда прокси, а затем откройте context и page как обычно. Для одноразовой автоматизации этого часто достаточно. Для больших тестовых наборов нужно решить, должен ли прокси применяться ко всему запуску браузера или только к одному контексту. Один параметр может повлиять на десятки тестов, так что действуйте осознанно.

5. Шаг 3: обработайте прокси с авторизацией

Прокси с авторизацией запрашивают имя пользователя и пароль. Playwright поддерживает это напрямую в объекте proxy, что удобно, но удобство не должно превращаться в привычку хардкодить секреты в тестовых файлах. Храните учётные данные в переменных окружения или в системе управления секретами. Простой текст в коммитнутом скрипте — это ошибка, которая потом годами остаётся в истории git.

Если провайдер прокси выдаёт имя пользователя, в котором есть зона, ID клиента или токен сессии, копируйте его без изменений. Один пропущенный символ может вызвать ошибку 407 proxy authentication, и её легко перепутать с проблемами входа на самом сайте. Один провайдер может ожидать user:pass. Другой — более длинный идентификатор со спецсимволами. Следуйте формату провайдера, а не догадке.

Некоторые команды ротируют учётные данные при каждом запуске. Это работает, но требует дисциплины. Код запуска браузера должен читать текущий секрет из окружения во время выполнения, а затем выбрасывать его после завершения процесса. Никогда не оставляйте пароль прокси в тестовом фикстуре, если не хотите потом заниматься уборкой. Причём скучной уборкой.

Если ваш провайдер поддерживает авторизованный SOCKS5-доступ, детали настройки могут отличаться от HTTP-аутентификации, поэтому сначала посмотрите руководство по авторизованному SOCKS5-прокси, а уже потом предполагаете, что поля работают одинаково. Обычно это не так.

6. Шаг 4: проверьте, что прокси работает

Не доверяйте одной лишь конфигурации. Проверьте прокси в живой браузерной сессии. Самый простой способ — открыть страницу проверки IP и сравнить указанный адрес с обычным IP вашей машины. Если сайт показывает адрес прокси, браузерный трафик идёт по ожидаемому маршруту. Если отображается ваш локальный адрес, прокси не активен.

Второй способ — посмотреть на поведение запросов. Проверьте, выдаёт ли сайт контент из ожидаемой страны, на нужном языке или через нужный CDN-узел. Страница с ценами только для США не должна вдруг стать страницей для Великобритании, если только не изменилась локация прокси. Такое несоответствие говорит больше, чем любая абстрактная зелёная галочка.

Можно также проверить логи браузера или сетевое поведение в контролируемом тесте. Одного запроса к известному endpoint достаточно. Например, если прокси блокирует порт или выбран неверный протокол, запрос может упасть ещё до загрузки контента страницы. Это полезная ошибка: она показывает, что браузер вообще пытается использовать прокси.

Для более точной проверки посмотрите руководство как проверить, скрыт ли ваш IP — там есть практические способы подтвердить смену адреса, а не угадывать по одному лишь поведению браузера.

7. Частые проблемы и способы их исправить

Проблемы с подключением — первое, что видят пользователи. Хост прокси может быть недоступен, порт может быть закрыт или протокол может быть выбран неверно. Если HTTP-прокси указать как SOCKS5, браузер может отказаться подключаться или зависнуть при старте. Сначала проверяйте схему, потому что эта ошибка встречается часто и исправляется легко.

Следом идут ошибки аутентификации. Ответ 407 обычно означает, что прокси ждал учётные данные и не получил их либо получил неверные. Ещё раз проверьте имя пользователя, пароль и любое специальное форматирование, которое требует провайдер. Некоторые прокси хотят длинную строку сессии; другие — обычный логин. Один пропущенный разделитель может остановить весь запуск.

Неподдерживаемые форматы прокси тоже создают путаницу. Playwright ожидает данные прокси в определённой структуре. Если провайдер даёт URL с дополнительными параметрами, сократите его до хоста, порта и нужных полей авторизации, прежде чем передавать в код. Странно оформленные endpoint-адреса часто встречаются в панелях провайдеров, и не каждую строку стоит вставлять в код напрямую.

Несовпадение протоколов — ещё одна проблема, которая проявляется не сразу. Один и тот же сайт может открываться через HTTP-прокси, но WebSocket-вызов при этом падает, или наоборот — в зависимости от цели и провайдера. Если рабочему процессу нужен более жёсткий контроль над поведением прокси, вернитесь к руководству по лучшим практикам аутентификации прокси и проверьте рекомендуемый формат провайдера, прежде чем снова менять скрипт.

Есть и ещё одна ситуация: прокси работает, но сайт всё равно блокирует. Обычно это значит, что проблема уже не в передаче трафика, а в fingerprinting, лимитах запросов или поведении теста. Прокси свою задачу выполнил. Не выполнил её шаблон запросов.

8. Лучшие практики для стабильной работы с прокси

Изолируйте настройки прокси для каждого запуска тестов. Если одному набору нужен прокси, а другому нет, не делитесь состоянием браузера случайно. Чистый browser context на каждый запуск упрощает поиск причин ошибок, особенно когда вы сравниваете результаты по регионам или ротируете endpoint-адреса между задачами. Один контекст — одна цель.

Избегайте хардкода секретов. Это правило стоит повторить один раз, а не десять. Загружайте имя пользователя и пароль прокси из переменных окружения, секретов CI или системы vault. Если коллега откроет код позже, он должен видеть структуру настройки прокси, а не реальный пароль. Так проще проводить ревью и меньше риск случайных утечек.

Сначала согласуйте протокол и правила сессий у провайдера прокси, а уже потом масштабируйтесь. Прокси, который работает нормально для одного запроса, может сломаться на пятом, если провайдер ограничивает число одновременных соединений или ожидает повторное использование сессии. Если ваш процесс зависит от ротации endpoint-ов, руководство по ротации прокси для веб-скрапинга объясняет компромиссы, которые наиболее важны в production-подобной автоматизации.

Перед запуском полного набора проверьте один браузер, одну страницу и одну известную страницу проверки IP. Звучит банально, потому что это и правда базовая проверка. Базовые проверки ловят дорогие ошибки. Если одна чистая прогона проходит успешно, можно расширять сценарий на большее число контекстов, страниц и тестовых данных, не гадая, виноват ли в сбое именно прокси.

Держите код запуска браузера рядом с решением о прокси. Если разработчику приходится искать по пяти файлам, где подключается прокси, конфигурация будет расползаться. Прямой блок запуска с понятным объектом proxy проще ревьюить, проще аудитить и проще менять, когда провайдер обновляет формат endpoint-а.