Un web crawler(sau web spider, web robot) este o aplicatie/ script automatizat care urmareste ceva pe internet. In alte cuvinte daca ii dam ca target un anumit site, acest crawler va aduna informatii si le va structura.
Internetul este o sursa nelimitata de informatii, dar in ultimul timp a devenit si un loc de joaca, fara sa iti incarce sistemul cu aplicatii mari, costisitoare si mai ales scumpe. O noua strategie in aceasta privinta o reprezinta jocurile online multiplayer sau MMOG (Massive multiplayer online game).
Aparut relativ de curand in Romania, Travian, a reusit intr-un timp destul de scurt sa isi stranga fani, fiind disponibile 5 servere : s1 (7900), s2 (9300), s4 (13760),s3(9500), s5(13100) - ultimul a fost lansat pe 5.11.2007 si are deja peste 13000 utilizatori.
Ce legatura are Travian cu un crawler web? Simplu: EU!
Am facut un parser care poate scoate orice informatie de pe server. As vrea totusi sa ma opresc asupra unuei singure facilitati: aceea de a structura toate aliantele din top 20. Cu alte cuvinte, dandu-i-se o alianta de pe server, gaseste toate relatiile sale : Razboi, PNA sau Ally. Un asemenea tool este de ajutor pentru cei din conducerea aliantelor, pentru a vedea cine ce a mai schimbat in relatiile de alianta, si mai ales, cine cu cine se razboieste!
Sa incepem descrierea tacticii de atac a crawler-ului:
1. Conectarea la server. (How to login to travian web site)
Conectarea din pacate a fost una dintre cele mai dificile taskuri, din cauza autentificarii care nu este documentata (evident) si a trebuit sa fac putin de reverse engineering :)
Asadar am folosit un tool de sniffing :WIREshark - care este free dar e destul de dificil de utilizat - tip puteti folosi IEWatch care se integreaza de minune cu InternetExplorer (pentru fainii acestui program), dar din pacate ca orice creeat de Microsoft nu este gratuit. Folosind Wireshark, am descoperit secventa de POST HTML care este trimisa la login. Spre fericirea mea userul si password-ul se trimit in plain text, deci e destul de simplu sa indentific secventa, in schimb partea mai grea a fost restul de campuri. Dau un indiciu mic mic, restul pe privat.
TIP:
Cam atat!!! Asteptam comentarii si sugestii.
marți, 4 decembrie 2007
Abonați-vă la:
Postare comentarii (Atom)
3 comentarii:
Amuzant...dar interesant.
Poti gasi orice informatie despre jucatori/aliante aici s[x].travian.[y]/map.sql
Unde x- serverul si y- domeniu.
Mult noroc!
Asta e doar inceputul - se poate dezvolta aplicatia pentru a tool-uri "ajutatoare"... Use your imagination :)
un mic bug: nu parsa ..... reusea sa identifice numai href["logout.php"]
Pai e normal ca nu parsa url-ul complet, acel parser e un parser pentru text, ca sa primesti un url complet, trebuie sa folosesti un parser pentru DOM.
Mai exact, tu incarci pagina, probabil intr-un string. De obicei, paginile web, sunt facute in asa fel incat folosesc link-uri relative de genul celui care lai zis tu (href="logout.php"), in loc sa foloseasca cai absolute pentru link-uri (de genul href="http://blogger.com/logout.php"; e foarte normal ca un parser de text sa nu poata scoate calea absoluta :(
eu am rezolvat problema asta odata, mai demult.... o sa incerc sa postez rezolvarea la problema asta pe unul din blogurile mele, cel care au ca tema crawlingul, in general, si datele: The Data Provider
Trimiteți un comentariu