Заголовки HTTP
Заголовки HTTP — службові рядки запиту, в яких програма передає сайту мову, тип браузера, cookies та інше.
Оновлено · Редакція Prokso
Разом з адресою сторінки браузер надсилає десяток заголовків: User-Agent, Accept-Language з мовою, Referer зі сторінкою, звідки ви прийшли, Cookie з cookies.
Сайти дивляться, чи заголовки узгоджені між собою й з адресою. Якщо IP з Польщі, а мова браузера інша й часовий пояс з іншого континенту, сайт бачить суперечність.
Звичайний проксі не змінює заголовки — їх надсилає ваша програма. Але деякі проксі додають свої, наприклад Via чи X-Forwarded-For, і цим видають себе. Про це — у статті прозорий проксі.
Через тунель до сайтів з HTTPS заголовки йдуть зашифрованими, і проксі їх не бачить.
Як побачити заголовки, які надсилає ваша програма
У браузері відкрийте DevTools, вкладку Network, клацніть запит і подивіться розділ Request Headers. У консолі запустіть curl із прапорцем -v: рядки з > — це те, що curl надіслав, рядки з < — те, що повернулося.
У бібліотек свої значення за замовчуванням. Python requests надсилає User-Agent: python-requests/2.x, curl — curl/8.x або схоже, залежно від версії. Такі значення одразу кажуть сайту, що запит автоматичний, і сайт може обмежувати його суворіше.
Які заголовки від вас, а які від проксі
| Заголовок | Хто його ставить | Що дізнається сайт |
|---|---|---|
User-Agent, Accept-Language | ваша програма | браузер і мову |
Cookie | ваша програма | вашу сесію на сайті |
Proxy-Authorization | ваша програма, для проксі | нічого: проксі зазвичай лишає його собі |
Via, X-Forwarded-For | деякі проксі | що працює проксі, іноді ваш IP |
Заголовок Proxy-Authorization несе логін і пароль плану до проксі. Для сайтів на HTTPS він іде лише в запиті CONNECT до проксі, тож сайт його не отримує. Які проксі-заголовки доходять до сайту, покаже перевірка проксі, а про IP у заголовках — стаття X-Forwarded-For.
Узгодженість між заголовками
Браузери на основі Chromium разом з User-Agent надсилають заголовки Sec-CH-UA з назвою і версією браузера. Якщо вони називають різні версії, запит виглядає суперечливим. По HTTP/2 назви заголовків завжди передаються малими літерами, тож не дивуйтеся, коли в журналах бачите user-agent замість User-Agent. А Accept-Language має відповідати мові, яку ви очікуєте побачити: за ним сервер часто вибирає, яку версію сторінки повернути.
Питання й відповіді
Чи змінює проксі заголовки?
Ні, заголовки надсилає ваша програма. Проксі змінює лише адресу, яку бачить сайт.
Які заголовки важливі для парсера?
User-Agent актуального браузера, Accept-Language під країну проксі й Accept. Стандартні заголовки бібліотек одразу видають автоматичний запит.
Пов'язані терміни
Резидентські $1.59, мобільні $2.50, серверні $0.65 за 1 ГБ
Реєстрація за хвилину, доступи одразу після оплати.