1.2 Pobieranie danych o serwerze
Nim się połączymy z serwerem Tlenu, musimy posiadać potrzebne nam dane na jego temat. Wszakże musimy wiedzieć z czym się mamy połączyć ;)
Za pomocą protokołu HTTP pobierzemy interesujące nas dane, więc zaczynajmy.
Łączymy się z serwerem idi.tlen.pl
na porcie 80
. Następnie wysyłamy do niego zapytanie o dane serwera. Wraz z rozwojem protokółu Tlena, zmieniało (rozwijało) się także pobieranie danych na temat serwera.
W najprostszym wypadku wystarczy wysłać następujące zapytanie:
GET /4starters.php HTTP/1.0
Host: idi.tlen.pl
czyli wystarczy pobrać zawartość strony http://idi.tlen.pl/4starters.php
.
W odpowiedzi na nasze zapytanie, serwer zwróci nam informacje o serwerze tlenowym w formacie XML. Format odpowiedzi przedstawia się następująco:
<tlen/><s>s1.tlen.pl</s><p>443</p><v>91</v><c>0</c>
Tag s
i p
, jak można się łatwo domyślić zawierają nazwę hosta i port serwera Tlenu. Zawartość tagów v
i c
jest bliżej nieznana, aczkolwiek prawdopodobnie zawartość v
określa najnowszą, dostępną wersje zapytania o czym sami się później przekonamy analizując przedstawione w tym rozdziale dane.
Powyższe zapytanie nie jest zalecane, lepiej użyć któregoś z poniższych.
Preferowane zapytanie przedstawia się następująco:
GET /4starters.php?u=malcom&v=10&m=1 HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
User-Agent: Mozilla/3.0 (compatible)
Host: idi.tlen.pl
W zmiennej u
podajemy nasz login tlenowy. Od zawartości zmiennej v
zależy wersja otrzymanej odpowiedzi na zadane zapytanie. Zmienna m
jest nieznana, można ja pominąć w zapytaniu.
Poniżej zestawiono kilka znanych wartości poszczególnych zmiennych w zależności od wersji komunikatora.
v | m | klient |
41 | 2 | Tlen.pl 3.90 |
46 | 3 | Tlen.pl 4.10 |
59 | 2 | Tlen.pl 5.00.1.1 |
86 | 1 | Tlen.pl 5.50.1.1 |
91 | 1 | Tlen.pl 6.00.2.4 |
Nagłówki Accept
i User-Agent
protokółu HTTP są opcjonalne, można je pominąć, oryginalny klient je wysyła. W dalszej części rozdziału będą pominięte ;)
W odpowiedzi na powyżej przedstawione zapytanie, serwer zwróci nam informacje w formacie XML, zależnie od wartości zmiennej v
.
Dla wartości mniejszej od 10
odpowiedz będzie taka sama jak w uproszczonym zapytaniu przedstawionym na początku rozdziału.
Przy wartościach z przedziału 10
-12
odpowiedż będzie następująca:
<t s="s1.tlen.pl" p="443" v="91" c="0" i="83.5.30.88">91</t>
Zawartość atrybutów s
i p
jest już nam znana, jest to nazwa hosta serwera Tlenu dla naszego połączenia oraz port, z którym powinniśmy się łączyć. Również o v
i c
już wspominaliśmy.
Nowością jest parametr i
zawierający adres IP, z którego wysłaliśmy zapytanie.
Zawartość głównego tagu <t></t>
jest taka sama jak wartość atrybutu v
.
Dla v
powyżej 12
odpowiedź nie zawiera już zawartości głownego taga.
Dla wartości 24
-44
dodatkowo wartość c
uległa zmianie z dotychczasowej wartości 0
na 1
.
Od wersji 45
wprowadzono dodatkowy atrybut r
określający adres IP serwera. Także po raz kolejny uległa zmianie wartość atrybutu c
, która przyjmuje obecnie wartość 16
. Całość przedstawia się następująco:
<t s="s1.tlen.pl" p="443" r="193.17.41.53" v="91" c="16"
i="83.5.30.88"/>
Aktualnie, od wersji 75
(do aktualnej - 91
), odpowiedź została wzbogacona o kolejny nowy atrybut oznaczony h
, którego zawartość nie jest nam jeszcze znana:
<t s="s1.tlen.pl" p="443" r="193.17.41.53" v="91" c="16"
h="585C5D" i="83.5.30.88"/>
Prawdopodobnie od wersji 5.50.1.1 klienta Tlen.pl wprowadzono dodatkową, nową zmienną w zapytaniu, które obecnie przyjmuje postać (z pominięciem dodatkowych nagłówków HTTP):
GET /4starters.php?u=malcom&v=91&m=1&sid=standardowy HTTP/1.0
Host: idi.tlen.pl
Tym nowym parametrem jest sid
. Wartość tej zmiennej określa używaną przez nas skórkę. Ciekawe, po co taka informacja?