![](https://habrastorage.org/getpro/habr/post_images/d65/0f8/012/d650f80128123e5939f5aa792db84a2a.jpg)
Что такое User Agent
User Agent браузера — это строка с данными, отправляемая браузером веб-сайту при подключении, в которой содержатся данные об используемой платформе (операционной системе), архитектуре, а также версии используемого браузера.
Идея вполне положительная, если её использовать правильно — User Agent позволяет веб-сайту предоставлять максимум возможностей для пользователя согласно возможностям его браузера. Например, если это веб-сайт с программным обеспечением, он может предлагать соответствующую версию установочных файлов для загрузки, или если это страницы справки для настройки браузера, то пользователю будут предлагаться шаги, соответствующие его браузеру.
В чём же проблема?
Всё сказанное выше звучит замечательно до тех пор, пока какие-нибудь умелые веб-разработчики не напутают что-то с определением User Agent или, что много хуже, какая-нибудь большая компания не захочет использовать данную технологию в своих конкурентных целях.
Мы получаем достаточно много сообщений об ошибках, которые не относятся к работе кода нашего браузера. Иногда Vivaldi блокируется, его версия определяется некорректно, пользователю показываются всевозможные предупреждения — и всё это связано с User Agent.
Иногда происходят и более глупые ситуации, когда, например, разработчики какого-нибудь веб-сайта вдруг решают, что только браузеры, протестированные лично самими авторами веб-сайта, имеют право работать с его страницами, а все остальные такого права необоснованно лишаются. Подобные решения противоречат самой идее открытости интернета для всех и приводят к ещё большему укреплению позиций крупных игроков браузерного рынка, тем самым возвращая нас в каменный век интернета. И, если честно, это очень частая ошибка веб-разработчиков. Поэтому практически все браузеры содержат в своём User Agent не только информацию о себе, но и обо всех более-менее популярных браузерах. Посмотрите на User Agent браузера Vivaldi для Linux x64 — выглядит он примерно вот так:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.99 Safari/537.36 Vivaldi/2.9.1705.41
Большая часть этой строки унаследована от проекта Chromium, который, в свою очередь, унаследовал код от Safari и так далее. Несмотря на такой обманный трюк, это вполне работает в большинстве случаев, как будто представившись чужим именем вы можете войти в закрытый клуб. Если вы назовётесь правильно, вам все двери будут открыты!
Помимо перечисления имён, которые вам помогут войти в клуб избранных, вам ещё нужно избежать обратной ошибки — использования имён, которые создадут вам проблемы. Посмотрите на User Agent современной версии Opera или основанного на Chromium браузера Edge. Они не хотят, чтобы их перепутали с прошлыми инкарнациями, поэтому они не рискуют писать своё имя корректно в User Agent, предпочитая называться псевдонимами «OPR» и «EDG» соответственно. Понятно, что пользователи часто отправляют сообщения о данной ошибке, но на самом деле это не баг, а фича.
Ну, положим, вышеперечисленные случаи можно с натяжкой отнести к «ошибкам». Но ведь бывают и более гадкие ситуации. Мы часто встречаем веб-сайты, которые блокируют наш браузер, увидев в User Agent слово Vivaldi, никак не уведомляя нас о каких-либо проблемах. Иногда подобными трюками пользуются технологические тяжеловесы, с браузерами которых мы конкурируем. Когда такая блокировка происходит и пользователь видит стандартное сообщение об ошибке доступа к сайту, или если какая-то ущербная копия веб-сайта отправляется в его браузер, обычно пользователь считает виноватым браузер Vivaldi. Ведь странно думать, что кто-то может целенаправленно мешать работе браузера! Между тем, стоит поменять в User Agent текст с названием браузера на ошибочный, вроде «Vivaldo» или «Vxvaldi», и всё начинает волшебным образом работать. В таком случае нам приходится добавлять в код заплатки (не стоит называть их «исправлениями»), которые решают данную проблему.
У нас есть несколько примеров подобного поведения:
- На Google.com, если вы используете Vivaldi в User Agent и пришли после перенаправления, поле поиска на странице будет смещено вниз
- На Google Docs вы просто получите предупреждение, если зайдёте, как Vivaldi
- В веб-интерфейсе WhatsApp на Facebook с именем Vivaldi в User Agent вас не пустят на сайт и предложат пользоваться другим браузером
- На сайте Microsoft Teams (чат и совместная работа) с именем Vivaldi вам не дадут пользоваться их удивительным веб-сайтом
Вы также можете поэкспериментировать с любым доступным браузером, подставив в User Agent имя Vivaldi попробовав поработать с подобными веб-сайтами.
Во всех подобных случаях мы, естественно, пытаемся связаться с этими компаниями, чтобы попросить больше уважения к нашим пользователям. Вот, например, наш твит проекту WhatsApp о проблеме, обнаруженной четыре года назад. Причём, сигналили не только мы, но и наши пользователи, неоднократно за прошедшие годы. Безрезультатно.
Рубим головную боль
В общем, нам это надоело и в следующем релизе Vivaldi мы решили предпринять радикальные шаги. Учитывая, что интернет стремится к бесконечности, мы физически не можем проверить абсолютно все сайты на вопрос блокировки Vivaldi. Таким образом, создание списков веб-сайтов, для которых мы «не-Vivaldi», вообще не вариант. Вместо этого мы решили реверсировать. Для некоторых уважаемых нами (и уважающих нас) веб-сайтов мы будем представляться своим полным честным именем Vivaldi, а для всех остальных мы будем делать вид, что мы «Chrome». К слову, в число наших друзей мы относим также такие ресурсы, как duckduckgo.com, ecosia.org, qwant.com, startpage.com.
Есть в таком решении и серьёзные минусы. В частности, мы рискуем исчезнуть из статистики использования браузеров, собираемой как интернет-счётчиками, так и отдельными веб-сайтами. Но для нас важнее удобство наших пользователей, чем видимая популярность.
P.S. Есть и хорошие новости — в данный момент мы рассматриваем способ решить проблему с User Agent.
Используется фото Braydon Anderson