Ответ
User-Agent — это HTTP-заголовок, который клиент (браузер, приложение, бот) отправляет серверу для идентификации себя. Строка содержит информацию о типе приложения, операционной системе, версии ПО и движке рендеринга.
Структура на примере:
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)— операционная система (Windows 10, 64-битная архитектура).AppleWebKit/537.36— движок рендеринга веб-страниц.(KHTML, like Gecko)— указание на совместимость с другими движками.Chrome/120.0.0.0— браузер и его версия.Safari/537.36— указание на совместимость с Safari.
Применение в тестировании:
- Кросс-браузерное и кроссплатформенное тестирование: Проверка корректного отображения и работы веб-приложения в разных браузерах и на разных ОС.
- Эмуляция устройств: В инструментах разработчика (Chrome DevTools) можно изменить User-Agent для симуляции мобильных устройств или других браузеров.
- Тестирование адаптивной верстки: Убедиться, что сервер отдает правильную версию сайта (мобильную/десктопную) в зависимости от User-Agent.
- Обнаружение ботов: Анализ User-Agent помогает выявлять автоматизированные скрипты или скрейперы, которые могут маскироваться под обычные браузеры.
- Тестирование API: Проверка, как API реагирует на разные User-Agent строки (например, возвращает ли разные форматы данных).
Пример подмены User-Agent в Python с requests:
import requests
headers = {
'User-Agent': 'MyTestBot/1.0 (Test Environment)'
}
response = requests.get('https://api.example.com/data', headers=headers)
print(f"Отправленный User-Agent: {response.request.headers['User-Agent']}") Ответ 18+ 🔞
Да ты посмотри на эту хуйню, блядь! 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)— ору: «Я сижу на Винде 10, на 64-битном железе, не тупи!».AppleWebKit/537.36— это движок, который страницы рисует, чтоб красиво было.(KHTML, like Gecko)— а это он типа скромничает: «Я, конечно, свой, но и с другими движками тоже умею, не переживай».Chrome/120.0.0.0— ну тут всё ясно, браузер и версия. Главное, чтоб не древний.Safari/537.36— и напоследок подлизывается: «А ещё я с Сафари совместим, на всякий случай!».
А нахуя это всё тестировщику, спросишь?
Да овердохуища применений, блядь!
- Кросс-браузерное тестирование. Ну это святое. Надо проверить, не разъёбывается ли твой сайт в Хроме, Фаерфоксе и этом вашем Едж-с-закосом-под-Хром. Подменяешь User-Agent и смотришь, не превратилась ли вёрстка в кашу.
- Эмуляция устройств. Сидишь ты на компе, а надо понять, как сайт выглядит на айфоне какого-нибудь. В инструментах разработчика тыкаешь кнопочку — и браузер прикидывается мобилой. Удобно, блядь!
- Адаптивная вёрстка. Сервер-то смотрит на этот User-Agent и решает: отдать полную версию сайта или мобильную, урезанную. Надо убедиться, что он не гонит пургу и отдаёт правильную.
- Выявление ботов. А вот это интересно! Какой-нибудь скрейпер-пидорас может маскироваться под обычный браузер, но по User-Agent его иногда вычислить можно. Если видишь строку
Python-urllib/3.10— это явно не бабушка в интернете сидит. - Тестирование API. Шлёшь запрос с разными User-Agent и смотришь: а не начинает ли API возвращать какой-то другой формат данных? Вдруг для мобилок JSON попроще отдаёт?
Вот, смотри, как это на Python с библиотекой requests делается, проще простого:
import requests
headers = {
'User-Agent': 'MyTestBot/1.0 (Test Environment)'
}
response = requests.get('https://api.example.com/data', headers=headers)
print(f"Отправленный User-Agent: {response.request.headers['User-Agent']}")
Всё, блядь! Теперь сервер думает, что к нему стучится не Питон, а какой-то MyTestBot. Обманул, сука, как ребёнка! Главное — не забывай, что в реальных тестах иногда нужно именно так и делать, чтобы условия были чистыми. А то потом выяснится, что баг только для ботов воспроизводится, а ты его и не ловил!