В настоящее время я изучаю возможности браузера и пытаюсь протестировать файлы определений браузера, которые поставляются с .NET 4.0.Для этого я использую надстройку для Firefox, чтобы изменить пользовательский агент, и у меня есть простая страница, которая сообщает следующее:
Request.UserAgent
Request.Browser.Id
Request.Browser.Browser
Request.Browser.MajorVersion
Request.Browser.MinorVersion
Request.Browser.Platform
Request.Browser.IsMobileDevice
Request.Browser.MobileDeviceManufacturer
Request.Browser.MobileDeviceModel
Обычно это дает правильную информацию, основанную на примерах, приведенных вкомментарии в файлах определения браузера по умолчанию.Однако время от времени я вижу странные результаты, которые не могу объяснить.
Возьмите пример пользовательского агента iPhone в файле определения iphone.browser
, который выглядит следующим образом:
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3
Этодолжен вернуть браузер как Safari, что он и делает.Это связано с тем, что шлюз IPhone имеет Safari в качестве родителя, что соответствует термину Safari
.
. Небольшое изменение агента пользователя для эмуляции агента пользователя почтового клиента на iPhone означает удаление конца.часть пользовательского агента выглядит следующим образом:
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko)
Теперь это должно вернуть Mozilla в качестве браузера, так как он не сможет найти совпадение по термину Safari
.Тем не менее, анализ этого сразу после того, как первый сообщает неверную информацию, все еще указывает, что браузер является Safari.
Добавление пользовательского файла .browser
с папкой App_Browsers
, а затем изменение, которое, по-видимому, вынуждает егобыть корректным временно, почти как определения или правила кэшируются и не полностью выполняются при каждом запросе.
Это работает и по-другому, если вы начинаете со второго примера пользовательского агента, то после анализа первого он будетсообщить, что это Mozilla вместо Safari.
Кто-нибудь может объяснить это поведение или способ обойти это?Пытается ли он сделать что-то вроде (не очень) умного кеширования, когда он делает предположения на основе похожих пользовательских агентов?
Спасибо.