Как определить клиентский браузер из.Net

84
6

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

Пользовательский агент: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, например, Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240

С#

var req = HttpContext.Current.Request;
var browserName = req.Browser.Browser;

.Net ответ команды

Спасибо за ваш отзыв. BrowserCap - это устаревшая функция, и мы больше не обновляем ее, если не обнаружим, что функция asp.net нарушена, вызванная этим. Если вы действительно хотите, чтобы ваше приложение распознало Edge as Edge (not chrome), вы можете добавить свой собственный файл браузера в соответствии с строкой UA Edge в папке app_browsers. Обратная связь

Обновление *: здесь строки UA из трех браузеров, которые могут предполагать, что последняя часть информации может быть индикатором, но не для Chrome. Как вы видите, хромированные показывает Safari/537.36 в конце UA, поэтому это не может быть индикатором. Кроме того, в системе нет сафари, поэтому почему Google и Microsoft пытаются нас обмануть? И я хотел бы задать им этот вопрос; Какова цель User Agent, если информация там, чтобы нас обмануть. Позволяет полностью вынуть его из заголовка (меньше байтов для передачи через Интернет). Если это стандарты, чем уважать их или полностью избавиться от них. Пожалуйста, исправьте меня, если я ошибаюсь в допущениях из-за отсутствия информации.

Edge: Mozilla/5.0 (Windows NT 10.0, Win64; x64) AppleWebKit/537.36 (KHTML, например, Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240

Firefox: Mozilla/5.0 (Windows NT 10.0; WOW64; rv: 42.0) Gecko/20100101 Firefox/42.0

Chrome: Mozilla/5.0 (Windows NT 10.0, WOW64) AppleWebKit/537.36 (KHTML, например, Gecko) Chrome/46.0.2490.86 Safari/537.36

спросил(а) 2021-01-14T00:18:01+03:00 2 недели назад
1
Решение
60

Скорее всего, Edge:

Edge/12.10240

http://www.geekwire.com/2015/the-challenge-of-tracking-microsofts-new-edge-browser-in-google-analytics/

Имейте в виду, что HTTP-клиент может установить свою строку user-agent, и большинство из них говорят, что это Mozilla.

Обновлено в ответ на вопрос в комментариях

Я думаю, что нет идеального ответа, чтобы определить, какой браузер использует клиент. Я знаю по опыту, что большинство браузеров утверждают, что это Mozilla и из некоторых экспериментов, которые Chrome и Safari на OS X упоминают AppleWebKit. Моя первоначальная догадка заключалась в том, что это был Safari, но после публикации ответа на этот вопрос я заметил, что браузер утверждает, что он как Chrome, так и Safari, а затем заметил Edge в конце. Согласно школе отладки Улицы Сезам (одна из этих вещей не похожа на другую), я сделал поиск на Edge и нашел ссылку выше. Другой намек: последний элемент в строке user-agent. Предложение: возьмите машину и запустите кучу браузеров, чтобы посмотреть, что показывают ваши веб-журналы.

Еще одна полезная деталь: (Windows NT 10.0; Win64; x64) немного сужает выбор - браузеры, как правило, правдивы в отношении этих данных, поэтому мне сказали, что это, вероятно, не Safari, так как я не думаю, что Apple предлагает его Windows больше.

ответил(а) 2021-01-14T00:18:01+03:00 2 недели назад
43

используйте объект запроса для получения сведений обозревателя и т.д. Request.Browser.Browser = возвращает имя используемого браузера Request.Browser.IsMobileDevice = возвращает true, если запрос отправлен с мобильного устройства

ответил(а) 2021-01-14T00:18:01+03:00 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема