Ankündigung

Einklappen
Keine Ankündigung bisher.

cURL: Webseite einlesen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • cURL: Webseite einlesen

    Hallo zusammen,

    Ziel:
    Mit einem PHP-Skript eine url aufrufen, der Server hinter der url soll denken das Skript von meinem Server wär kein Skript ohne ref. etc. sondern mein lokaler Browser!

    Ich habe mich ein wenig mit cURL befasst und möchte mit dieser Bibliothek eine Seite einlesen. Es wird die Möglichkeit gegeben einen Timeout zu setzen und man bekommt mit der Fkt. curl_errno oder curl_error eine aussagekräftige Fehlernummer und -meldung. Man hat halt viel mehr Möglichkeiten.

    Nun habe ich folgendes Skript, das die Spiegel-Seite einliest. Allerdings werden in der Browser-Ausgabe keine Bilder angezeigt und die Links "falsch" sind. D.h. statt z.B. http://www.spiegel.de/wirtschaft/0,1...2,00.htmlsteht http://192.xxx.x.xxx/wirtschaft/0,1518,308402,00.html drin, also die IP meines internen Webservers.

    => Da die bei Spiegel relative URLs verwenden, die dann von meinem Browser falsch interpretiert werden, weil das für ihn ja "relativ zum Server 192.xxx" heißt.

    PHP-Quellcode:

    <?php
    $string = download("http://www.spiegel.de");

    echo $string;

    function download($url) {
    $ch = curl_init($url);
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_HEADER, 0);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec ($ch);
    curl_close ($ch);
    return $result;
    }
    ?>


    ==> Hmm, ich will wirklich "nur" die Seite einlesen "as is", also so wenn ich die Seite in meinem Browser anschaue. Ich will ja nicht die Links extra anpassen!

    ==> Kann ich mit cURL einen lokalen Browser "vorgaukeln", damit er mir die Seite so ausgibt, wenn ich diese direkt im Browser aufrufe?


    Danke!


  • #2
    Hallo,

    ich nehme an, es hat seinen Sinn, daß Du die Seite nicht einfach direkt aufrufst oder in einen Frame packst ...


    Ich würde dem eingelesenen String mit preg_replace() zuleibe rücken; dabei könnte parse_url() hilfreich sein.

    Es gibt aber auch ein(en) HTML-Tag, der <base-url> oder so ähnlich heißt, dann beziehen sich die relativen Links auf der Seite auf diesen URL.


    PS: Wenn Du das Ziel mit curl_init($url) bestimmst, brauchst Du curl_setopt($ch, CURLOPT_URL, $url) nicht mehr.

    Kommentar

    Lädt...
    X