User agent

Z Wikipedii, wolnej encyklopedii

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[edytuj | edytuj kod]

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[edytuj | edytuj kod]

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.6Mozilla Firefox (pod systemem GNU/Linux)
  • Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; en) Opera 8.01Opera 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 X
  • Mozilla/5.0 (compatible; Konqueror/3.3; Linux) (KHTML, like Gecko)Konqueror
  • Wget/1.9.1Uniksowa 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.12Maxthon w systemie Windows XP.

Identyfikatory UAString popularnych robotów internetowych:

  • Googlebot/2.1 (+http://www.googlebot.com/bot.html)Googlebot, robot wyszukiwarki Google
  • Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp) – Slurp, robot Yahoo
  • W3C_Validator/1.305.2.148 libwww-perl/5.803, Jigsaw/2.2.3 W3C_CSS_Validator_JFouffa/2.0 – walidatory W3C
  • Mediapartners-Google/2.1 (+http://www.googlebot.com/bot.html) – robot badający treść strony celem wstawienia odpowiedniego banera reklamowego np. w okno przeglądarki Opera
  • JavaX.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)
Identyfikatory UAString Firefoxa na różnych systemach
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[edytuj | edytuj kod]

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[edytuj | edytuj kod]

Zobacz też[edytuj | edytuj kod]

Przypisy[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]