Snoopy
Snoopy - PHP Klasse die einen Web Browser
Hinweis: Ich mache mal wieder bei einem SEO Contest mit. Die Seite
Revierphone
ist meine Seite zum SEO Contest. Wer mich unterstützen möchte, kann die Seite http://m-software.de/revierphone/
mit dem Linktext Revierphone verlinken.
Vielen Dank im Voraus
Ein Beispiel für die Klasse Snoopy
Hier das Original Beispiel aus dem README der Distribution mit einigen Kommentaren von mir.include \"Snoopy.class.php\"; $snoopy = new Snoopy; // Die folgenden 2 Zeilen rufen den Inhalt der Seite www.php.net ab und // zeigen den Inhalt als Text an. $snoopy->fetchtext(\"http://www.php.net/\"); print ($snoopy->results); // Die folgenden 2 Zeilen rufen den Inhalt der Seite www.phpbuilder.com ab und // zeigen die Links der Seite an. $snoopy->fetchlinks(\"http://www.phpbuilder.com/\"); print_r ($snoopy->results); // Die folgenden 6 Zeilen Beispielcode erzeugen einen POST REQUEST mit den Parametern // q=amiga, submit=Search! und searchhost=Altavista. Das Ergebnis ist der HTML Code // der Seite ohne HTTP-Header $submit_url = \"http://lnk.ispi.net/texis/scripts/msearch/netsearch.html\"; $submit_vars[\"q\"] = \"amiga\"; $submit_vars[\"submit\"] = \"Search!\"; $submit_vars[\"searchhost\"] = \"Altavista\"; $snoopy->submit($submit_url,$submit_vars); print ($snoopy->results); // Die folgenden 7 Zeilen rufen den Inhalt der Seite www.ispi.net ab und // zeigen den Inhalt der Frames Text an. Die maximale Frametiefe ist hier 5. $snoopy->maxframes=5; $snoopy->fetch(\"http://www.ispi.net/\"); echo \"<PRE>\\n\"; echo htmlentities($snoopy->results[0]); echo htmlentities($snoopy->results[1]); echo htmlentities($snoopy->results[2]); echo \"</PRE>\\n\"; // Die folgenden 2 Zeilen rufen den Inhalt der Seite www.altavista.com ab und // zeigen den Inhalt des Formulares an. // Hinweis: Wenn auf der Seite mehr als ein Formular verwendet wird, // werden alle Formulare der Seite ausgegeben. $snoopy->fetchform(\"http://www.altavista.com\"); print $snoopy->results;Weitere umfangreiche Beispiele finden sich im Abschnitt EXAMPLES der README Datei.
Die Liste der wichtigsten Snoopy Features
Einfaches abrufen von Web InhaltenEinfaches abrufen des Textinhaltes von Webseiten
Einfaches abrufen der Links von Webseiten
Support von HTTP Proxys
Support von HTTP-Authentication (Anmeldung mit Username und Passwort)
Unterstützt die Änderung der HTTP-Request Headerdaten user_agent, referer, cookie
Unterstützt Weiterleitungen (redirects) mit Vorgabe einer best. Weiterleitungstiefe
Snoopy kann die Links einer Webseite in \"fully qualified URLs\" umwandeln
Automatisches ausfüllen und abschicken von Formularen
Seit der Version 0.92 werden auch Frames unterstützt
Seit der Version 0.92 werden auch Cookies im Request und Response Code unterstützt
Anforderungen der Klasse Snoopy
Snoopy wurde entwickelt und getestet mit PHP 3.0.12. Benötigt aber PHP4 Beta 4 oder neuer für den Support von \"Read Timeout\". Snoopy benötigt PCRE (Perl Compatible Regular Expressions) die seit PHP 3.0.9 Bestandteil der PHP Standardinstallation sind. Snoopy benötigt kein MySQL und auch sonst keine weiteren Pakete oder Module.Die Installation von Snoopy.class.php
In der Datei INSTALL der Version 1.2.3 steht lapidar nur folgender Satz: \"Put Snoopy.class.php into one of the directories specified in your php.ini include_path directive.\"Das ist aber nur möglich, wenn man die entsprechenden Rechte auf dem Server hat. Abfragen kann man den include_path ganz einfach mit folgenden PHP Skript.
phpinfo.php <? phpinfo(); ?>Dieses Kommando zeigt alle möglichen Infos zu der PHP Installation an. In der Zeile für den include_path steht dann der eingestellte Pfad. In meinem Falle ist es \".;c:\\programme\\xamp\\xampp\\php\\pear\\\" (Der Kenner wird gleich erkennen, dass es sich um eine XAMPP Installation unter Windows handelt - richtig. Bei einen Suse Linux System könnte es folgendermassen aussehen. \".:/usr/share/php\"). Aber zurück zum Include Path. In meinem Falle ist an Anfang der Pfades ein \".\" eingetragen. Das bedeutet ich kann die Datei Snoopy.class.php in das Verzeichnis kopieren in dem ich auch mein PHP Skript ausführe. In dem Verzeichnis habe ich normalerweise alle Rechte (lesen, schreiben, ausführen). Sollte aber auch das nicht richtig funktionieren, bleibt nur den Inhalt der Datei Snoopy.class.php in mein PHP-File zu kopieren. Achtung: Dass sollte immer nur der letzte verzweifelte Ausweg sein. Denn ein include \"Snoopy.class.php\"; bei dem die Datei \"Snoopy.class.php\" im gleichen Verzeichnis liegt wie das auszuführende PHP Skript sollte IMMER klappen. Sollte man aber z.B. einen Root-Server betreiben und öfter mit der Datei \"Snoopy.class.php\" arbeiten ist es ratsam die Datei an einer zentralen Stelle in den Include_Path zu übernehmen. In meinem Falle währe es unter \"c:\\programme\\xamp\\xampp\\php\\pear\\\". Da hier aber nur PEAR (The PHP Extension and Application Repository) rein gehört ist es ratsam den Include_Path zu erweitern und die Datei \"Snoopy.class.php\" an anderer Stelle abzulegen. PHP.ini
PEAR
Snoopy
Die Autoren von Snoopy.class.php
Monte Ohrt- main Snoopy work Andrei Zmievski - miscellaneous fixes - read timeout support - file submission capability Gene Wood - bug fixes - security fixes
Die Funktionen der Klasse Snoopy.class.php
fetch($URI)Dies ist die Methode mit der Web Inhalte geladen werden können. Der Parameter $URI ist der URL der geladen werden soll. Das Ergebnis wird unter $this->results gespeichert. Wenn mit der Methode Frames geladen werden (Siehe auch Klassenvariable maxframes) ist das Ergebnis ein Array bei dem jedes Element des Arrays ein Frame enthält.
fetchtext($URI)
Diese Methode entspricht der Methode fetch. Außer das hier der reine Textanteil in der Variable results gespeichert wird. Alle HTML Tags werden entfernt und evtl. vorhandene Sonderbehandlungen durchgeführt. Dies betrifft z.B. Umlaute und Sonderzeichen.
fetchform($URI)
Diese Methode entspricht der Methode fetch. Außer das hier nur die Formularelemente in der Variable results gespeichert werden. Alle anderen nicht relevanten Teile der HTML Seite werden entfernt.
fetchlinks($URI)
Diese Methode entspricht der Methode fetch. Außer das hier nur die Links der Seite in der variable results gespeichert werden. Das Ergebnis in der Variable results ist ein Array.
submit($URI,$formvars)
Mit dieser Methode werden die Formulardaten an den angegebenen URI gesendet. In dem Array formvars stehen alle Werte des Formulars. (Hierbei handelt es sich um einen POST Request)
submittext($URI,$formvars)
Diese Methode entspricht der Methode submit. Außer das hier der reine Textanteil der Webseite in der Variable results gespeichert wird. Alle HTML Tags werden entfernt und evtl. vorhandene Sonderbehandlungen durchgeführt. Dies betrifft z.B. Umlaute und Sonderzeichen.
submitlinks($URI)
Diese Methode entspricht der Methode submit. Außer das hier nur die Links der Seite in der variable results gespeichert werden.
Die Klassenvariablen der Klasse Snoopy.class.php
| $host | Der HTTP Host von dem die Inhalte geladen werden sollen. |
| $port | Der HTTP Post des HTTP-Servers (z.B. Apache Webserver) |
| $proxy_host | Der HTTP Proxy Host (falls vorhanden) |
| $proxy_port | Der HTTP Proxy Port (falls vorhanden) |
| $agent | Der verwendete User_Agent |
| $referer | Der verwendete Referer |
| $cookies | Die Cookies (falls vorhanden) |
| $rawheaders | Andere HTTP-Header Informationen (falls vorhanden) |
| $maxredirs | Maximale Anzahl der HTTP-Redirects. |
| $offsiteok | Folge auch Redirects die auf einen anderen Server verweisen. (Ja/Nein) |
| $expandlinks | Sollen Links in vollständige URLs umgewandelt werden (Ja/Nein) |
| $user | HTTP-Authentication Benutzername (falls vorhanden) |
| $pass | HTTP-Authentication Passwort (falls vorhanden) |
| $accept | HTTP-Accept Typen Default: (image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*) |
| $error | Evtl. vorhandene Fehlermeldungen (falls vorhanden) |
| $response_code | HTTP-Response Code der vom Server übertragen wurde. |
| $headers | HTTP-Header der vom Server übertragen wurde. |
| $maxlength | Maximale Länge der Daten (HTTP-Response Body). |
| $read_timeout | Socket Timeout auf die Leseoperationen. Wenn 0 wird kein Timeout verwendet. |
| $timed_out | Wird auf 1 gesetzt wenn die Leseoperation in ein Timeout gelaufen ist. |
| $maxframes | Anzahl der Frames die geladen werden. |
| $status | HTTP Status der fetch Methode(n) |
| $temp_dir | Das temp Verzeichnis in das die Klasse schreiben darf |
| $curl_path | System Pfad zu cURL. Wenn cURL nicht installiert ist bitte auf false setzen. |
Hat Ihnen dieser Beitrag geholfen? Dann speichern Sie Ihne doch bei diesen Diensten:
Wenn Ihnen diese Informationen zu "Snoopy" gefallen haben, Sie Anregungen oder Kritik haben, dann schreiben Sie mir doch einfach eine E-Mail an M.Jentsch@web.de.




