Что такое 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
Комментарии (34)
aamonster
11.12.2019 11:18Честно говоря, не думаю, что вы достаточно значимы, чтобы Гугл или Майкрософт рассматривали вас, как конкурентов. Скорее они просто не хотят запиливать поддержку ещё одного браузера и тестировать для него.
Ну а первый случай (со смещённым полем) – наверняка костыль для бага в какой-то вашей старой версии. Баг поправили, костыль остался.
А подходом "всегда маскироваться под другой браузер" вы пытаетесь развязать очередной круг войны за UserAgent. Вас начнут детектить как-то иначе, добавив лишних скриптов и т.п., что приведёт к бОльшему количеству глюков на сайтах.
Shpankov Автор
11.12.2019 12:05+2Честно говоря, не думаю, что вы достаточно значимы, чтобы Гугл или Майкрософт рассматривали вас, как конкурентов. Скорее они просто не хотят запиливать поддержку ещё одного браузера и тестировать для него.
Во-первых, вы почему-то пропустили мимо глаз те примеры, что мы привели. Стоит поменять "Vivaldi" на что-то иное, даже просто на слово с опечаткой, как сервисы волшебным образом начинают работать. А во-вторых, под Vivaldi ничего не нужно тестировать — мы используем ядро Chromium, именно поэтому при маскировке под тот же Chrome всё начинает работать.
Ну а первый случай (со смещённым полем) – наверняка костыль для бага в какой-то вашей старой версии. Баг поправили, костыль остался.
Не видите противоречия в своих словах в рамках даже одного комментария? Сначала вы предполагаете, что под Vivaldi никто не тестирует свой код, а теперь предполагаете, что тестируют и даже ставят заплатки.
А подходом "всегда маскироваться под другой браузер" вы пытаетесь развязать очередной круг войны за UserAgent.
Opera Presto много лет по умолчанию маскировалась под другие браузеры. Это позволило избежать множества проблем. Сегодня мы просто повторяем тот же приём для решения аналогичных проблем.
aamonster
11.12.2019 17:06+1Я не пропустил примеры, а именно что прочитал их.
Всё просто: допустим, пять юзеров засабмитило тикет "когда смотрю сайт через Вивальди – на сайте такой-то глюк". Хорошее, но трудоёмкое решение – починить сайт (желательно – чтобы вообще не надо было проверять UserAgent). Плохое, но быстрое решение – сказать "мы не поддерживаем Вивальди, пользуйтесь Chrome/Firefox/Edge" и поставить заглушку.
Случай со смещённым полем – один раз (и в одном конкретном продукте) при разборе тикетов воткнули костыль под конкретный браузер, а при приходе следующих тикетов (или тикетов для других сайтов – которые разбирала другая команда) уже не стали возиться. В чём противоречие?
ЗЫ: Не, я в любом случае желаю вам удачи (разнообразие браузеров, даже на одном движке – скорее плюс: хочется, чтобы сайты опирались на стандарты, а не на browser quirks). Просто конкретный шаг на пути вызывает некоторые сомнения :-)
Shpankov Автор
11.12.2019 19:30Всё просто: допустим, пять юзеров засабмитило тикет "когда смотрю сайт через Вивальди – на сайте такой-то глюк".
Эти пять пользователей засабмитили репорт в нашу BTS. Без исключений. Любые проблемы в первую очередь ассоциируются с браузером. Особенно, если в других браузерах всё работает.
Далее, если даже по нашей просьбе пользователь шлёт запрос в техподдержку того сайта (тот же Ростелеком), то получает стандартную отписку — используйте другой браузер.
aamonster
11.12.2019 19:45Почему вы думаете, что засабмитят именно вам? Браузер в стадии беты разве?
Ну и стандартная отписка с N-го раза может быть продублирована проверкой UA на сайте для экономии времени саппорта.
Shpankov Автор
12.12.2019 01:02Почему вы думаете, что засабмитят именно вам?
Потому, что я лично работаю с этими баг-репортами.
Grey83
11.12.2019 12:37Изменение относится только к десткопной версии браузера?
И сможет ли как-то пользователь повлиять на отдаваемый user-agent без установки расширения?Shpankov Автор
11.12.2019 13:03Изменение относится и к мобильной версии тоже. Оно будет попозже.
Влиять на User Agent пользователь может, естественно — можно редактировать через средства разработчика, но это муторно и долго, а можно расширением. Естественно, в расширении не будет опции "Маскироваться под Vivaldi".
den_po
13.12.2019 14:27Всегда мог через комстроку. Но не для конкретных сайтов.
vivaldi --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36"
Grey83
13.12.2019 17:02Мне пока как-то проще использовать расширение User-Agent Switcher for Chrome (на опере стоит версия для оперы)
dss_kalika
11.12.2019 13:11Подобные решения противоречат самой идее открытости интернета для всех и приводят к ещё большему укреплению позиций крупных игроков браузерного рынка, тем самым возвращая нас в каменный век интернета.
Люди часто путают «мы можем делать тут что хотим» и «нас за это не забросают камнями пользователи».
Интернет открыт для любого количества браузеров. Но разработчикам и пользователям это не очень нужно. Так что проблема не в ограничениях )
Для разработчиков «конкурентов крупных игроков» это грустно, конечно, но что поделать.
Имхо.Shpankov Автор
11.12.2019 13:38Интернет открыт для любого количества браузеров. Но разработчикам и пользователям это не очень нужно.
Поправка: разработчикам и пользователям нужен открытый интернет. Он не нужен большим игрокам, стремящимся сохранить своё главенствующее и, иногда, монопольное положение.
dss_kalika
11.12.2019 15:51открытый интернет не значит, что всё что в него вкинуто кому то нужно. Более того — это скорее значит наоборот.
мне, к примеру, как разработчику и пользователю было бы намного проще, если б был только один браузер (конечно, если он покрывает все мои потребности). Один банк, один трейдер, один туроператор и прочая-прочая. Конечно, с лучшими ставками итп. Просто потому что мне нужна «услуга», а не поставщик и тратить время на выбор из одинаковых альтернатив как то… не эффективно. И, тем более, разрабатывать интеграцию с миллионом апи под миллион одинаковых систем.
Монополии, которые приводят к повышению цен и снижению качества, безусловно, плохи.
Но и бесконечная свалка так себе продуктов — совершенно не то, что кому то надо.
Shpankov Автор
11.12.2019 19:35открытый интернет не значит, что всё что в него вкинуто кому то нужно. Более того — это скорее значит наоборот.
Открытый интернет — это значит, что никто не прижимает других участников рынка и не выдавливает пользуясь своим весом и техническими возможностями. Открытый интернет — это прежде всего честный интернет.
мне, к примеру, как разработчику и пользователю было бы намного проще, если б был только один браузер (конечно, если он покрывает все мои потребности).
Так уже было. Во времена IE. Плохо было всем — и разработчикам, и пользователям.
Один банк, один трейдер, один туроператор и прочая-прочая.
И одна цена. Очень высокая. Куда вы с подводной лодки денетесь?
Но и бесконечная свалка так себе продуктов — совершенно не то, что кому то надо.
Это вы расскажите эволюции и естественному отбору, как они работают неправильно с мусором :-)
dss_kalika
12.12.2019 11:09И одна цена. Очень высокая. Куда вы с подводной лодки денетесь?
Конечно, с лучшими ставками итп.
Поэтому и написал.
Это вы расскажите эволюции и естественному отбору, как они работают неправильно с мусором :-)
Они правильно работают с мусором. Остаётся только лучшее.
Так уже было. Во времена IE. Плохо было всем — и разработчикам, и пользователям.
Плохо было не потому что он был один, а потому что продукт — так себе.
Открытый интернет — это значит, что никто не прижимает других участников рынка и не выдавливает пользуясь своим весом и техническими возможностями. Открытый интернет — это прежде всего честный интернет.
А я думал это я в мире розовых пони живу.
Открытый — заходи кто хочет. Ничего про честность или невыдавливание в этом слове нет.Shpankov Автор
12.12.2019 12:10Они правильно работают с мусором. Остаётся только лучшее.
Только если есть ещё 99% мусора. Для того, чтобы найти одну удачную комбинацию, нужно проверить миллион менее удачных.
Невозможно родить на пустом месте Энштейна — он может появиться только в результате отбора из триллионов менее удачных комбинаций ДНК.
Открытый — заходи кто хочет. Ничего про честность или невыдавливание в этом слове нет.
А вы сами поразмышляйте над своими словами. Открытый, заходи кто хочет. И тут — опаньки, стоит гигант и не пускает мелких игроков на рынок. Полностью (как Microsoft и их десктопный рынок) или частично (например, отправляя со своих популярных сервисов искажённые данные конкурентам в соответствии с определённым User Agent). Уже получается как-то не очень открытый интернет. Суть понимаете?
dss_kalika
12.12.2019 12:33А вы сами поразмышляйте над своими словами. Открытый, заходи кто хочет. И тут — опаньки, стоит гигант и не пускает мелких игроков на рынок. Полностью (как Microsoft и их десктопный рынок) или частично (например, отправляя со своих популярных сервисов искажённые данные конкурентам в соответствии с определённым User Agent). Уже получается как-то не очень открытый интернет. Суть понимаете?
Вполне открытый. Если я в маечке с радугой и прилизанными волосами зайду в бар для байкеров и резонно молучу в лицо ногой — это не значит, что бар закрытый. =) Суть понимаете? Открытость — не значит, что вам будут рады.Shpankov Автор
12.12.2019 12:45Т.е. по вашей логике, гиганты интернет-индустрии, ограничивающие вход на этот рынок для других игроков, являются полноправными хозяевами интернета? :-)
Открытость — это когда все играют по одним и тем же правилам. Иначе получается все равны, но некоторые ровнее.
dss_kalika
13.12.2019 10:43Все и так играют по одним и тем же правилам. Если на боксёрский ринг выходит хлюпик 45кг весом и качок в 150кг мышц — это не значит что ринг не «открыт». И правила для них обоих одни и теже.
Т.е. по вашей логике, гиганты интернет-индустрии, ограничивающие вход на этот рынок для других игроков, являются полноправными хозяевами интернета? :-)
ранок — он и есть рынок.Shpankov Автор
13.12.2019 13:13И правила для них обоих одни и теже.
Я же вам только что примеры приводил, как правила не одни и те же. Вы что, совсем не читаете? На своей волне? :-)
ранок — он и есть рынок.
Ваш рынок — это монополии и задранные до небес цены. Неужели реально не понимаете?
dss_kalika
13.12.2019 13:40Я же вам только что примеры приводил, как правила не одни и те же. Вы что, совсем не читаете? На своей волне? :-)
конечно одни и те же. Если бы вы били огромной корпорацией — вы бы смогли делать тоже самое.
Ваш рынок — это монополии и задранные до небес цены. Неужели реально не понимаете?
Тем не менее, это тоже рынок. Рынок не обязан быть честным.Shpankov Автор
13.12.2019 14:10Если бы вы били огромной корпорацией — вы бы смогли делать тоже самое.
Смогли — не значит делали бы. Разницу понимаете? Мы, например, понимаем, что такое поведение вредит рынку в целом, хоть и даёт временный выигрыш в короткой перспективе. Именно так было с Internet Explorer: они на несколько лет вышли в лидеры благодаря своей агрессивной политике на десктопах, но в результате навсегда потеряли рынок браузеров, в том числе и мобильный.
Тем не менее, это тоже рынок. Рынок не обязан быть честным.
Это аморальный и циничный рынок. И вы считаете это нормальным. Забавно. Впрочем, вы так считаете ровно до того момента, пока вас лично это не коснётся и пока вас не начнут втаптывать в пыль более крупные игроки. Интересно, что вы тогда скажете. "Всё нормально, это рынок, я должен сдохнуть"? :-)
dss_kalika
13.12.2019 14:18Смогли — не значит делали бы. Разницу понимаете? Мы, например, понимаем, что такое поведение вредит рынку в целом, хоть и даёт временный выигрыш в короткой перспективе. Именно так было с Internet Explorer: они на несколько лет вышли в лидеры благодаря своей агрессивной политике на десктопах, но в результате навсегда потеряли рынок браузеров, в том числе и мобильный.
А они делают. Потому что — открытость. Кто хочет приходит и что хочет делает. О чём я и говорю.
В слове «открытость» нет ни «честности» ни «не навреди».
Это аморальный и циничный рынок. И вы считаете это нормальным. Забавно. Впрочем, вы так считаете ровно до того момента, пока вас лично это не коснётся и пока вас не начнут втаптывать в пыль более крупные игроки. Интересно, что вы тогда скажете. «Всё нормально, это рынок, я должен сдохнуть»? :-)
А вы считаете нормальным говорить за других что они считают нормальным?
ЗЫ: ну аморальный и циничный. Что дальше? Не хотите аморальности и циничности — не ходите в него. Вы же знали куда идёте.Shpankov Автор
13.12.2019 19:24А они делают. Потому что — открытость.
Ещё раз. То, что они делают — это противоположность открытости. Это монополизм, который даже в самом бизнесе признан отрицательным явлением.
Вы же знали куда идёте.
А вы видите какой-то выбор? Ну, кроме лечь и сдохнуть? :-)
dss_kalika
15.12.2019 09:33Ещё раз. То, что они делают — это противоположность открытости. Это монополизм, который даже в самом бизнесе признан отрицательным явлением.
Отрицателен не сам монополизм, а то, что следует за ним. Так то он может быть и положительным явлением, при желании.
Ещё раз — открытость никак не связана ни с отрицательными явлениями, ни с тем, что всё должно быть честно и маленький игрок должен иметь возможность завалить большого игрока. Это лишь значит что игроки могут туда войти. На свой страх и риск.
А вы видите какой-то выбор? Ну, кроме лечь и сдохнуть? :-)
А рынок за вас ещё и должен обеспечить куда вам идти? о_ОShpankov Автор
15.12.2019 12:28Так то он может быть и положительным явлением, при желании.
Монополизм в условиях капиталистической рыночной экономики является отрицательным по определению.
Ещё раз — открытость никак не связана ни с отрицательными явлениями, ни с тем, что всё должно быть честно и маленький игрок должен иметь возможность завалить большого игрока. Это лишь значит что игроки могут туда войти. На свой страх и риск.
Открытость — это равные условия для всех. И именно открытость позволяет другим войти на рынок. Если же монополист ставит какие-то преграды для небольших участников, это и означает ограничение открытости, т.е. закрытость. И не важно, насколько она велика, такая закрытость — полный запрет или частичный.
А рынок за вас ещё и должен обеспечить куда вам идти?
Рынок в контексте нашего разговора — это определённая система взаимоотношений людей в процессе производства и потребления материальных благ. И для того, чтобы это производство и потребление работало максимально эффективно в интересах всех людей, эта система должна предоставлять равные условия для всех участников, не позволяя одним ставить преграды другим. Конкуренция должна быть честной — вне зависимости от размера компании она должна побеждать остальных более высоким качеством, более низкими ценами, лучшим соответствием запросам потребителей, и т.д. А когда крупная компания начинает бороться с конкурентами нерыночными инструментами вроде установления собственных, выгодных только себе правил, то страдают и другие производители, теряющие способность предоставлять лучшие блага потребителям, и сами потребители, получающие заведомо худшие блага, чем это возможно.
Я вам уже приводил пример Microsoft и IE. Благодаря монополизму, Microsoft различными способами ограничила доступ на рынок десктопов для всех остальных участников рынка браузеров. Это было и навязывание своего браузера потребителям за счёт его встраивания в систему, и различные технологические преграды вроде реализации поддержки веб-стандартов с заведомо изменёнными методами, что заставляло веб-разработчиков подгонять свой код под особенности IE и делало невозможной корректную работу других браузеров при просмотре этих веб-сайтов. В результате IE остановился в развитии и остановил развитие всей отрасли, а пользователи были вынуждены работать в устаревшем браузере, с однооконным интерфейсом, без вкладок, без возможности пользоваться современными интернет-технологиями.
Вам в школе и институте это, конечно, не преподавали, поэтому вы и не понимаете. Хуже, что вы не хотите этого понимать и защищаете монополизм — возможно, считая его той вершиной, к которой нужно стремиться. Это понятно в условиях современного мирового капитализма, когда всех приучают быть индивидуалистами и жить только сегодняшним днём. Но на самом деле при капитализме монополизм несёт вред как потребителям, так и самому монополисту — пример Microsoft тому подтверждение. Из мирового гиганта компания превратилась в нишевого игрока, потерявшего все перспективы дальнейшего развития.
CapricornTV
11.12.2019 15:41Ну и хорошо, а то приходится жить с расширением, которое UA меняет на хром. Для меня проблема актуальна больше всего на твиче — если смотреть представившись вивальди, то задержка видео становится 20-30 секунд, и ещё почему-то кадры пропускаются, вместо 60 может быть почему-то 50. Заходишь как гугол хром — задержка полторы секунды и никаких пропущенных кадров, вот такие дела.
xtreye
12.12.2019 01:46стоит поменять в User Agent текст с названием браузера на ошибочный, вроде «Vivaldo» или «Vxvaldi», и всё начинает волшебным образом работать
Помнится такая же проблема с сайтом Microsoft была у браузера Opera, когда смена имени браузера User Agent на «Oprah» имела тот же волшебный эффект. Чуть ли не до суда дело дошло
mm3
Такая простая строка и так много раскрывает личной информации о пользователе. Настолько много что является частью уникального идентификатора пользователя и даже используется для подбора эксплоитов злоумышленниками. И всё равно все браузеры прилежно отсылают её в каждом запросе на любой сервер.
Shpankov Автор
Это реальность. Такая ситуация с UAString существует уже не одно десятилетие.