«Mozilla / 5.0» и «как Gecko»: тестируют ли веб-приложения строки специфичных для Firefox пользовательских агентов?

1376
bwDraco

Простите, если это неправильный сайт, чтобы задать этот вопрос; некоторые аналогичные вопросы были закрыты в Web Stack Exchange, поэтому я задал этот вопрос здесь. При необходимости смело переносите этот вопрос.


Многие современные браузеры идентифицируют себя со строками пользовательских агентов, содержащими Mozilla/5.0или Gecko(как в like Gecko), которые имеют смысл только для Firefox (и более поздних версий Netscape Navigator).

Почему это все еще используется? Если, скажем, Chrome (последняя версия на момент написания этой статьи в Windows 8.1 64-bit) идентифицировал себя как

Chrome/32.0.1700.107 (Windows NT 6.3; WOW64) AppleWebKit/537.36 

вместо

Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36 

некоторые сайты не будут работать правильно? Есть ли еще веб-приложения, которые полагаются на эти подстроки в строке агента пользователя?

Для справки, строка пользовательского агента для Firefox 27 в 64-битной Windows 8.1:

Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 
0
Держу пари, что это просто устаревший код; и я бы также поспорил, что многие веб-сайты все еще используют его, хотя в течение десятилетия общепринятым было «не вынюхивайте строки агента пользователя»! miken32 10 лет назад 1

2 ответа на вопрос

0
MadsHaupt

I still think there are some web applications that use it, but I do not think it is particularly many who use it for anything.

I ask maybe a little silly, but what do you need the information for?.

0
bwDraco

Okay, I found the answer at Stack Overflow: Why do Chrome and IE put “Mozilla 5.0” in the User-Agent they send to the server? (credit goes to joatis)

This is basically a historical vestige retained for compatibility with certain (very) old websites. It turns out that in the old days, some websites would refuse to serve certain types of content (such as inline frames) to browsers with user agent strings that did not contain substrings like "Mozilla", including Internet Explorer at the time. Microsoft worked around this issue by posing as Mozilla:

Mozilla/1.22 (compatible; MSIE 2.0; Windows 95) 

Everyone else ultimately followed suit, and the convention stuck. Even though it is considered bad practice today to serve different content based on the declared user agent string, some websites still rely on user agent sniffing to selectively serve content. (Heck, my personal website does a bit of UA sniffing to block known spambots!)