Playwright прокси с авторизацией: на браузер или на context
Куда писать логин и пароль, когда хватает одного прокси на браузер и как дать каждому context свой IP.
На браузер или на context: что выбрать
Прокси в launch() действует на весь браузер: все его context и страницы выходят с одного IP. Прокси в new_context() действует только на этот context, поэтому один процесс браузера может вести несколько изолированных сессий, каждую со своим IP.
На браузер ставьте прокси для одной задачи или одного прогона тестов из одной страны. На context ставьте для параллельных потоков, схемы «один аккаунт — один context» или перебора списка IP. Cookie и хранилище и так раздельные у каждого context, прокси нужно задать поверх.
Не место для логина: логин и пароль берите из объекта proxy Playwright
Источник: документация Playwright, страницы Network и Browser.new_context, прочитано 13 ноября 2026. Строка про флаг — запись в командной строке Chromium; если нужен логин, используйте объект proxy.
# pip install playwright then playwright install chromium
from playwright.sync_api import sync_playwright
proxy = {
"server": "http://HOST:PORT", # HTTP endpoint from My assets
"username": "LOGIN",
"password": "PASSWORD",
}
with sync_playwright() as p:
browser = p.chromium.launch(proxy=proxy) # every context in this browser uses it
page = browser.new_page()
page.goto("https://ipinfo.io/json")
print(page.inner_text("body")) # shows the proxy's exit IP
browser.close()
Только пример: замените HOST, PORT, LOGIN и PASSWORD значениями из раздела «Мои активы».
Свой прокси на каждый context, параллельно (Python)
# pip install playwright then playwright install chromium
import asyncio
from playwright.async_api import async_playwright
PROXIES = [ # one entry per IP, copied from My assets
{"server": "http://HOST:PORT", "username": "LOGIN_1", "password": "PASSWORD_1"},
{"server": "http://HOST:PORT", "username": "LOGIN_2", "password": "PASSWORD_2"},
]
async def check(browser, proxy):
context = await browser.new_context(proxy=proxy) # this context only
try:
page = await context.new_page()
await page.goto("https://ipinfo.io/json")
print(proxy["username"], await page.inner_text("body"))
finally:
await context.close()
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch() # no proxy on the browser itself
await asyncio.gather(*(check(browser, x) for x in PROXIES))
await browser.close()
asyncio.run(main())
Только пример: замените HOST, PORT, LOGIN и PASSWORD значениями из раздела «Мои активы».
То же на Node.js
// npm i playwright then npx playwright install chromium
import { chromium } from 'playwright'
const proxies = [ // one entry per IP, copied from My assets
{ server: 'http://HOST:PORT', username: 'LOGIN_1', password: 'PASSWORD_1' },
{ server: 'http://HOST:PORT', username: 'LOGIN_2', password: 'PASSWORD_2' },
]
const browser = await chromium.launch() // no proxy on the browser itself
await Promise.all(proxies.map(async (proxy) => {
const context = await browser.newContext({ proxy }) // this context only
try {
const page = await context.newPage()
await page.goto('https://ipinfo.io/json')
console.log(proxy.username, await page.textContent('body'))
} finally {
await context.close()
}
}))
await browser.close()
Только пример: замените HOST, PORT, LOGIN и PASSWORD значениями из раздела «Мои активы».
HTTP или SOCKS5 в поле server
В поле server можно написать и http://, и socks5://, но поля логина и пароля в документации описаны для HTTP-прокси. SOCKS5-клиент самого Chromium отправляет только метод «без аутентификации», поэтому SOCKS5-прокси с логином в Chromium не заработает, даже если поля заполнены.
Для Chromium берите HTTP-адрес прокси. В Proxy302 это порт 2222 на proxy.proxy302.com. Какой протокол принимает актив, зависит от продукта, поэтому смотрите протокол, указанный у актива в «Мои активы». Если всё же нужен SOCKS5 с логином в браузере, откройте статью по ссылке ниже.
Сначала запустите скрипт с одним прокси без прокси и запишите свой IP из ipinfo.io/json.
Шаг 2
Добавьте объект proxy и запустите снова. Поле ip должно стать выходным IP прокси, а страна — той, которую вы выбрали.
Ожидаемый результат IP и страна в JSON отличаются от ваших.
Шаг 3
При схеме «на context» выведите IP для каждого context. Два context с двумя разными статическими IP должны показать два разных адреса.
Шаг 4
Если вывелся ваш собственный IP, объект proxy передан не в тот вызов, которым создана страница. Проверьте, из какого браузера или context она открыта.
Сначала проверьте логин вне браузера
# HTTP endpoint (the one Chromium can log in to)
curl -x http://LOGIN:PASSWORD@HOST:PORT https://ipinfo.io/json
# SOCKS5 endpoint (works in curl, not in Chromium with a login)
curl -x socks5h://LOGIN:PASSWORD@HOST:PORT https://ipinfo.io/json
Только пример: замените HOST, PORT, LOGIN и PASSWORD значениями из раздела «Мои активы».
Если Playwright и прокси не договорились
Страница ошибки или 407 Proxy Authentication Required
Проверьте В логине или пароле опечатка, либо у актива закончился срок или трафик.
Решение Заново скопируйте LOGIN и PASSWORD из «Мои активы» и проверьте их командами curl выше. Сначала исправьте это, потом трогайте Playwright.
Когда остановиться Если curl тоже отвечает 407, не меняйте код: дело в данных доступа или в самом активе. Напишите в Support, указав номер заказа.
С http:// работает, а с socks5:// и логином в Chromium нет
Проверьте У SOCKS5 в Chromium нет способа передать пароль.
Решение Замените server на HTTP-адрес того же актива.
Соединение сброшено или таймаут на HTTP-порту
Проверьте Актив выдан под другой протокол, либо ошибка в HOST или PORT.
Решение Сверьте протокол и порт актива: на proxy.proxy302.com HTTP — 2222, SOCKS5 — 3333. Сгенерируйте или оформите новый актив с нужным протоколом.
У всех context один и тот же IP
Проверьте Один и тот же прокси задан и в launch(), и в каждом new_context(), либо записи ведут на один IP.
Решение Передавайте в каждый new_context() свои данные доступа. У динамического резидентного прокси без сессии каждое новое соединение может получить новый IP; если context должен держать один адрес, берите статический IP.
Страница открывается, но сайт видит не ту страну
Проверьте Выходной IP не из той страны, которую вы ждали.
Решение Проверьте IP на ipinfo.io и при генерации или оформлении актива выберите страну выхода заново.
Как это сделать с Proxy302
Если каждому context нужен постоянный адрес, подойдёт статический ISP: в течение срока аренды IP не меняется, 1 день стоит $0,50, 30 дней — $7,99 (около $0,27 в сутки), в одном заказе можно оформить до 100 IP. Если нужно много разных IP из одного пула, есть динамический резидентный прокси: бюджетная линия стоит $1,50 за ГБ, а без сессии каждое новое соединение получает новый IP.
В обоих случаях при генерации или оформлении выберите протокол HTTP, чтобы те же логин и пароль сразу подошли в объект proxy Playwright. Полная настройка и остальные параметры — на странице Playwright.
Откройте страницу статического ISP (или динамического резидентного), выберите страну и протокол HTTP, проверьте стоимость и оплатите с кошелька.
Шаг 2
Откройте «Мои активы» и скопируйте хост, порт, логин и пароль. Для нескольких context оформите или сгенерируйте несколько активов.
Шаг 3
Подставьте значения в объект proxy: server — http://ХОСТ:ПОРТ, затем username и password.
Шаг 4
Как в примерах выше, откройте https://ipinfo.io/json из Playwright и проверьте выход.
Частые вопросы о прокси в Playwright
Как задать прокси с логином и паролем в Playwright?
Передайте proxy={"server": "http://HOST:PORT", "username": "LOGIN", "password": "PASSWORD"} в chromium.launch() — прокси будет у всего браузера, либо в browser.new_context() — только у одного context.
Может ли у каждого browser context быть свой прокси?
Да. В документации Playwright сказано, что прокси можно задать для каждого context отдельно, поэтому в одном браузере могут работать context с разными IP.
Поддерживает ли Playwright SOCKS5 с паролем?
В поле server можно указать адрес socks5://, но логин и пароль в документации описаны для HTTP-прокси. В Chromium SOCKS5 с логином не работает, используйте HTTP-адрес.
Нужен ли ещё аргумент --proxy-server?
Нет. Параметр proxy в launch() и new_context() — штатное место для адреса и логина.
Как узнать, какой IP использует Playwright?
Откройте https://ipinfo.io/json на странице того же context и посмотрите поле ip.
Selenium прокси с авторизацией в Chrome: HTTP-прокси в ChromeOptions и встроенный в Selenium обработчик BiDi, без расширений. Статические IP дата-центра для тестов.
Как направить агента Browser Use через HTTP-прокси: актуальный ProxySettings, свой прокси для каждого агента, настройки Playwright и Playwright MCP, часовой пояс и язык, типичные ошибки.
Read on 13 November 2026: proxy can be set globally for the whole browser or for each browser context; username and password are optional fields for an HTTP(S) proxy; examples use launch(proxy={server, username, password}) and new_context(proxy={server}).
Read on 13 November 2026: server accepts HTTP and SOCKS proxies, for example http://myproxy.com:3128 or socks5://myproxy.com:3128; bypass is a comma-separated list of domains; username and password are used "if HTTP proxy requires authentication".
Read on 13 November 2026: the SOCKS5 greeting Chromium sends is 05 01 00 (one method, "no authentication"), and a reply that selects any other method is treated as an unexpected-auth error.
Факты о продуктах и прайс-лист Proxy302
Наблюдение за продуктом · Проверено:
Файл фактов о продуктах, сверен 13 ноября 2026 с консолью, бэкендом и прайс-листом: цены аренды статического ISP за IP (US$, 1 PTC = US$1), цена бюджетной линии динамического резидентного прокси за ГБ, порт HTTP 2222 и порт SOCKS5 3333 на proxy.proxy302.com, какой протокол работает в каком продукте, нет бесплатного теста.
Готовы попробовать?
Создайте аккаунт, пополните баланс и выберите ротируемый резидентный, статический ISP или дата-центр IP — настроить его в браузере можно за несколько минут.