Что такое HTTP-заголовок User-Agent и зачем он нужен в тестировании?

«Что такое HTTP-заголовок User-Agent и зачем он нужен в тестировании?» — вопрос из категории HTTP и веб-протоколы, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

User-Agent — это HTTP-заголовок, в котором клиентское приложение (браузер, мобильное приложение, скрипт) идентифицирует себя для сервера. Он содержит информацию о типе и версии клиента, операционной системе, движке рендеринга и часто — устройстве.

Структура типичного User-Agent для браузера Chrome на Windows:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
  • Mozilla/5.0 — исторический токен совместимости.
  • (Windows NT 10.0; Win64; x64) — платформа (ОС и архитектура).
  • AppleWebKit/537.36 — движок рендеринга.
  • Chrome/120.0.0.0 — браузер и его версия.
  • Safari/537.36 — указание на совместимость.

Применение в тестировании:

  1. Тестирование адаптивного/отзывчивого дизайна: Эмуляция разных устройств (мобильных, планшетов) в UI-тестах через подмену User-Agent.

    # Пример на Python с Selenium
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    mobile_emulation = {
        "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15"
    }
    options.add_experimental_option("mobileEmulation", mobile_emulation)
    driver = webdriver.Chrome(options=options)
  2. Тестирование серверной логики: Проверка, что сервер корректно определяет клиента и возвращает соответствующую версию сайта, стили или функционал (например, мобильную или десктопную версию).
  3. Тестирование API: Некоторые API могут требовать определённого User-Agent или предоставлять разные ответы в зависимости от него. Это нужно проверять в тестах.
  4. Обход ограничений: Иногда серверы блокируют запросы от автоматических скриптов (с пустым или стандартным User-Agent Selenium). Установка реалистичного User-Agent помогает избежать этого.
  5. Анализ логов: По User-Agent в логах сервера можно фильтровать и анализировать трафик от тестовых роботов.