Реверсивная логика

Что такое 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

Join the Conversation

  1. Лично мне такой шаг пока кажется перебором. Если честно, я никогда не сталкивался с подобными проблемами в Vivaldi, чего нельзя сказать о Maxthon. И Maxthon нашли выход: там пользователь может самостоятельно настроить UserAgent или выбрать нужный браузер из списка пресетов.

    В Opera с недавних пор тоже появился способ “притвориться” Chrome. Только в этом случае администрация сайта будет думать, что пользователей Оперы у них попросту нет, а значит, и заморачиваться с оптимизацией и фиксами под Оперу нет никакого смысла. Та же история и с Vivaldi. Не хотелось бы, чтобы через полгода мир напрочь забыл о том, что альтернативные браузеры вообще существуют…

    1. Перебор – это когда пользователи Ростелекома не могут войти в свой кабинет. И мы ничего сделать с этим не можем. Теперь проблема с Ростелекомом решена.

Comment