Skip Navigation

Login





Join! | Login troubles?

Online members

Guests:2
Members:0

Poll

What's your favorite scripting language for solving challenges?


python (12.4%)

perl (9.2%)

bash (3.2%)

ruby (1.9%)

php (37.5%)

javascript (13.0%)

I'm not convinced scripting saves time, I use a "proper" language for everything I do. (15.6%)

Scripting? Excel for the winners, man! (7.3%)


Total votes: 315
Date added: 2008-06-14

View text

Info
Author Da CybrSrfr
Date added 2003-12-28
Last modified 2003-12-28


HTTP

Het HTTP protocol word door je browser gebruikt om pagina's van servers op te vragen.
Dit gebeurd door een HTTP HEADER te versturen.
Tegenwoordig is de meestgebruikte HTTP header van de versie 1.1.

Hoe ziet zo'n HTTP query er nou eigenlijk uit?

GET /index.htm HTTP/1.1

Dit is een HTTP header.
Wat hij doet is van een server het bestand '/index.htm' opvragen via het HTTP protocol versie 1.1.
Naast GET zijn er nog meer opties; HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK, TRACE
Deze opties verschillen per server en per bestand op de server.

Laten we in PHP eens kijken wat er nou gebeurd.
Hiervoor heb ik het volgende script geschreven.

        <html>
        <head></head>
        <body>
        Example:<br><br>
        Host: <i>www.google.com</i><br>
        Command: <i>GET / HTTP/1.1</i><br><br>
        <form method="post" action="http.php">
        <table>
         <tr><td>Host</td><td><input type="text" name="host" value="<? echo $_POST['host']; ?>"></td></tr>
         <tr><td>Command</td><td><input type="text" name="command" value="<? echo $_POST['command']; ?>"></td></tr>
         <tr><td></td><td><input type="submit" value="Go!"></td></tr>
        </table>
        </form>
        <?
          if ($_POST['host']) {
           $host = $_POST['host'];
           echo "Host: ".$_POST['host']."<br>\n";
           echo "Command: ".$_POST['command']."<br>\n";
           echo "Port: 80<br>\n";
           echo "User-agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)<br><br>\n";
              // Maak verbinding met de server op poort 80
              $hRemote = fsockopen($host, 80, &$errno, &$errstr);
              $sData = '';
             $request = $_POST['command']."\r\n";
             $request .= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)\r\n";
             $request .= "Host: ".$_POST['host']."\r\n";
             $request .= "Connection: Close\r\n\r\n";
            // Verstuur de HTTP query
             fputs($hRemote, $request);
             if (!$hRemote) {
                 $sData = 'No results';
             } else {
                 // We have data ... now get the contents
                 while (!feof($hRemote)) {
                     $sData = $sData.fgets($hRemote, 1024);
                  }
             }
             fclose($hRemote);
            $regel = explode("\n", $sData);
            $aantal = count($regel);
            echo "<textarea cols=90 rows=20>$sData</textarea>";
         }
        ?>
        </center>
        </body>
        </html>

Via dit script kun je zelf HTTP headers naar servers gaan sturen.
Probeer het voorbeeld maar eens na te doen.
Vul bij host de waarde 'www.google.com' in.
En als command de waarde 'GET / HTTP/1.1'.
Je zult zien dat wat je terugkrijgt meer is dan wat je in je browser ziet.

        HTTP/1.1 302 Found
        Location: http://www.google.nl/cxfer?c=PREF%3D:TM%3D1072605514:S%3DRKp8YGZiFzlxYPUm
        Set-Cookie: PREF=ID=34114e1067f3bafa:CR=1:TM=1072605514:LM=1072605514:S=EsaPTXyc5gTWfg1s; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com
        Content-Type: text/html
        Server: GWS/2.1
        Content-length: 203
        Date: Sun, 28 Dec 2003 09:58:34 GMT
        <HTML><HEAD><TITLE>302 Moved</TITLE></HEAD><BODY>
        <H1>302 Moved</H1>
        The document has moved
        <A HREF="http://www.google.nl/cxfer?c=PREF%3D:TM%3D1072605514:S%3DRKp8YGZiFzlxYPUm">here</A>.
        </BODY></HTML>
        
Maar wat heb ik hieraan hoor ik je denken.
Nou via deze methode kun je RSS en XML feeds van bijvoorbeeld nieuwssites binnenhalen
om ze zelf te parsen voor op de homepage. Als je een goed filter bouwt hoef je niet eens
een RSS of XML feed te hebben, maar kun je het uit een php bestand halen.

Da CybrSrfr