Прямий і зворотний проксі: у чому різниця

Чим прямий проксі на боці клієнта відрізняється від зворотного перед сайтом, де кожен стоїть на шляху запиту і який із них продають як «проксі».

Редакція Prokso 6 хв читання Гайди
Прямий і зворотний проксі: у чому різниця
Коротко
  • Прямий проксі працює на боці клієнта і показує сайту свою адресу замість вашої
  • Зворотний проксі стоїть перед сайтом: nginx, CDN, балансувальник — він приховує і захищає сервер
  • Сервіси проксі, зокрема Prokso, продають прямі проксі: адреси для ваших запитів
  • Backconnect-шлюз — прямий проксі з однією адресою підключення і великим пулом адрес виходу
  • Прозорий проксі перехоплює трафік без налаштувань на пристрої, і користувач може про нього не знати

Слово «проксі» вживають для двох різних речей. Одні купують проксі, щоб збирати ціни або вести акаунти. Інші налаштовують проксі на своєму сервері, щоб сайт витримував навантаження. Технічно це родичі, але завдання в них протилежні.

Нижче — чим прямий проксі відрізняється від зворотного, де кожен стоїть на шляху запиту і чому сервіси проксі продають саме прямі. Якщо ви тільки починаєте розбиратися, спершу загляньте в статтю що таке проксі-сервер.

Посередник, який працює на вас

Проксі-сервер — це посередник між двома сторонами з'єднання. Прямий проксі (forward proxy) стоїть на боці клієнта. Ви надсилаєте запит не сайту, а проксі, а він уже сам іде на сайт і повертає вам відповідь.

Шлях запиту словами виглядає так: ваш комп'ютер → прямий проксі → інтернет → сайт. Сайт бачить адресу проксі, а не вашу. Про те, що за проксі стоїть конкретна людина, він не знає, якщо ви самі себе не видасте.

Прямий проксі налаштовують у себе: у браузері, в антидетекті, у скрипті, у системі. Вибір, через який проксі йти, робить клієнт. Сайт у цій схемі нічого не налаштовує і нічого не вирішує.

Спілкуватися з прямим проксі програма може за різними протоколами. Найчастіше це HTTP, HTTPS або SOCKS5, з логіном і паролем або з доступом за IP. Протокол впливає на те, які програми зможуть підключитися, але роль проксі від цього не змінюється: він так само стоїть на вашому боці й випускає запити зі своєї адреси.

Головне, що дає прямий проксі, — іншу адресу для ваших запитів. Із цього випливають усі типові завдання:

  • Збір відкритих даних. Скрипт розподіляє запити між різними адресами і не впирається в ліміт одного IP.
  • Перевірка гео. Ви бачите ціни, видачу чи рекламу так, як їх бачить покупець у Польщі або Німеччині.
  • Робота з кількома акаунтами. У кожного профілю своя адреса, і майданчик не пов'язує їх за IP.
  • Тестування сайтів і застосунків із різних країн перед запуском.
  • Корпоративний доступ. Компанія пускає працівників в інтернет через свій проксі й контролює, куди вони ходять.

Посередник, який працює на сайт

Зворотний проксі (reverse proxy) стоїть на боці сервера. Відвідувач думає, що звертається до сайту, а насправді його зустрічає проксі. Він приймає запит, вирішує, якому із серверів його передати, і повертає відповідь.

Шлях запиту: відвідувач → інтернет → зворотний проксі → сервер сайту. Відвідувач не бачить справжньої адреси сервера і зазвичай не знає, скільки серверів стоїть за проксі. Налаштовує таку схему власник сайту, а не клієнт.

Найвідоміші приклади — вебсервер nginx у ролі проксі, балансувальники навантаження і CDN на кшталт Cloudflare, які ставлять перед сайтом. Коли ви відкриваєте великий сайт, ваш запит майже напевно спершу проходить через зворотний проксі.

Що вміє зворотний проксі

  • Балансування навантаження. Запити розподіляються між кількома серверами, і сайт не падає під час напливу відвідувачів.
  • Кешування. Картинки, стилі й незмінні сторінки віддаються з пам'яті проксі, а сервер не витрачає на них ресурси.
  • TLS-термінація. Проксі приймає захищене з'єднання HTTPS, розшифровує його і передає запит серверу всередині своєї мережі.
  • WAF — фільтр вебзапитів. Проксі відсікає підозрілі запити, атаки й надто часті звернення до того, як вони дійдуть до сервера.
  • Приховування сервера. Справжня адреса сервера не світиться, і атакувати його напряму складніше.

Саме зворотний проксі сайту зазвичай відповідає вам помилкою 429 або показує перевірку браузера. Це рішення власника сайту, і прямий проксі його не скасовує: він змінює адресу, але правила й ліміти сайту діють на будь-яку адресу.

Порівняння в одній таблиці

ОзнакаПрямий проксіЗворотний проксі
Де стоїтьМіж клієнтом та інтернетомМіж інтернетом і сервером сайту
Хто налаштовуєКлієнт: у браузері, програмі, скриптіВласник сайту або його хостинг
Кого приховуєАдресу клієнтаАдресу й будову серверів
Чи знає про нього сайтСайт бачить лише адресу проксіЦе частина самого сайту
Типові завданняЗбір даних, перевірка гео, акаунтиБалансування, кеш, TLS, WAF
ПрикладиРезидентські, мобільні, серверні проксіnginx, CDN, балансувальники

