С чего начать
Проведите управляемый браузерный тест через прокси так, чтобы учётные данные, состояние браузера и сбои навигации оставались легко объяснимыми.
Выберите область теста
Playwright поддерживает прокси при запуске браузера или на отдельном контексте браузера. Для изолированного сценария используйте контекст. Имя пользователя и пароль прокси отделены от httpCredentials, которые служат для аутентификации на сайте.
В примерном проекте на Node.js установите playwright и его браузер Chromium командой npm install playwright, а затем npx playwright install chromium. Укажите в PROXY_URL ваш реальный HTTP(S)-шлюз; https://proxy.example.invalid:8443 — иллюстрация. Передавайте PROXY_USERNAME и PROXY_PASSWORD приватно.
Выполните ограниченную навигацию
Сохраните как proxy-browser.mjs и запустите node proxy-browser.mjs. Этот пример использует аутентификацию по имени пользователя и паролю для HTTP(S)-прокси; не предполагайте, что эти параметры аутентификации также работают со шлюзом SOCKS.
proxy-browser.mjs · Playwright Chromium
import { chromium } from 'playwright';
function required(name) {
const value = process.env[name];
if (!value) throw new Error('Missing environment variable: ' + name);
return value;
}
const proxy = {
server: required('PROXY_URL'),
username: required('PROXY_USERNAME'),
password: required('PROXY_PASSWORD'),
};
const browser = await chromium.launch({ timeout: 30_000 });
try {
const context = await browser.newContext({ proxy });
context.setDefaultTimeout(15_000);
context.setDefaultNavigationTimeout(30_000);
const page = await context.newPage();
const response = await page.goto('https://example.com/', {
waitUntil: 'domcontentloaded',
});
if (!response || !response.ok()) throw new Error('Navigation did not succeed');
console.log({ status: response.status() });
await context.close();
} finally {
await browser.close();
}Отделяйте успех страницы от успеха сети
Ответ на навигацию описывает основной документ, а не каждое изображение, скрипт или API-запрос, который делает страница. В реальном тесте проверяйте именно тот экран или ответ, от которого зависит ваш рабочий процесс. Используйте страницу под вашим контролем и привязывайте проверку к одному наблюдаемому результату.
Одна страница может порождать много запросов. Если ваш провайдер ротирует адрес на каждый запрос, уточните, как он обрабатывает эти соединения, прежде чем ожидать один стабильный исходящий адрес на протяжении всего браузерного сценария. Cookies остаются состоянием браузера; выбор sticky-прокси их не создаёт и не восстанавливает.
Когда страница не укладывается в таймаут, сначала повторите небольшой запрос через тот же шлюз в curl. Затем изучите очищенные сбои браузерных запросов и конкретный отказавший ресурс. Не собирайте скриншоты или трассировки с реальными данными учётной записи во время базовой проверки связности.
Перед выпуском
- Используйте свежий контекст для сценария.
- Держите учётные данные прокси и сайта раздельно.
- Проверяйте реальное условие успеха приложения после навигации.
Источники и дополнительное чтение
Технические материалы, использованные при подготовке руководства. Сверяйтесь с документацией вашей версии и с поддерживаемой конфигурацией вашего провайдера.