• [^] # Re: intercepter le html a la volé

    Posté par (site web personnel, Mastodon) . En réponse au journal intercepter le html a la volé. Évalué à 2.

    je suppose que tu sais etablir un connexion avec socket pour une adresse et un port donné :

    bon admettons que tu veuilles le contenu de la page html http://www.google.fr/about.html(...)

    tu fais une connection à l'hote www.google.fr sur le port 80 (port classique pour http)

    si tu veux faire un essai tu fais : "telnet www.google.fr 80"
    ensuite il te dit :

    Trying 64.233.167.99...
    Connected to www.google.fr.
    Escape character is '^]'.

    ensuite tu tapes : "GET /about.html HTTP/1.1" suivi de 2 retours chariot

    il t'affiche donc le contenu de : http://www.google.fr/about.html(...)



    HTTP/1.1 200 OK
    Content-Type: text/html
    Last-Modified: 2004年4月02日 01:20:24 GMT
    Set-Cookie: PREF=ID=33ddff4717cdd806:TM=1081092848:LM=1081092848:S=sWfOpzwO3ucQAG6s; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com
    Server: GWS/2.1
    Content-length: 9938
    Date: 2004年4月04日 15:34:08 GMT



    <HTML>
    <HEAD>
    <TITLE>About Google</TITLE>
    <style>
    <!--
    body,td,font,p,a{font-family:arial,sans-serif}
    //-->
    </style>

    [ coupure ]


    Google <a href="privacy.html">Privacy Policy</a> - <a href="terms_of_service.html">Terms
    of Service</a></font> </td>
    </tr>
    </table>
    </center>
    </body>
    </HTML>



    tu remarqueras en début de réponse les entêtes http... puis le contenu qui suit...


    maintenant comment faire ça en C :

    // tu crées le/la socket pour se connecter sur l'hôte www.google.fr sur le port 80...
    soc = socket( structure qui va bien, tous ça, tous ça)

    // ensuite tu ecrit ta requete sur le/la socket
    write(soc, "GET /about.html HTTP/1.1\r\n", taille_en_octets__de("GET /about.html HTTP/1.1\r\n")

    // t'attends de lire la réponse :
    read(soc, buffer, taille_que_tu_veux)

    a tous ça s'ajoute les controles d'erreurs, dans ce que tu recois du dois séparer les entêtes du contenu a priori séparér par deux "\n\n" consécutifs mais vaut mieux jeter un coup d'oeil à la RFC du protocole.....
    dans les entetes se trouvent aussi la tailles du "contenu html" à lire .....


    voila, voila ....


    M.