HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Как использовать User Agent для атак на сайты
Пользовательский агент (User Agent) — это строка текста, идентифицирующая браузер и операционную систему для веб-сервера. User Agent передаётся в HTTP заголовке когда браузер делает запрос к веб-серверу.
Вы можете посмотреть передаваемые HTTP заголовки, в том числе User Agent в Инструментах разработчика веб-мастера. Например, в Chrome для этого нажмите F12, перейдите на вкладку Network и в окне General найдите Request Headers (заголовки запроса):
Или можете сделать ещё проще — перейти на страницу одного из многочисленных сервисов, которые показывают User Agent: https://suip.biz/ru/?act=my-user-agent
Пример User Agent:
Строка не особо понятная — ясно, что это Chrome и что его версия 86. Если вам любопытно, почему строка такая длинная и что в ней означают остальные элементы, то посмотрите статью «Что такое User Agent (пользовательский агент) браузера?», там объяснено значение строк и почему их так много.
Как можно использовать User Agent при атаках на сайты? Я знаю по крайней мере 3 варианта:
- SQL-инъекции через User Agent
- XSS с помощью User Agent
- Подмена User Agent для обмана сервера
Эта инструкция расскажет, как менять User Agent и делать инъекции через User Agent чтобы притвориться другим устройством или выполнить атаки на сайт.
XSS через User Agent
Если вы совсем не знаете, что такое уязвимость XSS, то смотрите статьи:
- Уроки по XSS: Урок 1. Основы XSS и поиск уязвимых к XSS сайтов
- Уроки по XSS: Урок 2. Скрытая передача данных, перехват нажатия клавиш, изменение внешнего вида сайта, подцепление на BeEF, фишинг, подсказки обхода фильтров
- Уроки по XSS: Урок 3. Контексты внедрения XSS
XSS уязвимости бывают:
- Хранимые (Постоянные)
- Отражённые (Непостоянные)
Все показанные ниже XSS являются непостоянными, то есть показываются только пользователю, который их эксплуатирует, а следовательно, не являются опасными. Такие уязвимости обычно даже не принимают по Bounty программам (некоторые крупные компании дают вознаграждение за найденные уязвимости, если вы сообщили о них, это называется Bug Bounty).
Начнём мы с простейшего способа менять User Agent — прямо в веб-браузере. Конечно же, для это есть множество расширений браузеров, но подменить User Agent можно даже без них — подробно как это сделать вместе со скриншотами смотрите в статье «Как изменить User Agent без установки расширений».
Здесь же просто напомним краткий алгоритм:
Google Chrome/Chromium
- Инструменты разработчика (F12)
- Нажмите кнопку меню справа от вкладки «Console» в нижней части панели инструментов разработчика и выберите «Network conditions»
- На вкладке «Network conditions» снимите флажок «Select automatically» рядом с «User agent».
- Затем вы можете выбрать пользовательский агент из списка или скопировать и вставить пользовательский агент в поле.
Firefox:
- Ведите about:config в адресную строку Firefox и нажмите Enter.
- Введите general.useragent.override в поле фильтра. Он, вероятно, не существует в вашей системе. Чтобы добавить эту настройку, переключитесь тип значения на «Строка» и нажмите + (плюс).
- Введите желаемый пользовательский агент.
Если для сайта whatleaks.com ввести в качестве строки User Agent
То получим всплывающее окно alert.
На сайт amiunique.org/fp нет XSS инъекции, но поломался JavaScript код.
В принципе, можно было бы далеко не ходить за примерами, у меня у самого на SuIP.biz была точно такая же проблема (https://suip.biz/ru/?act=my-user-agent), но я её починил. На самом деле, пользователь действительно может как угодно изменять показываемую ему страницу на лету. Если эту страницу кроме него никто не видит, то проблем нет. Другое дело, если значения User Agent сохраняются и затем могут сработать, то есть если значения User Agent сохраняются и затем показываются кому-либо ещё, например, владельцу сайта (скажем, при анализе статистики) или другим пользователям (например, виджете популярных или последних User Agent посетителей).
Как делать SQL-инъекцию через User Agent
Вы тоже уже успели об этом подумать? Если программисты забывают о том, что User Agent'у не стоит доверять как абсолютно всему остальному, приходящему от пользователей, то значит там могут не фильтроваться теги и специальные символы? Пример этому мы уже увидели — на всех приведённых выше сайтах не фильтруется и не заменяются специальные символы в теге <script>.
А что если специальные символы тоже не фильтруются и значение User Agent сохраняется в базу данных? А это уже SQL-инъекция! Среди приложений, которые могут сохранять значения User Agent в базу данных: программы для сбора статистики веб-сайтов, метрики, виджеты «браузеры последних посетителей» и т. д.
В bWAPP есть пример инъекции через User Agent. Там она называется «SQL Injection — Stored (User-Agent)».
Если в качестве значения User Agent ввести что-нибудь вроде
То на выходе мы получим замечательное сообщение:
Конечно же, там где SQLi, там и sqlmap. Чтобы протестировать SQL-инъекцию в User Agent используйте опцию —user-agent, в которой место инъекции укажите символом * (звёздочкой). Пример команды:
Конечно же, уязвимость найдена и выведен список баз данных:
На странице https://kali.tools/?p=816 вы найдёте ссылки на подробнейшие инструкции по sqlmap и скоро будет добавлена ещё одна — SQL инъекции в User Agent, Referer, Cookie и произвольные HTTP заголовки.
Как подменить User Agent в командной строке
Чтобы поменять User Agent для утилиты cURL используйте опцию -A. Сравните вывод двух команд:
Также смотрите статьи:
- Как в PhantomJS поменять значение User Agent
- PHP cURL как установить значение User Agent ИЛИ как сделать так, чтобы сервера не блокировали запросы cURL?
Как подменить User Agent в Burp Suite
В Burp Suite перейдите на вкладку «Proxy» → «Options», найдите раздел «Match and Replace» (совпадения и замена). Там уже присутствует несколько правил по замену User Agent для эмуляции запросов от различных устройств.
Вы можете включить имеющиеся правила или создать новое. Для создания нового нажмите кнопку «Add».
В качестве «Type» выберите «Request header».
В качестве значения поля «Match» укажите
В поле «Replace» впишите значение, на которое будет заменён HTTP заголовок пользовательского агента. Обратите внимания, что поскольку мы заменяем заголовок целиком, то начинаться он должен со строки «User-Agent: ».
В поле «Comment» впишите любой комментарий, чтобы быстро вспомнить, для чего нужен этот заголовок.
Поставьте галочку «Regex match».
Включите его поставив галочку в столбце «Enabled».
По умолчанию Burp Suite в качестве прокси прослушивает localhost:8080.
Если вы хотите, чтобы Burp Suite стал перехватывающим прокси для веб-браузеров, в том числе для HTTPS трафика, то смотрите инструкциям в статье «Настройка Burp Suite для работы с браузерами».
Если вы хотите использовать свой собственный SSL сертификат, то смотрите статью «OpenSSL: принципы работы, создание сертификатов, аудит». В этой статье написано, как создавать SSL сертификаты и даны обновлённые инструкции по добавлению SSL сертификатов в доверенные, как на уровне системы, так и на уровне веб-браузеров (современные веб-браузеры обычно игнорируют SSL сертификаты, которые являются доверенными на уровне системы!).
С cURL можно использовать опцию -x, чтобы отправить запрос через Burp Suite, например:
Как можно увидеть, значение заголовка User Agent было заменено и мы получили сообщение об ошибке, которая может означать SQL-инъекцию.
User-Agent Impersonation
На этой странице нам показывают сообщение:
Извините, но не похоже, что вы используете Safari Browser на Apple iPad. Эта страница использует JavaScript браузера и отпечатки ОС для принятия решения, разрешён ли ваш user-agent.
Дальше есть вариант моего решения, но я рекомендую самостоятельно решить этот пример — он не такой простой, как кажется.
Данный пример готовился как самый первый в этой статье, поскольку обход проверки кажется элементарным. Казалось бы, выбираем в Инструментах разработчика правильный User Agent, вроде такого
и задание пройдено.
Но что-то пошло не так:
Страница никак не хочет принимать подходящий под условие User Agent.
Я посмотрел исходный код и обнаружил там:
Я не знаю, насколько всё в порядке с этим кодом, возможно, в современных браузерах он просто неадекватен. Но можно заметить, что очень легко поломать логику всех этих многочисленных проверок добавив в конце « || 1» что означает «ИЛИ истина». То есть независимо от того, какой будет результат всех предыдущих проверок, это условие всё равно всегда будет возвращать «Истина».
Такой подход устроил механизм проверки Пользовательского Агента и задание пройдено.
Но этот метод относится уже к атакам на JavaScript, связанные статьи читайте по ссылкам:
User-Agent: что такое, какую информацию содержит? Определение и изменение Юзерагента
User Agent – это клиентское приложение, используемое браузерами и прочими веб-приложениями для показа сайту информации о себе в соответствующей строке.
Для чего нужен и из чего состоит User Agent?
Все браузеры, мобильные устройства, поисковые роботы содержат Юзерагент. В строке отображается вся необходимая информация о компьютере или телефоне, версии браузера, операционной системе, роботе.
Так же строки с описанием User-agent можно прописать в файле Robots.txt, они важны для корректной работы поисковых роботов на сайте. Посредством строк, от всех либо от определенных поисковиков можно скрыть данные, содержащиеся на ресурсе: конкретную страницу либо сайт целиком, определенный вид файлов, личные данные пользователей и прочее. Так, с помощью User-agent, вы можете скрыть, например, только картинки, либо открыть для индексации исключительно их.
Запретить сканировать информацию можно посредством инструкции либо всем ботам, либо роботу конкретного поисковика, распознающегося User Agent.
В строке с описанием User Agent содержится следующая информация:
- Название и версия браузера.
- Язык.
- Версия операционной системы.
- Программное обеспечение, установленное на используемом устройстве.
- Тип устройства, с которого пользователь зашел на сайт.
Менять Юзерагент можно с целью изменения параметров индексации ресурса, скрытия информации, которую не стоит показывать посторонним лицам, и актуализации старого браузера, чтобы больше не получать уведомления о необходимости установки другого приложения.
Для каждого браузера и операционной системы устройства в строке прописываются разные инструкции.
Как определить User Agent?
Данные о запросах, поступающих на сайт, вы можете найти в виде логах сервера. Функцию сохранения журналов сервера можно включить в Панели управления аккаунтом хостинга.

В дальнейшем журналы сервера можно будет найти в директории сайта domains, а именно в папке логов logs.
Каждая строка содержит информацию об одном конкретном запросе. К примеру:
- 55.22.33.11 – IP адрес устройства, с которого пришел запрос
- seob.ru – название сайта, на которой поступил запрос
- «Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36» – User-Agent браузера, используемого интернет-пользователем или роботом, зашедшим на сайт
Огромное количество строк User Agent хранятся в базе данных browscap.org. Если данную строку найти в базе, то вы получите множество параметров, таких как название и версия веб-браузера, операционная система и многое другое. База Юзерагент регулярно обновляется и ее можно скачать на сайте browscap.org совершенно бесплатно.
Зачем сайту знать с каким User-Agent к нему пришли?
Как вы уже поняли, строка Юзерагент помогает узнать, откуда был сделан запрос на сайт. Это может сделать компьютер, смартфон, робот поисковой системы или программное обеспечение. Знать данную информацию нужно, чтобы:
- перенаправить запрос со смартфона на мобильную версию сайта;
- применить соответствующие стили для определенного браузера;
- заблокировать доступ к ресурсу различным утилитам;
- собрать статистику о том, сколько запросов с каких устройств приходит;
- создать правила для обработки запросов, приходящих от ботов и так далее.
Чтобы решать вышеперечисленные задачи, современному вебмастеру не обязательно уметь разрабатывать скрипты на PHP, потому что для многих популярных движков, таких как WordPress, уже давно разработаны специальные расширения со всеми подходящими функциями. Вам нужно лишь отыскать соответствующий плагин.
User Agent и поисковые роботы
Поисковый гигант Google создал огромное количество роботов, отвечающих за индексацию контента различного вида, содержащегося на сайтах, а также устройств, с которых пользователи пользуются интернетом.
Главным поисковым ботом Google является Googlebot. Если вам нужно полностью заблокировать сайт от индексации в поисковой системе, в файле Robots агентом пользователя для Googlebot нужно указать условие, скрывающее ресурс от ботов поисковика.
Еще можно скрыть определенную часть контента. Для этого необходимо прописать правило для агента, индексирующего контент. К примеру, желая закрыть от индексации изображения на сайте, условие указывается для Googlebot-Image. Вот пример, как данная операция смотрится в файле Robots:
Вы также можете скрыть от робота весь сайт, кроме определенного типа контента, к примеру, видео. Тогда запретите Googlebot индексировать ресурс целиком, а агентом, которому индексация разрешена, пропишите Googlebot Video.
Нет нужды вносить какие-либо изменения в robots.txt, если вы хотите, чтобы сайт был открыт для сканирования поисковыми ботами полностью.
Как запретить доступ к сайту по User-Agent?
Вам понадобится использовать несколько правил в файле .htaccess. Давайте рассмотрим пример с применением правил, которые закрывают доступ к ресурсу через утилиту java:
После User-Agent, указанного в первой строке, находится юзерагент утилиты Java. Вы видите, что ему прописано имя bad_bot. Вторая строка начинается с команды Deny, блокирующего доступ для запроса, отправленного bad_bot.
Вместо Java можно прописать юзерагент любого бота и браузера, а также присвоить им имя bad_bot.
Чтобы проверить правильность внесенных изменений, нет необходимости заходить на сайт с разных устройств. Для современных браузеров придумано изобилие плагинов с функцией замены User-Agent.
Зачем менять User-Agent?
К замене юзерагента вебмастера прибегают с целью проверки правил для поисковых роботов и утилит.
Любой браузер, формируя страницу ресурса в читабельный для пользователя вид, по-своему обрабатывает данные, взятые с сервера. Так, если в браузере Chrome указать User Agent браузера Opera, то сайт может отобразиться некорректно. В связи с этим, закончив тестирование, никогда не забывайте возвращать изначальные данные User-Agent.
Как изменить user agent в браузерах?
Mozilla Firefox
Способ подходит для версии Mozilla Firefox от 34.0 и новее. Напишите в адресной строке about:config, а затем создайте строку, назвав ее general.useragent.override. Изначально данной строки не существует. В ее значение впишите содержание User Agent.
Chrome
Не подойдет для версий браузера, старее 26.0.1410.64. Откройте Chrome, введя ключ —user-agent=”впишите новую строку User-agent”. К примеру, если на вашем ПК установлен Windows, используйте сочетание клавиш Win+R и укажите в поле «Открыть» chrome –user-agent=”MyBrowser”. Для проверки значения, наберите about: в адресной строке.
Opera
Для тех, у кого версия Opera 12.15 и новее. В адресной строке напишите opera:config#UserPrefs|CustomUser-Agent, а затем в выделенном поле Custom User-Agent наберите новое значение для строки Юзерагент. Не забудьте сохранить изменения внизу страницы.
Safari
Для версий Safari 5.1.7 и новее. Перейдите в меню Разработка. Вызвать панель можно, кликнув Alt. Меню может быть отключено, а чтобы его включить, зайдите в Правка – Настройки – Дополнения, поставив отметку возле Показывать меню разработка в строке меню. Далее в меню перейдите в Разработка – Пользовательский агент. Тут уже есть список из некоторых юзерагентов, но если ни один из предложенных вам не нужен, нажмите Другой и напишите необходимую вам строку.
Internet Explorer
Способ актуален для версий от Internet Explorer 10 и новее. Нажмите клавишу F12 чтобы открыть Средства разработчика, там зайдите в меню Сервис – Изменить строку агента пользователя. Здесь тоже есть готовый список из нескольких строк User Agent, но если вам они не подходят, нажмите Особая и введите необходимую строку, после чего кликните Добавить, а затем выбрать из списка и Установить.
Огромный минус данного способа заключается в том, что после закрытия браузера он перестает работает и, как только браузер запустится по-новому, придется заново заходить в список и выбирать созданный user-agent.
Но есть альтернативный вариант. Исправьте строку Юзерагент в реестре. Так она будет работать и после закрытия веб-браузера. Но у данного метода тоже есть недостаток. Вы не сможете поменять строку на какую только пожелаете. Она содержит различные значения реестра, разделенные символом «;».
Для изменения значения относительно всех пользователей используйте:
Для одного пользователя:
Изначально здесь лишь один ключ По умолчанию или default. Создайте три параметра строк:
- Compatible.
- Platform.
- Version.
Изменения заработают после перезагрузки браузера. Например:
Как изменить User Agent на мобильных устройствах?
В большинстве смартфонов строка user agent изменяется посредством встроенных настроек браузера.
Стандартный браузер для Android
User-Agent меняется в настройках браузера. За это отвечает опция UAString. Хотя изначально данное меню скрыто. Напишите в адресной строке about:debuq и кликните Поиск, чтобы сделать опцию видимой.
Dolphin Browser
Способ работает для Dolphin Browser версии 11.4.2 и выше. Меняется строка в меню Настройки – Специальные – Персонализация – Пользовательский агент. Предлагаются варианты «Android», «iPad», «iPhone», «Пользовательский» и «Рабочий стол». В «Пользовательском» можно набрать свою строку User Agent.
Как изменить User Agent в PHP?
Подходит для версии PHP 5.6 и новее. Есть два способа изменения юзерагента в PHP:
- В файле php.ini изменить параметр user_agent.
- Применить stream_context_create в ходе выполнения скрипта.
Пример применения для file_get_contents:
Пример для Soap Client:
Списки и примеры строк User Agent
Desktop браузеры:
- Mozilla Firefox 36 (Win 8.1 x64): Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
- Google Chrome 53 (Win 10 x64): Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36
- Google Chrome 40 (Win 8.1 x64): Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36
- Opera 40 (Win 10 x64): Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.101 Safari/537.36 OPR/40.0.2308.62
- Opera 12.17 (Win 8 x64): Opera/9.80 (Windows NT 6.2; WOW64) Presto/2.12.388 Version/12.17
- Apple Safari 5.1 (Win 8 x64): Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2
- Internet Explorer 11 (Win 10 x64): Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko
- Internet Explorer 11 (Win 8.1 x64): Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; ASU2JS; rv:11.0) like Gecko
- Microsoft Edge (Win 10 x64): Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586
Мобильные браузеры:
- iPhone: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25
- Android 2.3.5 (Philips W632): Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ru; Philips W632 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Планшеты:
iPad: Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25
Поисковые системы:
- Яндекс: Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)
- Google: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
- Bing: Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
- Yahoo! Slurp: Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
- Mail.ru: Mozilla/5.0 (compatible; Linux x86_64; Mail.RU_Bot/Fast/2.0; +http://go.mail.ru/help/robots)
- Sputnik: Mozilla/5.0 (compatible; SputnikBot/2.3; +http://corp.sputnik.ru/webmaster)
Роботы, боты, анализаторы:
- Ahrefs: Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)
- Majestic: Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)
- SMTBot: Mozilla/5.0 (compatible; SMTBot/1.0; +http://www.similartech.com/smtbot)
- linkdex: Mozilla/5.0 (compatible; linkdexbot/2.2; +http://www.linkdex.com/bots/)
- Exabot: Mozilla/5.0 (compatible; Exabot/3.0; +http://www.exabot.com/go/robot)
- StatOnline.ru: Mozilla/5.0 (compatible; StatOnlineRuBot/1.0)
Заключение
Благодаря User-Agent вы можете ограничивать ботам доступ к страницам своего ресурса, анализировать, с какого браузера/устройства/IP/Операционной системы был сделан запрос и подгонять свой веб-ресурс под различные браузеры, чтобы он отображался корректно для всех пользователей вне зависимости от того, с каких устройств они переходят.
User-Agent
Заголовок запроса User-Agent — это строка с характеристиками, по которым сервера и сетевые узлы могут определить тип приложения, операционную систему, производителя и/или версию пользовательского агента.
Обратите внимание: Показывать ту или иную страницу в зависимости от характеристик пользовательского агента — дурная практика. Почему не стоит так делать, читайте в статье «Определение браузера по пользовательскому агенту».
| Тип заголовка | Заголовок запроса |
|---|---|
| Запрещённое имя заголовка | Нет |
Синтаксис
Общий формат для веб-браузеров:
Директивы
Идентификатор продукта — его название или кодовое имя.
Может быть пустым или содержать дополнительную информацию. Например, информацию о продукте.
Строка UA в Firefox
Подробные сведения о user agent строках в Firefox и других браузерах, основанных на движке Gecko, вы найдёте в справочнике.
Строка UA в Firefox разбита на 4 части и одну общую метку для всех:
- Mozilla/5.0 — общая метка, которая сообщает, что браузер совместим с Mozilla. По историческим причинам сегодня такую метку отправляет почти каждый браузер.
- platform указывает платформу, на которой работает браузер (Windows, Mac, Linux, Android и т.д.), а так же, мобильный ли это телефон. В телефонах на Firefox OS (en-US) указывается только Mobile , поскольку Firefox OS построена на веб-технологиях. Обратите внимание, platform может содержать несколько значений, разделённых ; . Подробная информация и примеры ниже.
- rv:geckoversion указывает релизную версию Gecko (например, «17.0«). В последних браузерах geckoversion совпадает с firefoxversion.
- Gecko/geckotrail указывает, что браузер основан на Gecko (на компьютерах geckotrail — всегда строка 20100101 ).
- Firefox/firefoxversion обозначает, что браузером является Firefox, и указывает его версию (например, «17.0«).
Примеры
Строка UA в Chrome
Строка user agent в Chrome и браузерах, основанных на движке Chromium/Blink, аналогична строке Firefox. Для совместимости добавлены строки KHTML, like Gecko и Safari .
Примеры
Строка UA в Opera
Браузер Opera также основан на движке Blink, поэтому его строка user agent совпадает со строкой Chrome, только в конце добавляется «OPR/<version>» .
Примеры
В старых версиях Opera, на базе движка Presto, строки выглядят так:
Строка UA в Microsoft Edge
Браузер Microsoft Edge также основан на движке Blink, поэтому его строка user agent совпадает со строкой Chrome, только в конце добавляется «Edg/<version>» .
Примеры
Строка UA в Safari
В этом примере строка user agent представлена в мобильной версии Safari и содержит слово «Mobile» .
What does "KHTML, like Gecko" mean in a user-agent string?
I understand that KHTML is the HTML Layout Engine used, but what significance does the «like Gecko» part have? Why is it there?
Is there a historical reason similar to the «Mozilla» part of the User Agent String?
![]()
1 Answer 1
Konqueror began to pretend to be "like Gecko" to get the good pages, and called itself Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko) .
For more information, read:
- Andersen, Aaron (September 3, 2008) — History of the browser user-agent string — WebAIM
![]()
-
The Overflow Blog
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.3.11.43304
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.