Google убирает из браузера Chrome строку 'user-agent'

    При посещении веб-сайта браузер или другое клиентское приложение обычно посылает веб-серверу информацию о себе. Эта текстовая строка является частью HTTP-запроса. Она начинается с User-agent: или User-Agent: и обычно содержит название и версию приложения, операционную систему компьютера и язык. Например, Chrome под Android посылает что-то вроде такого:

    User-Agent: Mozilla/5.0 (Linux; Android 9; Pixel 2 XL Build/PPP3.180510.008) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Mobile Safari/537.36

    Но разработчики Chrome считают, что это слишком подробная информация. Они объявили о решении отказаться от user-agent в браузере Chrome. Вместо этого Chrome предложит новый API под названием Client Hints, который позволит лучше контролировать, какая информация передаётся веб-сайтам.

    Это делается для защиты приватности, поскольку злоумышленники сейчас активно используют user-agent для фингерпринтинга и профилирования пользователей. Вообще ненормальна ситуация, когда user-agent транслируется всем подряд в автоматическом режиме.

    Строка User-Agent впервые появилась в Mosaic, популярном браузере начала 90-х. Тогда браузер отправлял просто строку с названием и версией браузера. Строка выглядела примерно так:

    Mosaic/0.9

    В первое время от этой информации было мало практической пользы. Через несколько лет вышел браузер Netscape, он перенял у предшественника строку user-agent и добавил к неё дополнительные детали, такие как операционная система, язык и т. д. Примерно с этого времени веб-сайты начали учитывать user-agent, чтобы выдавать клиенту правильный контент.

    Поскольку Mosaic и Netscape поддерживали разный набор функций, веб-сайты должны были использовать строку user-agent, чтобы определить тип браузера и избежать использования неподдерживаемых функций (например, фреймы поддерживались только Netscape, но не Mosaic).

    В течение многих лет определение версии браузера продолжало играть значительную роль в веб-разработке. Это вызвало неприятные побочные эффекты, когда мелким разработчикам браузеров приходилось имитировать популярные user-agent'ы для корректного отображения веб-сайта, поскольку некоторые компании поддерживали только основные типы user-agent.

    С ростом популярности JavaScript большинство разработчиков начали использовать библиотеки вроде Modernizer, которые определяют конкретный список функций HTML, CSS и JavaScript, которые поддерживает конкретный браузер, обеспечивая гораздо более точные результаты, чем user-agent.

    В результате основными пользователями user-agent остались представители рекламной индустрии, где компании используют характеристики браузера и операционной системы для фингерпринтинга пользователей, а большинство людей не знает, как противостоять этому, а многие даже не осознают угрозы, которую представляет собой тотальная слежка и пожизненное профилирование каждого человека.

    По иронии, Google считается одним из главных нарушителей приватности. Именно эта компания собирает самые подробные профили пользователей, собирая данные из электронной почты, GPS-трекеров, операционной системы Android и десятков своих веб-сервисов.

    Более того, именно Google в последнее время чаще всех злоупотребляла user-agent, блокируя доступ к своим сервисам пользователей с альтернативными браузерами. Чтобы открыть эти сервисы, альтернативным браузерам приходилось подделывать строку user-agent и выдавать себя за Chrome. Например, см. список поддельных user-agent для браузера Microsoft Edge, который тоже вынужден выдавать себя за Chrome на десятках сайтов.

    Gmail, Google Maps и другие сервисы работают медленнее во всех браузерах, кроме Chrome.

    Но бывает, что интересы отдельных разработчиков идут вразрез с интересами работодателя. Возможно, здесь как раз такой случай. Мы и раньше видели, как разработчики Chrome выражали протест некорректными действиями компании, когда она выкатывала сервисы «только для Chrome». Они выражали недовольство в твиттере и во внутренней корпоративной рассылке. Это действительно грамотные специалисты, у которых неадекватные решения руководства Google не могли вызвать ничего, кроме недоумения и фейспалма. Похоже, сейчас пришло время для конкретных действий.

    Команда разработчиков браузера Chrome начала поэтапный отказ от user-agent, начиная с версии Chrome 81. Отказ от user-agent значительно затруднит Google некорректные практики по продвижению своего браузера.

    Полностью удалить user-agent пока проблематично, поскольку многие сайты ещё полагаются на эту строку, но Chrome больше не будет обновлять версию браузера и укажет одинаковую версию ОС в user-agent для всех устройств.

    В частности, со всех мобильных устройств Chrome будет отправлять такую строку:

    Mozilla/5.0 (Linux; Android 9; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.1.2222.33 Mobile Safari/537.36

    Со всех настольных компьютеров строка будет выглядеть следующим образом, независимо от устройства и версии браузера:

    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.1.2222.33 Safari/537.36

    Переход с user-agent на Client Hints планируется завершить к версии Chrome 85, которая должна выйти в сентябре 2020 года. Другие разработчики браузеров, включая Mozilla Firefox, Microsoft Edge и Apple Safari, выразили поддержку этому шагу, хотя пока не огласили свои планы по аналогичным действиям.

    Подробнее о предлагаемой альтернативе Client Hints можно почитать в официальном репозитории Github. Это предложение пока не оформлено в виде стандарта, поэтому точная реализация может измениться к моменту выпуска официальных рекомендаций. Разработчикам рекомендуется следить за изменениями в репозитории, а также за примечаниями, которые публикуются с новыми версиями Chrome.

    Главное отличие Client Hints от user-agent в том, что сайты больше не будут пассивно получать информацию о браузере пользователя. Они будут вынуждены активно запрашивать её, а браузер может отказать в таком запросе, примерно так же, как сейчас некоторые браузеры блокируют сторонние куки.



    Дата-центр «Миран»
    Решения для аренды и размещения ИТ-инфраструктуры

    Комментарии 81

      0

      По-умолчанию этого точно не будет. Возможно, что нужно будет в заголовке или где-то еще отправлять параметры для включения этой опции. Если она не включена, то будет в консоли крик об этом…
      И вообще, кому надо, тот будет отправлять и так всю инфу в дополнительных параметрах запроса. Так что отключение юзер-агента ничем особо не спасет.

        +1
        Хром впереди планеты всей, увы.
        Их недавние манипуляции с SameSite cookies уже навели шороху, потому что обратной совместимости там нет и как раз за счет UA надо определять можно ли указывать SameSite. А теперь давайте UA отменим, почему бы и нет :)
          –2
          Лучше бы ввели по умолчанию лимит на размер загружаемых страниц. Глядишь, интернет перестал бы жиреть.
            –6
            Минусаторы, объясните, в чём я не прав?
              +1
              Как раз недавно на хабре была статья про такие же взгляды как у вас: habr.com/ru/company/jugru/blog/493178
                +1
                Это не может решать браузер. Это может решить пользователь и только он.
                Но попытка дать такой инструмент пользователю ни к чему не приведет — пользователь увидит глючный сайт, отключит настройку и продолжит работать.
                  0
                  Если пользователь отключит — хорошо. Для меня в своё время было открытием, что 90% пользователей или около того не могут поменять страницу по умолчанию в браузере, поэтому microsoft.com был самым посещаемым сайтом. Так что хозяева ожиревших сайтов начнут шевелиться, увидев подение числа посетителей в 10 раз.
                    +2

                    Ещё это может решить провайдер. На медленном интернете у меня некоторые страницы хабра просто вылитали в таймаут: "Ошибка при установке защищённого соединения". Хотя это странная ошибка при условии что часть страницы уже была показана.

                      0

                      Это не странно, учитывая, что хабр качается кучу медиа с разных ресурсов… откройте водопад с загрузкой страницы

                        +1

                        Часть страницы то уже показана. Зачем менять контент на ошибку? Оставили бы недогруженой с показом ошибки загрузки рядом.


                        А самое главное что нажимая обновить она начинает грузиться заново. Хотя казалось бы продолжи загрузку с недогруженного места если страница не изменилась.

                        0
                        Да, тоже бесит. Интернет у меня быстрый, но такое тоже иногда проскакивает. Непонятно конечно, почему Firefox показывает ошибку на всю страницу, когда проблема явно в стороннем ресурсе, ну да ладно.
                          0

                          По моим наблюдениям не успевает догрузится имено страница. Браузер умеет отображать HTML страницу по мере загрузки а заодно и запрашивает изображения и остальные ресурсы. Поскольку эти ресурсы находятся на других хостах браузер открывает к ним отдельный канал и загружает их параллельно со страницей что ещё больше замедляет её загрузку. В результате через некоторое срабатывает таймаут и соединение сбрасывается.

                    +1
                    В данный момент эта страница, сохранённая в html в месте с ресурсами, весит 2МБ (м/б из-за резалок рекламы).
                    Страница по ссылке, которую вам дали 14.5МБ (без ресурсов — 5.5).

                    Какой лимит вы предлагаете сделать (и можно ли будет после этого на хабр зайти ^_^)?
                      +2
                      Какой лимит вы предлагаете сделать (и можно ли будет после этого на хабр зайти ^_^)?

                      Это, на самом деле не важно. Вам сейчас кажется, что страница на несколько мегабайт — это нормально? А если бы я Вам рассказал про страницу в 14 МБ в 2000-м году, Вы бы покрутили пальцем у виска. Значит или что-то в этой странице есть такое, что в 2000-м было невозможно впринципе, или есть куда худеть. Ну давайте закрепим 10МБ. А можно и 100 МБ. Только давайте в будущем не будем менять этот лимит, когда неперывно растущий ароматный компост из новомодных фреймворков перестанет влезать и в эти пределы.
                        0
                        Вам сейчас кажется, что страница на несколько мегабайт — это нормально?
                        Нет, не кажется.
                        Это уже много для практически пустой страницы, но тут уж я ничем не помогу: это вопрос к команде ресурса.
                          0
                          Так вот, команда ресурса (этого и любого другого) будет чесаться насчёт оптимизации только если все их пользователи будут получать сообщение «то, что Вы сейчас загружаете может сделать Ваш компьютер очень медленным, продолжить?»
                    +6
                    На самом деле вроде как хорошее дело убрать user-agent. А то какой то цифровой расизм, сайт решает как ему отдать или не отдавать вообще контент, только на основании того через что я его смотрю.
                    Другой вопрос что за альтернативу они предлагают… это ведь не совсем понятно, в статье вообще ни слова. Так же не совсем понятно с разработчиками, они что против менеджеров восстание что ли подняли…
                      0
                      Так ведь альтернатива то-же должна будет давать понять сайту через какой браузер на него смотрят. По сути это будет тот-же самый user-agent. Почему бы просто не уменьшить количество информации в этой строке?
                        0

                        Зачем? Еще раз — стандарт для страниц должен быть одинаков (читай — интерпретация гуглохрома единственно верная, а остальные пускай приспосабливаются).

                      +5
                      Со всех настольных компьютеров строка будет выглядеть следующим образом, независимо от устройства и версии браузера

                      Windows NT 10.0; Win64; x64

                      То есть десктопные линуксы теперь вообще со статистики исчезнут?
                        0
                        У них будет Client Hint, где эта информация будет. А даже если бы не было, пока я вижу надобность только при скачивании программ, но там можно сделать, чтобы юзер сам выбрал нужную платформу.

                        Вот с указание браузера много где надо, потому что юзеру нужно иногда вывести какие-то инструкции, учесть поведение браузера в разных ситуациях, учесть баги браузера, да хоть даже шорткаты учесть, чтобы не перебить дефолтные или не сделать неудобный шорткат. Всё это потому что юзер при использовании браузера не только смотрит страницы, но и взаимодействует с браузером, и в разных браузерах это взаимодействие отличается. Если бы лишили возможности смотреть браузер, было бы действительно обидно.
                          0

                          Для client hints же JavaScript нужен, а некоторые сайты таки пытаются воздерживаться от его использования.


                          Ну и по статистике посещений можно прикидывать, какими ОС в основном пользуются интересующиеся люди, и приоритизировать сборки соответственно. По крайней мере, лично для меня это было полезно, когда я активно занимался десктопным опенсорсом.

                            0
                            Для client hints же JavaScript нужен
                            Нет. В первую очередь, Client Hints — это заголовки.
                              0

                              А, значит, я не так понял, как оно всё работает.


                              Короче, как мне с этими всеми вещами определить, скажем, ОС клиента? Раньше я ставил awstats, который парсил логи nginx'а и генерировал какую-то там статистику. А сейчас как надо?

                                0
                                В статье есть ссылка на описание Client Hints (которое ещё может поменяться). Вы посылаете в специальном заголовке список вещей, которые хотите получить, а браузер при следующих запросах может отдать Вам те из них, которые посчитает нужным (тоже в заголовках).

                                Также предполагается какой-то доступ из JS.
                                  0

                                  А если у меня, условно, блог, на который зашли по ссылке с хабра/реддита — одна страница, один хит, никаких последующих запросов, тут без js можно будет?


                                  Это я уже исключительно из практических соображений спрашиваю.

                                    0
                                    Читайте стандарт. Пока ещё рано говорить, т. к. может измениться.

                                    В один запрос без JS, вероятно, нельзя, как минимум потому что как за один запрос браузер сможет узнать, что Вам нужна эта информация? Это технически невозможно.
                                      0

                                      Запрашивать в предварительном OPTIONS / HEAD запроосе, например? Технически это будет два запроса конечно, но контент будет отдаваться только при последующем GET / POST запросе

                                        0

                                        Ну доки же есть, я не видел никакого упоминания OPTIONS / HEAD, т. е. как я понимаю, запрашивать нужно в обычном GET / POST запросе.


                                        Я допускаю, что разраб если очень захочет получить в один запрос, он сможет на своей стороне придумать какой-то хитрый редирект при первом открытии сайта. Таким образом, браузер на самом деле пошлёт 2 запроса, но для пользователя это будет выглядеть как один. Разумеется при этом:


                                        1. Сайт станет открываться медленнее.
                                        2. Обязательно нужно озаботиться об отсутствие бесконечного редиректа, т. к. браузер не обязан отдавать по запросу нужные заголовки, и определять по ним необходимость редиректа ни в коем случае нельзя. Вместо этого можно поюзать:
                                          • Сохранение второго ответа по IP:
                                            • Если Вы запросили данные, но ответ ещё не пришёл, не допускать редирект для этого IP.
                                            • Если пришёл ответ хотя бы с одним запрошенным заголовком, разрешить редирект для этого IP в том случае, если заголовок станет отсутствовать.
                                            • Если пришёл ответ без любого из запрошенных заголовков, больше не допускать редирект для этого IP.
                                          • Редирект на GET со специальным параметром, содержащим специальную временную строку (уникальную для каждого пользователя), при наличии которой редирект не осуществляется. Строка может действовать сутки и только для этого IP (для других рассматривается как отсутствие строки).
                                          • Можно также вместо редиректа попытаться поюзать обновление страницы. Уникальную строку здесь уже правда применить не получится.

                                        Но в любом случае, предложенную мной схему редиректа я крайне не рекомендую. Используйте её только если у вас говносайт.


                                        Также ни в коем случае не используйте её, если не имеете глубокого понимания работы браузеров, редиректов, Client Hints и HTML — сильно вряд ли, что Вы сможете сделать правильно. Не используйте мою инструкцию, если не имеете глубокого понимания каждого её пункта. Эта не та инструкция, по которой можно сделать в тупую по шагам без понимания вопроса.


                                        При этом ещё одна причина не использовать её — она Вам не нужна. Отдайте пользователям одинаковый HTML, а если нужно настроить отображение или отдельные элементы, настройте их Javascript'ом и стилями уже после загрузки страницы. Это позволит не только быстрее её загрузить и избежать ошибок, но и в целом намного правильнее: не надо отдавать разный HTML людям, если это не динамический сайт. Причём если Вы настраиваете стилями, обычно можно вообще обойтись без Client Hints, используя вместо этого CSS Media Queries.

                                  0
                                  Раньше я ставил awstats, который парсил логи nginx'а и генерировал какую-то там статистику. А сейчас как надо?


                                  Вы не совсем это спросили, но у Basecamp есть неприятный ответ, который мне понравился: никак.

                                  When I’ve raised this concern in conversations with people in the marketing industry, a lot of them have taken offense to the term “spy pixels”. Affixing the spying label made a lot of them uncomfortable, because they were just trying to help! I get that nobody wants to think of themselves as the bad guy (Eilish not withstanding), but using the word “spy” isn’t exactly a reach.


                                  m.signalvnoise.com/mailing-list-software-should-stop-spying-on-subscribers

                                  В конкретно этой статье они предлагают отказаться от трекинга статистики открытий почты, несмотря на то, что это сделает нашу работу сложнее: А/Б тесты, детальные статистики по браузерам, и тд. Предлагают, потому что осуждают «слежку» в интернете.

                                  Мой вариант ответа вам: возможно, вам не нужны эти данные, пускай они остаются у пользователя? Да, станет сложнее вытаскивать статистику и делать выводы, но и да, если вам действительно нужно, то есть способы эту статистику собрать. Но бесплатной слежки не останется.

                                    +1
                                    Мой вариант ответа вам: возможно, вам не нужны эти данные, пускай они остаются у пользователя?

                                    Три конкретных примера о том, зачем нужна статистика (полтора из них делается без анализа заголовков, впрочем).


                                    1. Мой персональный блог (без единой рекламы и без джаваскрипта почти на всех страницах, кроме одной). Из каких стран ко мне чаще всего приходят? То есть, в какой стране лучше всего разворачивать сервер, чтобы всё работало быстро у как можно большего числа пользователей?
                                    2. Сайт моего опенсорс-проекта. Какие языки включены в браузере? То есть, на переводах на какие языки стоит сосредоточиться?
                                    3. Сайт моего опенсорс-проекта. Из-под каких ОС на него заходят? То есть, каким ОС лучше уделить внимание?

                                    Я, если честно, не вижу каких-то особых моральных проблем в сборе подобной статистики. Перепись населения, блин, больше информации собирает! Правда, я и не веб-разработчик толком, для меня даже статический сайт сделать — проблема, так что я почти наверняка чего-то не понимаю.

                                      0
                                      Сайт моего опенсорс-проекта. Из-под каких ОС на него заходят? То есть, каким ОС лучше уделить внимание?

                                      Последнее зачем ?

                                        +3

                                        Я застрял в 2007-м, тут всё ещё есть десктопный софт, который собирают и запускают непосредственно под/в ОС, а не в браузере.


                                        В идеале было бы, конечно, знать распределение дистрибутивов линукса, кстати.

                                        +1
                                        Из каких стран ко мне чаще всего приходят?

                                        Определяется по IP.
                                        Какие языки включены в браузере?

                                        А разве отменяют Accept-Language? Информации по языками не было в UA.
                                        Я, если честно, не вижу каких-то особых моральных проблем в сборе подобной статистики

                                        Я тоже. Одной рукой забирают 1 пункт, другой внедряют десяток, и всё это под эгидой защиты (( Но такие нынче времена, сплошной популизм без реальной пользы.
                                          0
                                          Определяется по IP.
                                          А разве отменяют Accept-Language?

                                          Поэтому я и написал, что «полтора из них делается без анализа заголовков». Тем не менее, раз уж мы заговорили об этичности статистики вообще, то почему бы и эти случаи не обсудить?

                                            0

                                            IP с GeoIP НИЧЕГО не говорит о том, откуда пришел человек. Может он с VPN выходит. Или GeoIP просто у вас устаревшая база


                                            Я уж не говорю — всратый мегафон меня всегда с питерского (якобы) айпи выпускает, даже если я в Москве.

                                              0
                                              IP с GeoIP НИЧЕГО не говорит о том, откуда пришел человек.

                                              Ну это всё равно лучше, чем ничего.


                                              Я уж не говорю — всратый мегафон меня всегда с питерского (якобы) айпи выпускает, даже если я в Москве.

                                              Для целей определения географического положения сервера или желаемого языка это достаточная точность на самом деле.

                                                0

                                                С языком и страной — согласен, работает.
                                                Но эти умники (или идиоты) — пытаются мой город таким образом определить. И абсолютно плюют на фактические настройки в профиле пользователя, если они есть (этим грешит все начиная от яндекс.карт и заканчивая местечковой шаурмой)

                                      0
                                      А вам таки зачем?
                                0
                                Вот с указание браузера много где надо, потому что юзеру нужно иногда вывести какие-то инструкции, учесть поведение браузера в разных ситуациях, учесть баги браузера, да хоть даже шорткаты учесть, чтобы не перебить дефолтные или не сделать неудобный шорткат. Всё это потому что юзер при использовании браузера не только смотрит страницы, но и взаимодействует с браузером, и в разных браузерах это взаимодействие отличается.
                                Нет других браузеров — нет проблем же… Это же гугл, это их стратегия во всех продуктах
                              0
                              Что-то мне непонятно, как это должно работать. Ведь отправляемые данные зависят от того, какой браузер запрашивает страницу. Сервер, получив запрос с UA, сразу знает, что отправлять. А теперь потребуется сначала выдать какую-то фейковую страничку (которую предварительно придётся сделать гарантированно работающей во всех браузерах), которая JS'ом запросит нужные параметры, передаст на сервер и перезагрузится с уже новым актуальным содержимым? Попутно ещё куки выставить, чтобы связать эту страничку с последующим запросом (и не забыть потребовать от пользователя подтверждение на эти куки). А если JS вообще выключен? Хоть сейчас и тренд на JS-only, HTML-сайты ещё существуют, и бывает так, что разным браузерам надо разную HTML-разметку отсылать, подстраиваясь под их особенности рендеринга.
                                +2
                                Может, они хотят, чтобы вы не подстраивались под разные браузеры, и делали странички только для хрома в соответствии со стандартами?
                                  +4
                                  в соответствии со стандартами?
                                  реализованных так же и в том количестве, как гуглом в хроме.
                                    –4
                                    Гугл в этом плане поступает весьма благородно, кстати.
                                    Они не пилят целком и полностью свои стандарты не оглядываясь ни на кого, а коммитят предложения в рабочую группу WHATWG, где есть люди из Google, Mozilla, Apple и Microsoft, и совместно их обсуждают и принимают. Сторонним наблюдателям, кстати, поучаствовать в дискуссиях никто не запрещает. Более того, если в Хроме что-то реализованно одним образом, а в других браузерах поведение отличается, они подстраивают свою имплементацию так, чтобы было как у других, после чего коммитят обновления в стандарты для того чтобы актуализировать их — в коде Хрома в комментариях об этом встречается далеко не раз и не два.
                                      +3
                                      Гугл в этом плане поступает весьма благородно, кстати.
                                      Они не пилят целком и полностью свои стандарты не оглядываясь ни на кого
                                      Это вы про то, как они могут реализовывать стандарт так, как захотелось, на своих сервисах, с учетом, что выгоду от этого получит хром, а не прочие.
                                      Или про то, что уже вроде как был случай, когда гугл просто реализовал то, что захотел, наплевав на всех, и игнорируя открытый стандарт мозиллы?
                                      Или как они решили хорошо так подрезать в хроме возможности блокировщиков рекламы?
                                      Не, наверное лучшее, это то, что в мобильном сегменте гугл навязывает свою монополию через производителей железа, имея монопольное положение на смартфонных ОС, лицензируемым сторонним компаниям, но при этом специально не добавляет туда расширения.
                                      И вообще, можно вспомнить такое:
                                      Ради миллионов своих пользователей браузеру Opera пришлось прятать свой user agent, только так сервисы Google нормально работали в норвежском браузере.
                                    0
                                    Они-то, конечно, хотят, это давно известно, но это не отвечает на вопросы. Если считать, что в мире существует лишь единственный и неповторимый и всеми обожаемый браузер, то все эти заморочки с запросом фич не нужны. Раз их всё-таки вводят, значит, допускают, хотя бы в ночных кошмарах, что у кого-то может быть другой браузер или устаревшая версия. А раз так, то все поставленные вопросы остаются актуальными, ибо разные браузеры могут вести себя по-разному.

                                    Писать в соответствии со стандартами, конечно, нужно, но этого недостаточно. Надо ещё чтобы а) эти стандарты неукоснительно соблюдались браузерами — причём всеми браузерами, и б) чтобы стандарты не развивались, а были замороженными раз и навсегда. И то, и другое, очевидно, в нашем мире невозможно.
                                      0
                                      С ростом популярности JavaScript большинство разработчиков начали использовать библиотеки вроде Modernizer, которые определяют конкретный список функций HTML, CSS и JavaScript, которые поддерживает конкретный браузер, обеспечивая гораздо более точные результаты, чем user-agent.
                                        +2
                                        Ещё раз по пунктам:
                                        1. Как сервер узнает, что надо отдавать клиенту? Может, там какой-нибудь IE6, в котором этот Modernizer даже не запустится. А узнав старого клиента по UA мы могли бы сразу послать туда Lite-версию сайта, без плюшек, но работающую.
                                        2. Как быть, если у клиента отключён JS?
                                          0
                                          2. Как быть, если у клиента отключён JS?

                                          Поступить как 90% сайтов — отдать белую страницу… С NoScript не знаю ни одного сайта, который хотя бы показал контент верно, как минимум везде едет форматирование, хотя, казалось бы, при чём тут оно и JS…
                                            0
                                            С NoScript не знаю ни одного сайта, который хотя бы показал контент верно, как минимум везде едет форматирование, хотя, казалось бы, при чём тут оно и JS…

                                            А хабр не считется?

                                      0

                                      да все уже… доигрались… нет браузера другого, чем пророк единого Хрома… ну, и сафари на заднем плане маячит

                                        +1

                                        А Firefox?

                                          –10

                                          так он уже вроде давно на движке хромиума, не ?

                                            +2
                                            Нет, ни давно, ни недавно, ни в планах нет.
                                              +2
                                              Даже не близко. У них переход с одного движка на частично новый произошёл пару лет назад и сейчас они на прекрасном шустром движке продолжают развиваться.
                                              Но всем пофиг, ибо деньги, реклама и самые популярные ресурсы у Гугла…
                                            –1
                                            ну, и сафари на заднем плане маячит

                                            Так сафари это вебкит, устаревшая версия блинка, которая живёт лишь за счёт айфонов, где Apple не разрешает ничего другого.
                                          +3
                                          Так ведь суть в том, что в этом случае надо выдавать как хрому (который сейчас лидер), а если не верно — то пользователь сам дурак. То есть дальнейшая монополизация рынка браузеров гуглом по сути закрепляется. ИЕ умер, да здравствует ИЕХром!
                                            +2
                                            Вместо этого Chrome предложит новый API под названием Client Hints,


                                            Всё просто, механизм идентификации который все научились обходить — уберут.
                                            Вкрячат что-то свое, закрытое и пропиетарное в три слоя, что остальным просто так обходить не получится.
                                              0
                                              Браузер и мажорная версия будут возвращаться сразу. Примеры:

                                              "Chrome"; v="73"
                                              "Chrome"; v="73",   "Chromium"; v="73"
                                              "Chromium"; v="73",   "adiogjaeiughjsiudgvbiaf_nonexistingBrowser"; v="999"
                                              
                                                +1
                                                А, я не заметил, что этот заголовок должен отсылаться всем в обязательном порядке. Тогда это решает проблему. Спасибо.
                                                0
                                                Ведь отправляемые данные зависят от того, какой браузер запрашивает страницу.

                                                Зачем? 99,9% страниц прекрасно работают на всех десктопных браузерах без каких-либо изменений. Я вот сижу на Firefox, и могу припомнить только один случай, когда страница ломалась в хроме.
                                                  +1
                                                  99,9% страниц прекрасно работают на всех десктопных браузерах без каких-либо изменений.
                                                  Во-первых (даже если забыть, что 99,9% статистических данных в интернете берутся с потолка), не на всех, а только на современных. Есть немало пользователей устареших браузеров, и не все разработчики готовы выбросить таких пользователей на помойку. Во-вторых, браузинг со смартфонов сейчас занимает чуть ли не половину трафика, и ограничиваться только десктопами не комильфо. В-третьих, часть этих «прекрасно работающих без всяких изменений» могут прекрасно работать именно благодаря тому, что смогли определить браузер и адаптировать под него своё поведение.
                                                    0
                                                    В-третьих, часть этих «прекрасно работающих без всяких изменений» могут прекрасно работать именно благодаря тому, что смогли определить браузер и адаптировать под него своё поведение.

                                                    С чего вы это взяли? Какие сейчас есть критические несовместимости между новыми версиями браузеров?
                                                      0
                                                      Примеров привести не смогу, я давно уже не веб-девелоплю (да и когда девелопил, ограничивался простейшими вещами). Но стоны фронтэндеров слышны и поныне, а также наблюдается повышенное слюноотделение на тему того, что вот-вот наступит долгожданная монополия хромодвижков, и наконец-то не надо будет подстраиваться под разное поведение браузеров.
                                                        0
                                                        По моему они по-инерции стонут, да и то в сторону какого-нибудь заброшенного производителем IE, или каких-то суперновых фич хромонога, которые им даром не нужно, но хочется же. Ну а про опасность монополии люди уже и забыли.
                                                        0
                                                        Бывают небольшие различия или баги при отрисовке стилей. Я эту проблему обычно стараюсь решить кросбраузерно, но, вероятно, кто-то просто создаёт стили для каждого браузера или их групп.
                                                          0

                                                          Незнаю насколько это критично но: Недавно обнаружил что Firefox в XSLT match может использовать переменные а Chrome нет(ошибка копиляции). Так же для Chrome надо URL кодировать пути в xsl:import и document.


                                                          Можно конечно поумолчанию подстраиваться под Chrome. Firefox это примет. Но в случае xsl:import и document это делает код менее понятным.

                                                        0

                                                        Ну, у меня на странице некорректно CSS-ные транзишоны отрабатывались в хроме, пока я в конец страницы не добавил <script> </script> — баг в багтрекере хрома уже несколько лет висит, но, видимо, так как это влияет только на страницы, где нет скриптов, а в современном вебе их маловато, это никто и не чинит.

                                                      0

                                                      del

                                                        –2
                                                        Это ж сколько петабайт места в логах на всех серверах в целом будет сэкономлено :)
                                                          0
                                                          Старый замороженный user-agent всё-равно будет посылаться для совместимости. Правда он будет хорошо сжиматься, ибо их всего два.
                                                          0

                                                          Ну и дела, теперь помимо согласия с куками и отказа от уведомлений надо будет ещё дать разрешение прочитать user-agent через client hints. Всё сложнее и сложнее до контента добраться.

                                                            0
                                                            Вы забыли про уведомления, геопозицию, камеру и микрофон.
                                                            0
                                                            А я вот не понял смысла замены.
                                                            «По UA выполняется фингерпринтинг, давайте откажемся от UA, и заюзаем Client Hints».
                                                            А что поменяется-то? Те, кто фингерпринтят по UA, дружно заплачут, и не станут использовать Client Hints?
                                                              0
                                                              Нет, им будет сложнее его делать, так как запрос со стороны браузера. Хотя уверен, что сам гугл будет в белом списке. Монополия такая монополия ((
                                                                +1
                                                                Из того, что я вижу тут (раздел «A Proposal»):
                                                                1. UA string замораживается
                                                                2. так же замораживаются navigator.appVersion, navigator.platform, navigator.productSub, navigator.vendor, navigator.userAgent (доступ из JS)
                                                                3. тут бритва Оккама отказала, и пошла дичь: браузеры должны ввести поддержку ua-client-hints
                                                                4. эта же дичь протекает и в JS

                                                                И только на последнем шаге описывается, чем же с точки зрения поведения это может отличаться: «браузер может решать, кому и в каком количестве отдавать эту информацию; например, 'топ-сайтам' или сайтам, которые пользователь посещает часто, можно отдавать более детализированную информацию, чем сторонним сайтам; и можно даже спросить у разрешение у пользователя, если мы решим, что это несильно его раздражит» («User agents can make intelligent decisions about what to reveal in each of these attributes. Top-level sites a user visits frequently (or installs!) might get more granular data than cross-origin, nested sites, for example. We could conceivably even inject a permission prompt between the site's request and the Promise's resolution, if we decided that was a reasonable approach.»)

                                                                А теперь вопрос: нахрена козе баян зачем вообще вводить ua-client-hints?
                                                                Хотите, чтобы браузер принимал решения, кому отдавать полную информацию, а кому частичную — давайте это обсуждать. Будет принято решение, что части сайтов надо информацию «обрезать» — обрезайте UA string. Зачем способ передачи этой информации менять-то?
                                                                  0
                                                                  Зачем способ передачи этой информации менять-то?

                                                                  Это модно.
                                                                  Я тоже этого не понимаю, когда вводят 15 способ сделать что-либо при наличии 14 не хуже.
                                                                    +2

                                                                    Просто отрасль айти, в которой основной целью было сделать удобнее, веселее или прикольнее, сменилась отраслью айти, в которой целью является освоить бюджет, отожрать кусок покрупнее и побрить лохозавров — а вместе с тем пришла и имитация бурной деятельности, и ящик в полтора гига фреймворков для макак с клавиатурами, которые кроме сайтов ничего писать не научились, а заказчику внезапно захотелось сделать десктопненько.


                                                                    Так что привыкайте.

                                                              +4
                                                              Есть подозрение, что дело было так.
                                                              Руководство Google подчинённым: «Надо увеличить долю браузера Chrome»
                                                              Подчинённые: «За попу возьмут антимонопольные службы»
                                                              Руководство: «Придумайте что-нибудь, как обычно под лозунгом спасения человечества».

                                                              В итоге.
                                                              Теперь количество браузеров посчитать невозможно, у всех будет одинаковый юзерагент. Долю браузера хром можно доводить до 100%. Попутно сильнее вставляя палки в колёса конкурентам на своих сервисах.
                                                                0
                                                                Google против fingerprinting-а — звучит как «пчёлы против мёда»…
                                                                Хотя, по большому счёту, сейчас уже куда не плюнь в клиентское ПО, везде возможность подмены User-Agent-а активно используется, так что смысла в разном поведении сервера уже нет. Собственно, и попадаются реагирующие на User-Agent сервера довольно редко, и основная идея у них не «предоставить разный контент», а «навредить неугодным User-Agent», зачем — непонятно.
                                                                Суть предлагаемого Client Hints не ясна. Для пользователя особого смысла нет, и подмена Client Hints при необходимости ничем не отличается от подмены User-Agent.

                                                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                Самое читаемое