Як у Chrome використовувати проксі лише для деяких сайтів
Зміст

Коротко: У десктопному Chrome немає налаштування, яке застосовує проксі до окремих сайтів. Він використовує одну конфігурацію проксі для всього перегляду, яку бере з операційної системи, з прапорця запуску, з політики адміністратора або з розширення. Щоб через проксі йшли лише деякі сайти, Chrome потрібен PAC-скрипт. Це коротка функція, яка обирає проксі для кожного запиту; ви пишете її самі, або розширення будує її з правил.
Щоб використовувати проксі для окремих сайтів у Chrome, ви даєте браузеру PAC-скрипт, який називає ці сайти, і Chrome звертається до нього під час кожного запиту. Скрипт може надходити з трьох місць: з вашої операційної системи, з окремо запущеного Chrome або з розширення.
Чи є в Chrome налаштування проксі для окремого сайту?
Ні. На сторінці налаштувань Chrome є єдиний пункт про проксі, з підписом «Open your computer’s proxy settings» (відкрити налаштування проксі комп’ютера), і Chromium описує ці налаштування як такі, що діють для всього комп’ютера (рядки налаштувань Chromium).
Нотатки Chromium про проксі перелічують чотири місця, звідки Chrome може брати конфігурацію проксі: політика адміністратора, прапорці командного рядка, розширення й операційна система. Те з них, що діє в цей момент, дає одну конфігурацію для всього, що завантажує браузер, а рішення для окремого сайту живе всередині цієї конфігурації як PAC-скрипт.
Що робить PAC-скрипт?
PAC-скрипт (proxy auto-configuration, автоматичне налаштування проксі) це
функція JavaScript з назвою FindProxyForURL. Chrome викликає її для кожного
запиту з адресою та ім’ям хоста і використовує рядок, який вона повертає:
DIRECT без проксі або PROXY host:port для проксі-сервера, як описано в
довіднику MDN з PAC.
Цей скрипт пускає один домен і його піддомени через проксі, а все інше напряму. Адресу проксі взято з діапазону, зарезервованого для документації (RFC 5737); підставте замість неї свою.
function FindProxyForURL(url, host) {
if (host === "example.com" || dnsDomainIs(host, ".example.com")) {
return "PROXY 203.0.113.10:8080";
}
return "DIRECT";
}
Додайте по одній умові на кожен сайт, який має йти через проксі. Останній
return вирішує, що буде з усіма сайтами, яких немає в списку.
Якими способами можна передати Chrome PAC-скрипт?
Трьома: через системні налаштування проксі, через окремо запущений Chrome або через розширення. Вони відрізняються тим, яку частину комп’ютера зачіпають і як набирає чинності зміна.
Через системні налаштування проксі
У Windows налаштування проксі мають параметр «setup script» (скрипт налаштування), куди вписують адресу скрипту, як показано в посібнику Microsoft, і Chrome дотримується системного налаштування. Скрипт має бути доступний за URL. Його використовуватимуть і всі інші програми, які читають системні налаштування проксі, тож цей спосіб підходить для скрипту, розрахованого на весь комп’ютер.
В окремому екземплярі Chrome
Chrome приймає прапорці проксі під час запуску, їх перелічено на
сторінці мережевих налаштувань Chromium:
--proxy-server називає один проксі, --proxy-bypass-list називає хости, які
його обходять, а --proxy-pac-url вказує на скрипт. Запущений зі своїм
--user-data-dir, другий Chrome працює поруч із вашим звичайним, бо два
запущені екземпляри не можуть ділити один каталог даних
(нотатки Chromium про каталог даних користувача).
google-chrome --user-data-dir="$HOME/chrome-proxied" --proxy-server="http://203.0.113.10:8080"
Такий екземпляр пускає весь свій трафік через проксі, тож маршрут сайту визначає вікно, у якому ви його відкриваєте. Щоб змінити проксі, треба закрити екземпляр і запустити його знову з новими прапорцями.
За допомогою проксі-розширення
Розширення задає проксі Chrome для профілю, у якому воно встановлене, через chrome.proxy API, а перемикач із правилами компілює їх у PAC-скрипт. Наш безкоштовний ProxyJam Connector працює саме так, у Chrome і в Microsoft Edge:
- Додайте профіль із хостом, портом і протоколом проксі.
- Додайте правило, наприклад «Domain + subdomains» (домен і піддомени) з
example.com, що вказує на цей профіль. Виграє перше правило, під яке підпадає сайт. - Лишіть резервний варіант на Direct, щоб сайти, які не підпадають під жодне правило, підключалися без проксі.
- Оберіть Auto у спливному вікні на панелі інструментів.
Для сайту, що підпадає під правило, скрипт Connector називає цей один проксі без варіанта напряму після нього. Якщо проксі не працює, сайт не завантажиться, і ваша власна адреса для нього ніколи не використовується.
Чи може кожна вкладка працювати через свій проксі?
У Chrome ні. chrome.proxy API зберігає одне значення для профілю і не приймає вкладку як параметр, тож у вкладки немає нічого власного, що можна задати.
Робоча одиниця це профіль або екземпляр. Створіть другий профіль Chrome для роботи через проксі і встановіть розширення там, або запустіть другий екземпляр зі своїми прапорцями, і тримайте два вікна поруч. Тоді кожне вікно має свій проксі.
Чому правило зі шляхом не спрацьовує на HTTPS-сайтах?
Chrome дає PAC-скрипту від адреси https:// лише схему, хост і порт. Шлях,
параметри запиту і фрагмент вирізаються починаючи з Chrome 52, а параметр, який
це вимикав, прибрали в Chrome 75
(нотатки Chromium про проксі).
Тому правило на зразок example.com/shop/* не збігається з жодною
HTTPS-сторінкою. Пишіть правила за ім’ям хоста, а розділу сайту, якому потрібен
власний маршрут, дайте окремий піддомен. Звичайні адреси http:// і далі
доходять до скрипту зі шляхом, хоча Chromium радить на це не покладатися.
Connector показує попередження поруч із кожним правилом, яке залежить від
шляху.
Який спосіб обрати?
Для кількох сайтів і одного проксі розширення вимагає найменше зусиль, а сторінка розширення перелічує, що Connector може і чого не може в Chrome. Про проксі, який питає пароль, ідеться у статті чому Chrome весь час питає ім’я користувача й пароль від проксі, а про перенесення правил зі старішого перемикача у статті що змінилося з Manifest V3. Як налаштувати по одному профілю й проксі на країну, щоб перевірити, як ваш власний сайт виглядає на кожному ринку, описано у статті як переглянути свій сайт з іншої країни.
Якщо проксі, через який ви пускаєте ці сайти, має тримати одну адресу в мережі інтернет-провайдера, це і є ISP-проксі. ProxyJam продає статичні резидентні (ISP) проксі на сторінці ISP-проксі, а ціни є на сторінці цін.
