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