Облікові дані в рядку сервера
Playwright читає логін і пароль з їхніх власних полів. Якщо вписати їх в URL сервера, вони взагалі не надсилаються: у нашому тесті перша навігація висіла до тайм-ауту, і жодне повідомлення не вказувало на облікові дані.
Дайте Playwright одну статичну ISP-адресу під час запуску або для одного контексту браузера. Перед публікацією приклади перевірили в Chromium, Firefox і WebKit на локальному проксі.
Коротко: Передайте proxy з полями server, username і password у chromium.launch або в browser.new_context, щоб обмежити його одним контекстом. Через HTTP усі три рушії проходять автентифікацію з цими полями. Через SOCKS5 жоден із них не приймає логін і пароль: Playwright відмовляється запускатися. Внесіть свій IP до білого списку проксі й укажіть лише сервер socks5://.
Playwright керує Chromium, Firefox і WebKit через один API, а проксі входить у те, як створюється браузер або контекст. Тому в одному скрипті легко працювати з кількома адресами, і тому ж тут лежить його єдине жорстке обмеження: SOCKS5 з паролем.
Приклад на Python запускає Chromium із проксі для всього браузера; приклад для контексту натомість обмежує проксі одним контекстом. Щоб змінити рушій, досить замінити chromium на firefox або webkit; об’єкт проксі лишається тим самим.
Коли проксі працює через HTTP, три рушії відповідають на його 407 логіном і паролем з об’єкта проксі. SOCKS5-проксі такої відповіді не отримує від жодного з них, тому приклад із SOCKS5 не містить облікових даних і спирається на білий список.
Проксі не можна прив’язати до окремої сторінки. Одиниця тут контекст: створіть по контексту на кожну адресу й відкривайте в ньому сторінки, які мають використовувати цю адресу. Контексти в Playwright дешеві, тож скрипт, який перевіряє один магазин із трьох країн, тримає три контексти, кожен із власного замовлення.
Об’єкт проксі також приймає поле bypass, список хостів через кому, до яких треба звертатися напряму. Використовуйте його для власних внутрішніх сервісів або локального тестового сервера, щоб через оплачену адресу виходив лише трафік, призначений для зовнішнього світу.
З розділу «Мої проксі» в панелі керування або із замовлення в API. Кожна адреса має свої чотири значення.
Під час launch проксі використовує весь браузер. У new_context його використовує лише цей контекст, тож один скрипт може запускати кілька контекстів через різні адреси.
{"server": "http://HOST:PORT", "username": "USERNAME", "password": "PASSWORD"}. Облікові дані йдуть у власні поля й ніколи не пишуться всередину URL сервера.
Playwright не вміє входити в SOCKS5-проксі, тому перемкніть замовлення на SOCKS5, пропустіть IP свого комп’ютера викликом білого списку з вкладок коду й залиште лише socks5://HOST:PORT з новим портом. Поки білий список задано, проксі пропускає лише адреси з нього, а логін і пароль для цього замовлення перестають працювати. Якщо надіслати порожній список, білий список вимикається і вхід за паролем знову працює.
Один раз відкрийте What Is My IP на сторінці цього браузера або контексту, до справжнього запуску.
# pip install playwright && playwright install chromium
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(proxy={
"server": "http://HOST:PORT",
"username": "USERNAME",
"password": "PASSWORD",
})
page = browser.new_page()
page.goto("https://example.com/")
print(page.title())
browser.close()
// npm i playwright && npx playwright install chromium
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch({
proxy: {
server: 'http://HOST:PORT',
username: 'USERNAME',
password: 'PASSWORD',
},
});
const page = await browser.newPage();
await page.goto('https://example.com/');
console.log(await page.title());
await browser.close();
})();
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
# The proxy belongs to this context only; another context can use
# a different address, or none.
context = browser.new_context(proxy={
"server": "http://HOST:PORT",
"username": "USERNAME",
"password": "PASSWORD",
})
page = context.new_page()
page.goto("https://example.com/")
print(page.title())
browser.close()
# Switch the proxy to SOCKS5 and put your machine's IP on its whitelist:
# Chromium cannot send a SOCKS5 username and password.
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(proxy={"server": "socks5://HOST:PORT"})
page = browser.new_page()
page.goto("https://example.com/")
print(page.title())
browser.close()
# Put the public IPv4 address your code runs from on the proxy's
# whitelist. Replaces the list; an empty list turns whitelisting off
# and the proxy falls back to username and password.
curl -X PUT "https://api.proxyjam.com/public/v1/orders/ORDER_ID/whitelist" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"whitelisted_ips": ["YOUR_IP"]}'
Запускалося на Playwright 1.64 для Python і для Node. HTTP-приклади надсилають логін і пароль, і їм потрібне замовлення без білого списку; приклад із SOCKS5 спирається на білий список, і для нього проксі спершу треба перемкнути на SOCKS5, після чого в нього буде новий порт. Замініть слова великими літерами значеннями зі свого замовлення.
| HTTP з паролем | SOCKS5 з паролем | SOCKS5, білий список | |
|---|---|---|---|
| Chromium | Працює | Відмова під час запуску | Працює |
| Firefox | Працює | Відмова під час запуску | Працює |
| WebKit | Працює | Відмова під час запуску | Працює |
Playwright читає логін і пароль з їхніх власних полів. Якщо вписати їх в URL сервера, вони взагалі не надсилаються: у нашому тесті перша навігація висіла до тайм-ауту, і жодне повідомлення не вказувало на облікові дані.
Усі рушії відмовляються від автентифікації в SOCKS5, і помилка приходить під час запуску, до відкриття будь-якої сторінки. Інша бібліотека тут не допоможе: внесіть до білого списку IP, з якого працює скрипт, і приберіть облікові дані.
Сторінки використовують проксі свого контексту, а контексти використовують проксі браузера, якщо їм не задано власний. Щоб працювати з двома адресами паралельно, створіть два контексти, кожен зі своїм проксі.
Одрук у номері порту або проксі, досі налаштований на HTTP, одразу дають помітну помилку, а контекст, створений без об'єкта проксі, мовчки виходить напряму. Завантажте сторінку, яка показує IP, по одному разу в кожному налаштованому контексті.
Передайте об'єкт із полями server, username і password у launch або в new_context. Через HTTP-проксі Chromium, Firefox і WebKit надсилають ці облікові дані, коли проксі їх запитує.
Ні. В усіх трьох рушіях Playwright зупиняється під час запуску з помилкою про те, що браузер не підтримує автентифікацію в SOCKS5-проксі. Внесіть до білого списку IP, з якого працює скрипт, і передайте лише сервер socks5; наш білий список діє і через SOCKS5, і через HTTP. SOCKS5
Задайте кожному контексту браузера власний проксі й відкривайте сторінку в цьому контексті. Сторінки всередині одного контексту завжди використовують його проксі, тож проксі на сторінку означає один контекст на сторінку.
Той самий об'єкт із тими самими трьома полями: у Python він записується як словник, у Node як об'єктний літерал. Обидва приклади на цій сторінці запускалися на Playwright 1.64.
Тестування власних сторінок за регіонами, перевірка якості, верифікація реклами, дослідження цін і ринку, SEO-моніторинг і захист бренду працюють без попередньої перевірки за нашою політикою прийнятного використання. Сама лише загальнодоступність не дає права збирати дані, а для персональних даних потрібна зазначена законна підстава. Адреса не проходить повз CAPTCHA, виявлення ботів, обмеження частоти запитів і блокування, і політика забороняє такі спроби. Політика прийнятного використання