User agent – aplikacja kliencka. Nagłówek zawierający tzw. user agent string (UAString) służy serwisom internetowym (np. aplikacji napisanej w języku PHP) do rozpoznania typu programu klienckiego, również do budowania statystyk odwiedzin witryn WWW przez różne przeglądarki bądź roboty.
Podobny nagłówek (User-Agent:, X-Mailer:, X-Newsreader:) jest dołączany do dokumentów przesyłanych protokołami SMTP oraz NNTP jednak identyfikacja aplikacji klienta nadawcy listu e-mail nie ma większego znaczenia w działaniu Sieci.
Żadna specyfikacja protokołu nie czyni go obowiązkowym elementem zapytania HTTP, lecz każda współczesna przeglądarka owym się posługuje. Również wiele klientów HTTP nie będących typowymi przeglądarkami wysyła nagłówek UAString podczas walidacji źródła czy indeksowania stron do bazy danych wyszukiwarek.
Historia
Za czasów dominacji Netscape’a na rynku przeglądarek, serwisy WWW otrzymując UAString nienależący do głównej przeglądarki wysyłały uboższą wersję strony, przez co np. przeglądarka Internet Explorer podszywała się pod Mozillę
(nazwa kodowa Netscape’a).
Typowy identyfikator Netscape:
Mozilla/4.78 [en] (Win98; U)
Identyfikator, jakim IE posługuje się do dziś (zmieniają się tylko wersję programu i macierzystego systemu operacyjnego):
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
słowo compatible
miało oznaczać rzekomą kompatybilność wyświetlania HTML-a ze sposobem wyświetlania Netscape’a.
W obu powyższych przykładach zawarta jest, oprócz wersji przeglądarki, nazwa systemu operacyjnego (odpowiednio: Microsoft Windows 98 i Microsoft Windows XP). Istnieją systemy statystyk odwiedzin na stronach WWW sumujące wizyty klientów spod różnych systemów operacyjnych.
Przykłady UAStringów
Przykłady identyfikacji pozostałych popularnych klientów:
Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.7.10) Gecko/20050717 Firefox/1.0.6
– Mozilla Firefox (pod systemem GNU/Linux)Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 8.01
– Opera podszywająca się pod Internet Explorera (podszywającego się pod Netscape’a)Mozilla/5.0 (Macintosh; U; PPC; ja-JP; rv:1.0.1) Gecko/20020823 Netscape/7.0
– Netscape Navigator pod systemem OS XMozilla/5.0 (compatible; Konqueror/3.3; Linux) (KHTML, like Gecko)
– KonquerorWget/1.9.1
– Uniksowa aplikacja wget (mogąca działać zarówno jako prywatny program do ściągania dokumentów przez HTTP, jak i część robota)Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36 OPR/19.0.1326.56
- Opera 19.0 w systemie Windows XP.Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.12 (KHTML, like Gecko) Maxthon/3.0 Chrome/26.0.1410.43 Safari/535.12
– Maxthon w systemie Windows XP.
Identyfikatory UAString popularnych robotów internetowych:
Googlebot/2.1 (+http://www.googlebot.com/bot.html)
– Googlebot, robot wyszukiwarki GoogleMozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
– Slurp, robot YahooW3C_Validator/1.305.2.148 libwww-perl/5.803
,Jigsaw/2.2.3 W3C_CSS_Validator_JFouffa/2.0
– walidatory W3CMediapartners-Google/2.1 (+http://www.googlebot.com/bot.html)
– robot badający treść strony celem wstawienia odpowiedniego banera reklamowego np. w okno przeglądarki OperaJavaX.X.X
– domyślny UAString aplikacji napisanych w Javie wysyłających żądania HTTP (X.X.X to wersja JRE, w jakiej uruchamiana jest aplikacja)
Version | O.S. | User Agent |
---|---|---|
1.0 | Windows XP | Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041202 Firefox/1.0 |
1.0.4 | Ubuntu Linux, avec AMD64 | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.6) Gecko/20050512 Firefox |
1.0.4 | FreeBSD 5.4 avec i386 | Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.8) Gecko/20050609 Firefox/1.0.4 |
1.0.6 | Windows XP | Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6 |
1.0.7 | Mac OS X 10.3 PPC | Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7 |
1.5b1 | Windows XP | Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b4) Gecko/20050908 Firefox/1.4 |
1.5 | Windows XP | Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8) Gecko/20051111 Firefox/1.5 |
2.0 | Windows XP | Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) Gecko/20061010 Firefox/2.0 |
2.0 | Ubuntu | Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.1) Gecko/20060601 Firefox/2.0.0.1 (Ubuntu-edgy) |
2.0.0.6 | Ubuntu, avec AMD64 | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.6) Gecko/20071008 Ubuntu/7.10 (gutsy) Firefox/2.0.0.6 |
2.0.0.14 | Windows XP | Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14 |
2.0.0.20 | Windows 7 | Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 |
2.0.0.21 | Haiku | Mozilla/5.0 (BeOS; U; Haiku BePC; en-US; rv:1.8.1.21) Gecko/20090218 Firefox/2.0.0.21 |
3.0b5 | Ubuntu | Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9b5) Gecko/2008041514 Firefox/3.0b5 |
3.0.1 | Windows XP | Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 |
3.0.1 | Windows Vista | Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 |
3.0.3 | Mac OS X 10.5 | Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3 |
3.0.4 | Fedora 10 | Mozilla/5.0 (X11; U; Linux x86_64; fr; rv:1.9.0.4) Gecko/2008111217 Fedora/3.0.4-1.fc10 Firefox/3.0.4 |
3.0.4 | OpenSolaris | Mozilla/5.0 (X11; U; SunOS i86pc; fr; rv:1.9.0.4) Gecko/2008111710 Firefox/3.0.4 |
3.0.6 | Windows 7 | Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 |
3.1b2 | Windows 7 | Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 |
3.5.1 | Linux | Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 |
3.6 | Windows 7 | Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2) Gecko/20100115 Firefox/3.6 |
4.0.1 | Debian | Mozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 |
5.0 | Windows XP | Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0 |
5.0 | Android | Mozilla/5.0 (Android; Linux armv7l; rv:5.0) Gecko/20110615 Firefox/5.0 Fennec/5.0 |
15.0.1 | Windows XP | Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20100101 Firefox/15.0.1 |
19.0.2 | OpenSUSE | Mozilla/5.0 (X11; Linux x86_64; rv:19.0) Gecko/20100101 Firefox/19.0 |
19.0.2 | Android | Mozilla/5.0 (Android; Tablet; rv:19.0) Gecko/19.0 Firefox/19.0 |
65.0 | Android 9 | Mozilla/5.0 (Android 9; Mobile; rv:65.0) Gecko/65.0 Firefox/65.0 |
Bezpieczeństwo
Aplikacje serwerowe nie powinny polegać na zawartości ciągu User Agent (otrzymywanego często jako HTTP_USER_AGENT), gdy może to wpłynąć na bezpieczeństwo, gdyż – jak wszystkie dane otrzymane od aplikacji klienta – są łatwe do usunięcia, sfałszowania lub podszycia. Podobnie czynią niektórzy właściciele firewalli, którzy w obawie o utratę prywatności blokowali wysyłanie rzeczywistego UAStringa do serwerów. Wiele przeglądarek pozwala na zmienianie identyfikacji podszywając się pod różne programy lub nawet na ręczne wpisanie dowolnego ciągu znaków jako UAString.
Przykładem takiego błędu bezpieczeństwa jest opublikowana przy udziale Microsoft gra Cut The Rope w wersji HTML5. Została ona wydana w celu podkreślenia kompatybilności Internet Explorer 9 z HTML5. Aby uzyskać dostęp do pełnej wersji gry, należało użyć przeglądarki Internet Explorer 9, a dla użytkowników starszych systemów niż Windows Vista SP2, z powodu wymagań przeglądarki, należało również zakupić nowszy system operacyjny. Twórcy gry decyzję tłumaczyli faktem niespójnej obsługi HTML5 w przeglądarkach innych niż Internet Explorer. W rzeczywistości w teście HTML5 html5test.com, przeglądarka Internet Explorer 9 uzyskała wynik 128 punktów (większa liczba oznacza większą kompatybilność ze standardami), natomiast przeglądarki Firefox, Opera, Chrome i Safari (w wersjach wydanych przed wydaniem IE9) uzyskały odpowiednio 173, 259, 345 i 246 punktów, a więc każda z nich była bardziej kompatybilna od IE9[1]. Sprawdzanie przeglądarki polegało na UAString - zarówno wartość z nagłówka HTTP, jak i podawana przez silnik JavaScript. Po zmianie UAString użytkownicy mogli skorzystać z gry bez używania przeglądarki Internet Explorer 9 wraz z jej zależnościami (jak system operacyjny)[2].
Metody otrzymywania dostępu do ciągu agenta
- JavaScript:
window.navigator.userAgent
- PHP:
$_SERVER['HTTP_USER_AGENT']
- platforma ASP oraz ASP.NET 2.0 i wyżej:
Request.UserAgent
- Serwlet (Java):
request.getHeader("User-Agent")
Zobacz też
- Robots Exclusion Protocol
- typowe zapytanie HTTP z podaniem ciągu klienta (User-Agent:).
Przypisy
- ↑ HTML5test - how well does your browser support HTML5?
- ↑ Browsomatic - HTML5 version of Cut The Rope game is now available. [dostęp 2014-07-24]. [zarchiwizowane z tego adresu (2014-07-29)].
Linki zewnętrzne
- Baza znanych nagłówków różnych aplikacji. user-agents.org. [zarchiwizowane z tego adresu (2014-01-07)]. (ang.)
- Silnik identyfikacji przeglądarki, systemu operacyjnego i in. stosowany przez polski system Gemius (pol.)
- Lista obiektów JavaScript, dzięki którym można dokładnie wykryć typ i wersję przeglądarki (ang.)
- Web Browser Analyze (ang.)
- Zmiana identyfikatora przeglądarki. ciekawa-informatyka.pl. [zarchiwizowane z tego adresu (2011-01-10)]. (pol.)