Les sockets et le protocole HTTP
Bon, nous allons commencer par la base đ
Les sockets
Un socket est un flux de communication entre deux objets que nous nommerons “Client” et “Serveur” dans le cadre du projet. Le Client va demander un droit de crĂ©er un canal de communication avec le Serveur, puis, si celui ci accĂšpte, le Client et le Serveur pourront communiquer.
En C++, C#, Java, etc… les fonctions sont quasi-identiques. Cela consiste :
- Créer un objet Socket
- Le paramĂ©trer (TCP, Internet, etc… et le Host, le port)
- Lancer la demande pour le client ou se mettre en “Listen” pour le serveur
- Les fermer et les détruires
Le mode listen est le mode du Serveur qui consiste Ă attendre une demande de connection d’un Client. Celle ci est souvent bloquante bien que certaines alternatives avec CallBack ou Non bloquante existe.
Le socket est la base d’internet comme du rĂ©seau local…
Voici un Client – Serveur de chat simple sur Developpez.com :http://stephaneey.developpez.com/tutoriel/dotnet/sockets/
Le protocole HTTP
Le protocole HTTP, si vous passez outre la partie rĂ©seau s’avĂšre assez simpliste. Voici une version du RFC de l’ancien salemioche.net : http://www.iprelax.fr/http/1945tm.php
En quoi consiste la petite partie du protocole qui nous intéresse pour notre projet ? Voici ce que doit faire notre programme :
Une fois connecté, lui envoyer une demande de page en envoyant tout simplement une string avec
GET NomDeLaPage HTTP/1.1 host: alphablog.org (Double retour chariot pour finir)
et la réponse est du style
HTTP/1.1 200 OK Date: Thu, 20 Dec 2001 17:11:50 GMT Server: Apache/1.3.19 (Unix) PHP/4.0.6 Last-Modified: Thu, 20 Dec 2001 16:36:22 GMT ETag: "2cb9e7-61c-3c221386" Accept-Ranges: bytes Content-Length: 1564 Connection: close Content-Type: text/html X-Pad: avoid browser bug <html><head> ...(Suite et fin)
Enfin nous rĂ©cupĂ©rons le code renvoyĂ© par le Serveur, nous le parsons et nous en extrayons les cookies, les sessions, les liens html etc…
Je vous laisse le plaisir de dĂ©couvrir les joies d’extraire tout ces petits champs et si le malheur s’abat sur vous, la chance de dĂ©couvrir les “serveurs caches”.
Autre difficultĂ©, trouver dans le RFC les “nomenclatures” de fin de paquet par exemple, de sĂ©paration entre paquet systĂšme et paquet utile (entre le “HTTP/1.1 200 OK…” et le “<html>…”) et aussi la mĂ©thode d’envoie des paramĂštres POST et GET qui ne sont pas si compliquĂ©s.
Application a Ogame
But de la manoeuvre : faire croire a Ogame qu’on joue… Pour cela, rien de plus simple, on va :
– Se connecter Ă lui
– RĂ©cupĂ©rer des pages et envoyer des demandes pour :
— Simuler une identification et rĂ©cupĂ©rer les Session gĂ©nĂ©rĂ©s par php
— GĂ©nĂ©rer les paquets d’affichage des pages, les rĂ©cupĂ©rer et les parser.
– Fermer proprement la session et enfin le socket.
Outils utiles (indispensables)
Les plugins de firefox qui affichent/modifient les paquets ou un bon sniffer avec décryptage de paquet HTTP (gzip entre autre).
Un peu de patiente.
Si vous avez des questions, postez Ă la suite une question consise et complĂšte et je tacherais d’y rĂ©pondre.