Spiky HTTP Client

Spiky ist eine auf PHP5 aufgesetzte HTTP Klasse. Sie ermöglicht den Datentransfer mit fremden Webservern über HTTP 1.1.

Funktionen im Überblick

  • Cookies lesen, setzen und verfolgen
  • SSL geschützte Verbindungen
  • HTTP-Methoden: GET, POST, HEAD, TRACE, OPTIONS
  • Unterstützung von HTTP-Proxys
  • Lesen von GZIP komprimierten Daten
  • Konvertieren von Chunked-Datenströmen
  • HTTP-Datei Uploads
  • Ermöglicht das Modifizieren von Referer, UserAgent, Sprache, Zeichensatz, etc.
  • Unterstützt HTTP-Authentifizierung (http_auth)

Download

Beispiele

Get-Anfrage an Webserver

1
2
3
4
5
6
7
8
9
10
11
// Spiky inkludieren:
Include 'class_spiky.php';
 
// Spiky initialisieren:
$spiky = New Spiky;
 
// Get auslösen:
$result = $spiky->get ('http://www.google.de/');
 
// Daten verarbeiten
Echo HtmlSpecialChars ($result);

get() ist eine Hilfsfunktion um ohne viel Code den Inhalt eines fremden Dokuments zu holen. Analog würde das mit Query() dann so aussehen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Spiky inkludieren:
Include 'class_spiky.php';
 
// Spiky initialisieren:
$spiky = New Spiky;
 
// URL setzen:
$spiky->setUrl ('http://www.google.de/');
 
// Query auslösen:
$spiky->Query();
 
// Daten verarbeiten
Echo HtmlSpecialChars ($spiky->Body());

Spiky kann HTTP-Anfragen auch über verschiedene Server umleiten. Benutzen von Proxy-Servern:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Spiky inkludieren:
Include 'class_spiky.php';
 
// Spiky initialisieren:
$spiky = New Spiky;
 
// URL setzen:
$spiky->setUrl ('http://www.google.de/');
 
// Proxy setzen:
$spiky->setProxy ('114.127.246.36', '8080');
 
// Query auslösen:
$spiky->Query();
 
// Daten verarbeiten
Echo HtmlSpecialChars ($spiky->Body());

Behandlung von Cookies

Spiky liest beim Auswerten von HTTP-Paketen alle Cookies mit aus, speichert diese aber nicht für den nächsten Request automatisch. Um Cookies in der nächsten Anfrage wieder zu verwenden, gibt es die Funktion applyCookies().

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Spiky inkludieren:
Include 'class_spiky.php';
 
// Spiky initialisieren:
$spiky = New Spiky;
 
// URL setzen:
$spiky->setUrl ('http://www.google.de/');
 
// Query auslösen:
$spiky->Query();
 
// Cookies lesen:
Print_R ($spiky->getCookies());
 
// Cookies speichern:
$spiky->applyCookies();
 
// Cookies setzen:
$spiky->addCookie ('name_des_cookies', 'ein beliebiger Wert');
 
// Nächste Anfrage:
// $spiky->Query(); //...

Sichere SSL-Anfragen

Um Daten aus Online-Shops oder von Bankseiten zu erfragen ist meist SSL notwendig. Spiky unterstützt SSL inklusive aller Features.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Spiky inkludieren:
Include 'class_spiky.php';
 
// Spiky initialisieren:
$spiky = New Spiky;
 
// URL setzen:
$spiky->setUrl ('https://epetitionen.bundestag.de/');
 
// Query auslösen:
$spiky->Query();
 
// Daten auswerten:
Echo HtmlSpecialChars ($spiky->Body());

Funktionsreferenz

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
Class Spiky {
  Function setURL ($url){
    // Setzt die zu verwendende URL.
  }
 
  Function setProxy ($ip, $port = 80){
    // Setzt den Proxy-Server
    // Standardport für den Proxy ist 80
  }
 
  Function setMethod ($method){
    // Setzt die Methode die als HTTP-Anfrage verwendet wird.
    // Standard: GET / POST
  }
 
  Function setUserAgent ($userAgent){
    // Setzt das UserAgend-Feld im Header.
  }
 
  Function setLanguage ($lang){
    // Setzt das Language-Feld im Header.
  }
 
  Function setCharset ($charset){
    // Setzt das Charset-Feld im Header.
  }
 
  Function setReferer ($url){
    // Setzt den Referer der Anfrage.
  }
 
  Function setAuth ($username, $password){
    // Setzt die Zugangsdaten für die HTTP Anfrage.
  }
 
  Function addCookie ($name, $value){
    // Fügt dem Header einen Cookie hinzu.
  }
 
  Function addGetVar ($name, $value){
    // Fügt der Anfrage eine GET-Variable hinzu.
  }
 
  Function addPostVar ($name, $value){
    // Fügt der Anfrage eine POST-Variable hinzu.
  }
 
  Function addFile ($name, $filePath, $fileName = Null){
    /* Hängt eine Datei an die Anfrage an.
       $name : Name des Feldes (eq: Name des Inputfeldes in HTML-Form)
       $filePath : Path zur Datei
       $fileName : Der Dateiname der für diese Datei an den Server gesendet wird.
         Standard: Originaldateiname
    */
  }
 
  Function addStream ($name, &$stream, $fileName){
    /* Hängt eine Datei an die Anfrage an.
       $name : Name des Feldes (eq: Name des Inputfeldes in HTML-Form)
       $stream : Binärcode der zu sendenden Datei als Zeiger auf einen String.
       $fileName : Der Dateiname der für diese Datei an den Server gesendet wird.
    */
  }
 
  Function Head(){
    // Gibt den Kopf der letzten Serverantwort als String zurück.
  }
 
  Function Body(){
    // Gibt den Rumpf der letzten Serverantwort als String zurück.
  }
 
  Function getHeader ($key){
    // Gibt den Wert eines Feldes ($key) der letzten Serverantwort zurück,
    // oder, falls nicht vorhanden, (bool) FALSE.
  }
 
  Function getCookies (){
    // Gibt alle Cookies der letzten Serverantwort als assoziatives Array zurück.
  }
 
  Function applyCookies (){
    // Übernimmt alle Cookie der letzten Serverantwort für die nächste Clientenanfrage.
  }
 
  Function Query (){
    /* Führt eine HTTP-Anfrage durch.
       Ist die Anfrage erfolgreich, werden alle Post-, Get- und File-Variablen gelöscht!!!
       Anderenfalls gibt die Funktion (bool) FALSE zurück.
    */
  }
 
  Function Get ($url){
    /* Die einfachste Möglichkeit eine Spiky-HTTP-Anfrage zu stellen.
       Erwartet: eine URL
       Gibt zurück: (String) Anwort des Servers ohne HTTP-Header
    */
  }
}

Hinterlasse eine Antwort

XHTML: Diese Tags kannst du nutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>