Теперь, когда вы выяснили, что вы действительно ищете (запись фактического типа браузера для статистического сбора, а не программирования веб-страниц), кажется, что стандартное поведение по умолчанию для всех браузеров содержитне обманчивый и уникально идентифицирующий пользовательский агент.Итак, для первого порядка вы должны убедиться, что понимаете, как правильно интерпретировать все это, поскольку это, вероятно, составляет 99% того, с чем вы сталкиваетесь.Google показывает кучу разных списков этих пользовательских агентов.Мне нравится столбец "браузер" этот .Вы можете довольно легко определить движок рендеринга и версию во многих браузерах (Gecko, Webkit, MSIE, Presto) и затем решить, насколько больше деталей вам нужно (например, Firefox или Camino) оттуда.Каждый браузер уникально идентифицирован из коробки.Вы можете запрограммировать в суббраузере столько уровня детализации, сколько у вас есть время.
Тогда я буду удивлен, стоит ли пытаться идентифицировать браузеры, которые лгут вам, с помощьюложный пользовательский агент.Если у вас есть 30 различных версий версий 50 различных браузеров, это огромная работа, чтобы попытаться однозначно идентифицировать каждый из них с помощью функции обнаружения, не полагаясь на пользовательский агент.Вам придется создать огромную базу данных тестов, которую вы регулярно обновляете.И я понятия не имею, как бы вы взяли все эти мелкие изменения, чтобы выяснить, как их кодировать и / или тестировать для них.
Если вы просто хотите определить, какие браузеры лгут об их движке рендеринга (например, утверждая, что Gecko действительно MSIE), то это, вероятно, более простая проблема, поскольку вы можете обойтись меньшим количеством тестов функций(например, тот, который вы определили для IE6).Но это все еще высокий заказ.Если бы я делал это, я бы начал с набора проприетарных вещей, которые IE поддерживает в каждой основной версии, и протестировал бы их.Как правило, можно с уверенностью сказать, что никто другой не поддерживает большинство специфических для IE вещей, которые не могут быть стандартом.Тогда, я бы, наверное, искал некоторые специфические для Mozilla вещи в движке рендеринга Gecko.Прямо сейчас у каждого движка есть свои собственные CSS3-теги -moz, -o, -ms, -webkit, которые в значительной степени определяют, какой это движок рендеринга (для более поздних версий).В конечном итоге они исчезнут, когда эти стандарты будут доработаны, но большинство браузеров будут долго сохранять обратную совместимость с их вариантом (Microsoft, возможно, навсегда).
Вы, вероятно, можете изучить некоторые межбраузерные библиотеки, которые используютобнаружение тяжелых функций, таких как Modernizer, YUI, jQuery и т. д. для других идей.