Обнаружение браузера посетителя с помощью JAVASCRIPT или PHP? - PullRequest
2 голосов
/ 26 марта 2012

Мне любопытно узнать, является ли обнаружение браузера посетителя с помощью сценария на стороне клиента более надежным, чем сценарий на стороне сервера?

Легко и популярно получить браузер посетителя как по PHP, так и по Javascript. В первом случае мы анализируем $_SERVER['HTTP_USER_AGENT'], отправленный массивом заголовков. Однако заголовок не всегда надежен. Может ли Javascript быть более надежным, поскольку он получает браузер посетителя от компьютера посетителя?

Я имею в виду, можно ли пропустить АГЕНТ ПОЛЬЗОВАТЕЛЯ в заголовке и получить браузер по javascript?

ОБНОВЛЕНИЕ: Пожалуйста, не вводите такие методы, как jQuery, так как я знаком с ними. Я просто хочу знать, может ли пользовательский агент заголовка потерпеть неудачу, когда javascript все еще может обнаружить браузер? Сравнение методов на стороне клиента и на стороне сервера.

Ответы [ 6 ]

2 голосов
/ 26 марта 2012

Пользователь-агент может быть протестирован на стороне сервера или на стороне клиента, в любом случае он может быть подделан.

Вы можете отсканировать браузер с помощью JavaScript (видя, какие методы и объекты предоставляет браузер) и использовать его для вывода из браузера, но это менее точно, и JavaScript может быть отключен / заблокирован / отредактирован клиентом.

Так что ни один из них не совсем надежен.

Как правило, делать что-либо на основе идентификатора браузера - плохая идея.

1 голос
/ 26 марта 2012

Я бы просто использовал обнаружение на стороне сервера.

Если пользователь хочет замаскировать свой браузер, его браузер, вероятно, будет замаскирован на обоих концах.

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

1 голос
/ 26 марта 2012

OK.Таким образом, заголовок User-Agent не требуется RFC

ПАгентам СЛЕДУЕТ включать это поле в запросы.

http://tools.ietf.org/html/rfc2616#section-14.43

Что означает серверобнаружение стороны не гарантируется.

Аналогично, обнаружение на стороне клиента, как правило, основывается на navigator.userAgent, но это также обеспечивается агентом пользователя (браузером или чем-то еще) и аналогичным образом не может быть гарантировано.

Таким образом, ответ на ваш вопрос - 50/50 :)

Теперь, если вы пытаетесь понять, как работать с различными браузерами, - определение функций - ваша самая безопасная ставка здесь - но этодругой вопрос;)

0 голосов
/ 26 марта 2012

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

Вот интересный пример: https://panopticlick.eff.org/

0 голосов
/ 26 марта 2012

Другой угол: почему мы хотим обнаружить браузер?

В случае с аналитикой мало что можно сделать на самом деле. Любой, кто делает небольшое исследование, может послать любую строку пользовательского агента, которую он хочет, но кто собирается пройти через все трудности;)

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

Подробнее: http://jibbering.com/faq/notes/detect-browser/

0 голосов
/ 26 марта 2012

Взгляните на $. Browser () в jquery

...