Я думаю, это зависит от вашей мотивации. Например, в мобильном веб-секторе вы пытаетесь предоставить пользователю то, что выглядит разумно на его платформе. Зачем беспокоиться о том, о каком пользовательском агенте сообщает пользователь, если это чисто для его собственной выгоды? Если они попытаются обмануть вас другим пользовательским агентом, то они - единственный человек, который страдает. Конечно, главная проблема - ложные срабатывания; это не совсем надежно.
Я придерживаюсь аргумента, что вы не должны полагаться на него как таковое, но мобильные разработчики подвергаются нападкам из-за общих общих утверждений, подобных этому. Да, есть хорошие альтернативы, но во всех браузерах, которые вы можете себе представить, эта информация может быть полезна в какой-то момент, когда определенность начинает ухудшаться.
Что вы, безусловно, никогда не делаете с любым простым текстовым заголовком, так это используйте его для облегчения контроля доступа.
Обнаружение пользовательского агента считается плохим, когда есть лучшие альтернативы, но, конечно, нет никакого вреда, если его включить в процесс обнаружения, который уверенно ухудшается.
Проблема, с которой я столкнулся во всем процессе, заключается в том, что мы увлечены предоставлением пользователю чего-то разумного, но никогда не думаем, что приемлемо спрашивать, когда вы не уверены. Если вы не уверены в пользовательском агенте, почему бы не спросить один раз и сохранить? Вы можете использовать пользовательский агент в качестве руководства.
Итак, в заключение я хочу сказать, что заголовок user-agent ненадежен, поэтому плохо полагаться на него . Это не означает, что вы не можете извлечь из нее определенную часть ценной информации, когда более надежные варианты оставят вас в неопределенном состоянии. Вообще неправильно делать вывод, что это плохо. Просто то, что вы делаете с этой информацией, делает ее плохой или нет.
Обновление
После просмотра ваших обновлений вопроса у меня есть следующие комментарии для участия.
Хочу ли я прослушивать запросы на изображения и предоставлять клиенту изображение на основе пользовательского агента?
Если это единственная переменная, то, возможно, она может сработать, но редко бывает, что вы меняете только изображения. Я не хочу определять для каждого запроса, потому что Я хочу предоставить клиенту согласованное решение . Это означает, что я предоставил им страницу, которая заставляет их запрашивать правильные ресурсы. Эта страница дает единое согласованное решение для всех интегрированных ресурсов. Все варианты в этом документе работают вместе для определенного вида.
Я уважаю, что вероятность изменения строки пользовательского агента в середине обзора настолько мала, что не стоит беспокоиться. Однако принятие этого принципа также уменьшает количество раз, необходимое для определения браузера / платформы, что может быть только полезным. Это позволяет гораздо проще переключать представления на клиенте. Если клиент говорит, что на самом деле вы ошиблись, я планшет, а не телефон, как вы исправите это? Вы предоставляете пользователю лучшую страницу, в противном случае вам нужно будет подделывать заголовки для ваших запросов изображений ... ужасная идея. Не используйте строку агента пользователя для обслуживания общих ресурсов, таких как изображения .
Потенциальные улучшения
Идентификация платформы - очень активная область современных разработок в сети. По мере того, как вычислительная техника становится все более распространенной, а платформы гораздо более разнообразными, наша потребность в понимании платформ, которые мы обслуживаем, увеличивается. Я думаю, что общее решение этой проблемы в нынешних условиях будет зависеть от снятия отпечатков пальцев и статистического анализа.
Рассмотрим это приложение - akinator.com - Обратите внимание, что статистический анализ огромного набора разреженных данных раздражающе точен. В ограниченной среде (набор конфигураций браузера) вы можете себе представить, что мы могли бы задать браузеру клиента несколько вопросов. Затем мы выполним статистический анализ отклика в некотором n-мерном пространстве признаков. Использование пользовательского агента в качестве измерения этого пространства будет полезным и самоограниченным, в зависимости от результатов, которые вы найдете. Если он в значительной степени неточен, то он увидит большой разброс, и количество ценности, которую вы извлекаете из этого, будет самоограниченным.
Конечно, ваша способность извлекать какую-либо ценность из этой статистической модели требует от вас получения некоторых подтвержденных истин. Это может быть, например, запуск набора тестов JavaScript для определения возможностей js на стороне клиента, или, в действительности, в условиях неопределенности вы можете фактически попросить пользователя сказать вам, какая у него платформа.
Для дальнейшего чтения я отсылаю вас к этой статье от Mozilla
https://developer.mozilla.org/en/Browser_detection_using_the_user_agent
Сегодня поиск этих строк - единственный способ узнать, что
устройство работает на мобильном устройстве (или планшете) перед обслуживанием
HTML.