Programmbibliothek cURL: Daten in Netzwerken übertragen – Beispiele

Was ist und macht cURL?

cURL ist eine PHP-Bibliothek und ein Befehlszeilentool, mit dem Dateien über HTTP und FTP gesendet und empfangen werden können. Es können Proxys verwenden werden, Daten über SSL-Verbindungen übertragen, Cookies gesetzt und sogar Dateien abrufen, die durch eine Anmeldung geschützt sind.

cURL (Client for URLs) wird für die Übertragung von Dateien in Computernetzwerken eingesetzt. cURL erleichtert die Verbindung zwischen verschiedenen Websites und Domänen.

cURL nutzt für alle Funktionen die Bibliothek libcurl.

Unterstütze Betriebssysteme und Protokolle

URL wurde auf die folgenden Betriebssysteme portiert, darunter:

  • Solaris
  • NetBSD
  • FreeBSD
  • OpenBSD
  • Linux
  • Windows
  • AmigaOS
  • OS/2
  • OpenVMS
  • RISC OS
  • Novell Netware
  • DOS

„Client for URLs“ist es ein Werkzeug zum Herunter- oder Hochladen von Dateien über eine Internetadresse. Eine Übertragung von Daten per POST ist ebenfalls möglich.

Zu den unterstützten Protokollen gehören unter anderem:

  • FILE
  • FTP, FTPS
  • Gopher
  • HTTP, HTTPS
  • IMAP, IMAPS
  • POP3
  • SCP, SFTP
  • SMTP, SMTPS
  • Telnet

Beispiel: Quelltext einer Website mit cURL und PHP lesen

Wenn Du den Quelltext (Quellcode) einer fremden Website mit einem PHP-Script auslesen und auswerten möchtest, bietet sich die cURL Bibliothek an.

<?php
// erzeuge einen neuen cURL-Handle
$ch = curl_init();

// setze die URL und andere Optionen
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, false);

// führe die Aktion aus und gebe die Daten in die Variable $quellcode
$quellcode = curl_exec($ch);

// schließe den cURL-Handle und gebe die Systemresourcen frei
curl_close($ch);
?>

Eine Liste aller cURL-Optionen findest Du hinter DIESEM Link.

Beispiel: Daten per POST mit cURL an externe Website senden

Ich möchte Daten per HTTP POST von einer Website zu einer fremden Website auf einer anderen Domain mit der cURL versenden. Auch in diesem Fall ist die Bibliothek libcurl von großem Vorteil, wenn sie auf dem Server aktiviert ist.

Am Anfang steht immer die Erzeugung eines sogenannten Handle mit dem Befehl curl_init().
Danach können mit dem Befehl curl_setopt() verschiedene (oder auch keine) Optionen für das angegeben cURL-Handle gesetzt werden. Der angelegte Handle $ch wird anschließend mit dem Befehl curl_exec($ch) ausgeführt.

Die libcurl Bibliothek kann mit HTTP als auch HTTPS verwendet werden.

Ausgangs-Script sendet Daten per cURL-POST an Zielseite

// *
// A very simple PHP example that sends a HTTP POST to a remote site
// *

// === erzeuge ein cURL Handle
$ch = curl_init();

// === Lege die Ziel-URL fest
curl_setopt($ch, CURLOPT_URL,"https://www.entfernte-domain.de/curl_test.php");

// === Du möchtest einen POST absenden
curl_setopt($ch, CURLOPT_POST, 1);

// === Welche Daten sollen versendet werden?
curl_setopt($ch, CURLOPT_POSTFIELDS, "url=".$Domain."&seite=".$Seite."&datum=".$datum);

// === Erhalte eine Rückmeldung vom Server
$server_output = curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// === cURL-Handle ausführen
curl_exec($ch);

// Rückmeldung des fernen Server ausgeben
echo $server_output;

// === cURL-Handle beenden
curl_close($ch);

Das sieht jetzt dank der Kommentare relativ umfangreich aus. Doch um die Kommentare bereinigt, zeigt sich ein kleines Code-Snippet.

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://www.entfernte-domain.de/curl_test.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "url=".$Domain."&seite=".$Seite."&datum=".$datum);
curl_exec($ch);

Ziel-Website verarbeitet empfangene Post-Daten

Wir erzeugen eine Datei „curl_test.php“ auf einem fremden Server. Diese Datei soll per cURL POST-Daten empfangen und in eine Datenbank eintragen.

<?php
// Kleines Testscript zur Ausgabe der POST-Daten

echo "<pre>cURL POST: "; 	print_r($_POST); 	echo "</pre>";
  

Im Ausgangs-Script wurde mit dem Befehl CURLOPT_RETURNTRANSFER festgelegt, dass eine Rückmeldung erfolgen soll. Diese Rückmeldung besteht aus dem angezeigten Inhalt der Ziel-Webseite.

cURL POST: Array
(
    [url] => https://www.bye-coronavirus.de
    [seite] => /so-lang-ueberlebt-der-coronavirus-in-der-luft-und-auf-oberflaechen-vorlaeufige-laborergebnisse/wissen/13/
    [zeichen] => 2463
    [datum] => 2023-05-12 19:21:57
)

Diese von der Zielwebsite empfangenen POST-Daten können jetzt weiterverarbeitet, in eine MySQL-Tabelle eingetragen werden.

Beispiel: Auf geschützter Website mit cURL einloggen, anmelden

… Fortsetzung folgt …..