Зручно запам'ятати так: прямий проксі говорить від імені клієнта, зворотний — від імені сервера. В одному запиті цілком можуть трапитися обидва. Ваш скрипт іде через прямий проксі, а сайт приймає запит своїм зворотним проксі.

Чому сервіси продають прямі проксі

Зворотний проксі не продають як адреси: його ставлять під свій сайт, і він працює тільки для нього. Купувати адреси має сенс лише для прямого проксі, бо цінність у тому, яку адресу побачить сайт.

Тому все, що продається як «проксі» — резидентські, мобільні, серверні, — це прямі проксі. Prokso не виняток: ви підключаєтеся до хоста gw.prokso.com зі своїм логіном і паролем, а сайт бачить адресу потрібної країни з пулу. Докладніше про типи адрес — на сторінці резидентські проксі.

Backconnect: один вхід, багато виходів

У класичного прямого проксі одна адреса: до неї підключаєшся, з неї й виходиш. У backconnect-проксі інакше. Ви підключаєтеся до одного шлюзу, а він випускає запит через одну з безлічі адрес пулу.

Такий шлюз зручний тим, що рядок підключення не змінюється, а адреси виходу змінюються за правилами. У Prokso це виглядає так:

  • Порт 823 для HTTP і 824 для SOCKS5 — режим «Новий IP на кожен запит». Це ротаційний проксі: кожен запит виходить із нової адреси.
  • Порти від 10000 до 20000 — режим «Фіксований IP (sticky-сесія)». Кожен порт тримає одну адресу від 1 до 120 хвилин, за замовчуванням 30, і працює і за HTTP, і за SOCKS5.
  • На план можна відкрити до 1000 одночасних з'єднань, а сам шлюз залишається тим самим.

Для клієнта backconnect-шлюз однаково залишається прямим проксі. Він стоїть на вашому боці шляху запиту і змінює адресу, яку побачить сайт. Просто за одним входом ховається не одна адреса, а цілий пул.

Прозорий проксі: посередник без налаштувань

Є ще один різновид — прозорий проксі. Його не налаштовують на пристрої: провайдер, офісна мережа чи публічний Wi-Fi перехоплює трафік сам. Користувач може навіть не знати, що його запити йдуть через посередника.

Прозорі проксі використовують для фільтрації сайтів в офісах і школах, для кешування в провайдерів і для сторінок входу в гостьовий Wi-Fi. Адресу клієнта вони зазвичай не приховують і часто додають у запит заголовки, за якими сайт розуміє, що був посередник. Для завдань, заради яких купують проксі, такий варіант не підходить.

Заголовки, за якими видно посередника

Проксі може додавати в запит службові заголовки, наприклад X-Forwarded-For або Via. У них записується адреса клієнта або сам факт, що запит пройшов через посередника. Для зворотного проксі це нормально: сервер сайту має знати, який відвідувач до нього прийшов, а не лише адресу свого ж проксі.

Для прямого проксі такі заголовки, навпаки, небажані: вони розповідають сайту те, що ви хотіли приховати. Тому важливо перевірити, що бачить сайт після підключення. На сторінці «мій IP» видно, яку адресу і яку країну отримав сайт і чи немає витоку вашої адреси через WebRTC.

Як не заплутатися в термінах

  • Якщо проксі налаштовуєте ви, щоб сайт бачив іншу адресу, — це прямий проксі.
  • Якщо проксі ставить власник сайту перед своїми серверами, — це зворотний проксі.
  • Якщо трафік перехоплюють без ваших налаштувань, — це прозорий проксі.
  • Якщо ви підключаєтеся до одного шлюзу і виходите з різних адрес, — це backconnect, різновид прямого.

Щоб підключити прямий проксі до своєї програми, загляньте в розділ інструкції: там покроково розписано браузери, антидетекти, системи й бібліотеки для автоматизації. Перевірити, яку адресу бачить сайт після підключення, можна на сторінці мій IP.

Питання й відповіді

Чим прямий проксі відрізняється від зворотного простими словами?

Прямий проксі працює на вас: ви надсилаєте через нього запити, і сайт бачить його адресу. Зворотний проксі працює на сайт: він приймає запити відвідувачів і вирішує, якому серверу їх передати.

Cloudflare — це проксі?

Так, у ролі зворотного проксі. Власник сайту ставить такий сервіс перед своїм сервером: він кешує сторінки, приймає TLS-з'єднання і фільтрує підозрілі запити. До проксі, які купують для своїх запитів, це стосунку не має.

Чи може один сервер бути і прямим, і зворотним проксі?

Технічно так. Наприклад, nginx або Squid можна налаштувати в обох ролях. Але на практиці це різні завдання з різними налаштуваннями, і зазвичай під них тримають різні сервери.

Який проксі я купую в Prokso?

Прямий. Ви підключаєтеся до хоста gw.prokso.com, а сайт бачить адресу з пулу потрібної країни. Порт 823 або 824 дає нову адресу на кожен запит, порти 10000–20000 тримають одну адресу на час сесії.

Чи обходить прямий проксі захист зворотного проксі сайту?

Ні. Прямий проксі змінює лише адресу, з якої прийшов запит. Правила, ліміти й перевірки зворотного проксі сайту діють на будь-яку адресу, і їх потрібно дотримуватися.

Читайте також