URL per cURL öffnen

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

  • URL per cURL öffnen

    Hallo,

    bin mal gespannt ob mir jemand helfen kann... is glaub nen büschen komplizierter (kommt mir jedenfalls so vor )

    Also ich muss eine URL im Intranet mittels cURL öffnen und den inhalt graben.
    Das Problem ist mit fopen oder fsockopen fehlen mir einige daten, diese werden nur angezeigt wenn ich per browser die seite öffne und eine sessionid zugewiesen bekomme.

    Per curl bekomme ich diese sid, aber irgendwie zeigt der mir den inhalt der seite nicht an. Sicher weil ich nur den Header hole...

    Jetzt komm ich aber nicht weiter. Ich hab die Manual hoch und runter gelesen aber leider kein vernünftiges Ergebniss erziehlt.

    Stand der dinge:
    (Zeigt mir einige leere Bildflächen und unformatierte Links mehr nicht)
    PHP-Code:
    @$ch curl_init();

    curl_setopt($chCURLOPT_URL"$url");
    curl_setopt($chCURLOPT_HEADERtrue);

    @
    curl_exec($ch);
    @
    curl_close($ch); 

  • #2
    *nochmal auf mich aufmerksam mach*

    Kommentar


    • #3
      Re: URL per cURL öffnen

      Original geschrieben von Nordin
      Per curl bekomme ich diese sid, aber irgendwie zeigt der mir den inhalt der seite nicht an. Sicher weil ich nur den Header hole...[/PHP]
      Ja warum machst du das denn dann ...?
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Warum denn nicht mit fsockopen + fgets + fputs ?
        Die Session ID wirst du auch so übergeben bekommen.
        Also zuerst eine Verbindung erstellen mittels fockopen + url, die gesamte Antwort empfangen und einen request (fputs() ) nach der gewünschten Seite absetzen. Dann den gesamten Inhalt der Datei auf eine Var speichern und auf Weiterleitungen prüfen. In solchen Fällen findet beim ersten Aufruf der Seite eine Weiterleitung auf dieselbe Seite statt nur mit der Session ID angehängt. Diese Id steht jedoch ganz sicher im Header, den der Server für die Datei zurückschickt.
        Wenn du die neue URL aufgerufen hast, speicherst du diese wieder auf eine Var und suchst darin nach dem HTTP Status Code 200 (Seite gefunden und alles i.O).
        Dann zerlegst du den Inhalt der Datei und suchst dir die Bereiche raus, die du brauchst.

        Gruss

        tobi

        p.s. schau dir das Manual zum Thema an
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Original geschrieben von jahlives
          Warum denn nicht mit fsockopen + fgets + fputs ?
          Gute Frage... Da war mal was. *grübel*
          Ich glaube der Grund warum ich das nicht damit gemacht hab ist:
          Ich hänge in einem Intranet, der Proxy lässt mich nicht mit diesen Befehlen komunizieren. Ja, irgendwie so war das mal... Darum hab ich mich mit cURL befast...

          Aber gut dann muss ich es mit deiner Variante bei den Intranetseiten machen und im Internet werd ich dann später versuchen...

          Ich dank dir jedenfalls erstmal für deine Antwort! SUPER!

          Kommentar


          • #6
            Ich hänge in einem Intranet, der Proxy lässt mich nicht mit diesen Befehlen komunizieren
            Also wenn der Proxy GET Requests filtert, wie findest du denn Google
            Der Proxy kriegt doch nicht mit ob der GET Request von einem Browser, von PHP oder deiner Kaffeemaschine ausgelöst wurde. Solange er konform ist wird der durch jeden Proxy durchgereicht, ansonsten tschüss Internet...

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              hmmm hast recht.
              Aber irgendetwas war da... Ich komm noch drauf, is schon ne weile her als ich an diesem problemchen saß...
              Zuletzt geändert von Nordin; 15.03.2006, 09:56.

              Kommentar


              • #8
                Verdammt ich bekomm das nicht hin...
                Hab eben auch noch mal gesucht hier im Forum... aber nix passendes gefunden. Ist nen büschen kompliziert für mich... wenn du nen Thema dazu hier irgendwo kennst wär ich dir dankbar wenn mir den link mal gibst.
                Oder was natürlich noch besser wär, für meine zwecke diesen codeschnippsel mal schnell posten aber ich denk das ist zuviel des guten *g*

                Kommentar


                • #9
                  Also mit cURL komm ich immerhin soweit das er mir die seite aufbauen will aber kurioserweise sucht der alle links (href und src) auf meinem Server... des heißt ich müsste irgendwie noch sagen das er auf http://xxxx.de/ordener/ gucken soll.

                  Aber wie?
                  PHP-Code:
                  function get_results($url) {
                    
                  $ch curl_init($url);
                     
                    
                  curl_setopt ($chCURLOPT_URL"$url");             // aufzurufende URL
                    
                  curl_setopt ($chCURLOPT_HEADER0);               // Header in die Ausgabe aufnehmen
                    
                  curl_setopt ($chCURLOPT_RETURNTRANSFER1);       // gibt Transfer zurück, anstatt die Ausgabe vorzunehmen
                    
                  curl_setopt ($chCURLOPT_USERAGENT"Mozilla/4.0");// User-Agent-Feld im HTTP Header
                    
                  curl_setopt ($chCURLOPT_FOLLOWLOCATION0);       // folgt alle LOCATION:

                    
                  $result curl_exec ($ch);
                    
                  curl_close ($ch);
                    return 
                  $result;
                  }

                  echo 
                  get_results($url); 

                  Kommentar


                  • #10
                    Original geschrieben von Nordin
                    aber kurioserweise sucht der alle links (href und src) auf meinem Server...
                    Wer ist "er"?
                    Der Browser? Ja, natürlich vervonnständigt der relative Links in Bezug auf die Domain, von der er die Daten abgerufen hat.
                    des heißt ich müsste irgendwie noch sagen das er auf http://xxxx.de/ordener/ gucken soll.
                    Entweder alle relativen Links raussuchen und ergänzen (RegExp) [1], oder ggf. einfach mit dem Hinzufügen eines base-targets versuchen.


                    [1] Das wird kompliziert bei relativen Links, die nicht bezug auf das Domain Root nehmen ...
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Hab es mittlerweile noch so:

                      PHP-Code:
                      <?php
                      function get_results($url) {

                        
                      $ch curl_init($url);

                        
                      curl_setopt ($chCURLOPT_URL"$url");
                        
                      curl_setopt ($chCURLOPT_REFERER"$url_ref");   
                        
                      // <-- $url_ref enthält  die Adresse wo er die Dokumente findet die per link gecklickt werden 
                        
                      curl_setopt ($chCURLOPT_HEADER0);
                        
                      curl_setopt ($chCURLOPT_RETURNTRANSFER1);
                        
                      curl_setopt ($chCURLOPT_USERAGENT"Mozilla/4.0");
                        
                      curl_setopt ($chCURLOPT_FOLLOWLOCATION0);

                        
                      $result curl_exec ($ch);
                        
                      curl_close ($ch);
                        return 
                      $result;
                      }

                      echo 
                      get_results($url);
                      ?>
                      Aber hier ist immernoch das Problem das der den Ref ignorriert...

                      Mit base target hab ich es noch nicht versucht... danke. werd es mal probieren

                      Kommentar


                      • #12
                        Super Danke bist der größte! Es funktioniert!!

                        PHP-Code:
                        <?php
                        function get_results($url) {

                          
                        $ch curl_init($url);

                          
                        curl_setopt ($chCURLOPT_URL"$url");
                          
                        curl_setopt ($chCURLOPT_REFERER"$url_ref");
                          
                        curl_setopt ($chCURLOPT_HEADER0);
                          
                        curl_setopt ($chCURLOPT_RETURNTRANSFER1);
                          
                        curl_setopt ($chCURLOPT_USERAGENT"Mozilla/4.0");
                          
                        curl_setopt ($chCURLOPT_FOLLOWLOCATION0);

                          
                        $result curl_exec ($ch);
                          
                        curl_close ($ch);
                          return 
                        $result;
                        }

                        print 
                        "
                        <head>
                        <base href='"
                        .$url_ref."'>
                        </head>
                        "
                        ;
                        echo 
                        get_results($url);
                        ?>
                        Nur scheinbar bekomm ich noch keine gültige SID (der Seiteninhalt ist noch leer)

                        Kommentar


                        • #13
                          Ich kenne dieses Paket jetzt nicht wirklich, aber der Server wird versuchen dich weiterzuleiten mit einer Session Id. Wenn ich dann aber diese Zeile
                          PHP-Code:
                          curl_setopt ($chCURLOPT_FOLLOWLOCATION0);
                          //mein Vorschlag
                          curl_setopt ($chCURLOPT_FOLLOWLOCATION1); 
                          lese dann denke ich, dass es eine 1 sein müsste. Weil du willst ja, dass er den Angaben in Location (im Header) folgt.

                          Gruss

                          tobi
                          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                          Kommentar


                          • #14
                            Hmm meine Manual sagt aber folgendes:
                            PHP Manual 4.0
                            CURLOPT_FOLLOWLOCATION: Bei Setzen dieser Option auf einen Wert ungleich 0 (Null) wird jedem "Location: " (Ein Feld des HTTP-Headers) gefolgt. Zu beachten ist, dass dies rekursiv geschieht.

                            Kommentar


                            • #15
                              Hat vieleicht noch jemand eine Idee wie ich den Header mehrere Werte mit übergeben kann?

                              Weil scheinbar fehlt mir noch keep-alive und einige andere Werte...

                              PS: Da soll mal einer sagen das ich schnell aufgebe... Ist mittlerweile der vierte Tag an dem ich das versuche hinzubekommen.

                              Kommentar

                              Lädt...
                              X