Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Script als Browser ausgeben

Einklappen

Neue Werbung 2019

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

  • PHP Script als Browser ausgeben

    Folgendes Problem, ich rufe mit "file_get_contents" Ergebisseiten von Suchmaschinen auf und filtere die Links heraus.

    Klappt alles Wunderbar, nur Yahoo erkennt, das es kein Browser ist und liefert mir komplett andere Ergebnisse als mit Browser.

    Codeausschnitt:
    Code:
    <?php
    
    $strSuchmaschinenUrl = file_get_contents("http://de.search.yahoo.com/search?p=baumschule"); 
    $strSuchmaschinenUrl = str_replace(array("<b>", "</b>"), "", $strSuchmaschinenUrl);    
    
    $suchUrl = "www.baumschule.de";
    
    preg_match_all("@<em class=yschurl>(.*)<@isU", $strSuchmaschinenUrl, $arrYahooIndex); 
    
    echo 'Yahoo Index<br><pre>'.print_r($arrYahooIndex[1], TRUE).'</pre>';
    
    ?>
    Ich möchte nun quasi mitsenden, dass es sich bei dem script um einen Browser handelt und nicht um ein script.

    Hat da jemand eine einfache und schnelle Lösung?

    mfg
    drieling

  • #2
    hmm ich hab sowas noch nie gemacht, aber ich glaube da musst du einen header mitsenden... evtl. hilft dir eine suche bei google nach: http header senden oder http request senden...

    vllt. ist auch php.net der richtige anlaufweg...
    Ich gebe gerne ICQ-Support gegen ein kleines Endgelt.

    Kommentar


    • #3
      hmm ja es wird sich wohl nicht ganz so einfach machenlassen, ich werde wohl mit Curl arbeiten müssen...

      Kommentar


      • #4
        Oder mit ein paar Tricks (naja, einem) rausfinden, welche Header Dein Browser mitsendet (z.B. einfach hier nachlesen: HTTP Header Viewer ) und die gleichen Header in Deiner PHP Datei mitsenden. Wichtig dabei, dass Header immer vor jeglichem HTML Content (also auch vor eventuellen Leerzeichen vor dem ersten php Tag) losgeschickt werden müssen. Kann ich mir alles nicht so schwierig vorstellen.

        Viel Erfolg!

        Kommentar


        • #5
          Hallo,

          demnach sollten die headers dann so aussehen:

          PHP-Code:
          header('connection''Keep-Alive');
          header('accept-language''de');
          header('accept-encoding''gzip, deflate');
          header('user-agent''Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322)'); 

          Hatte es aber mit drielings Script ausprobiert, aber es scheint nicht zu funktionieren.

          Ambience
          Ich gebe gerne ICQ-Support gegen ein kleines Endgelt.

          Kommentar


          • #6
            nein, das scheint nicht zu funktionieren, da file_get_contents wohl einen eigenen header sendet. werd mich morgen nochmal dran setzen, wenn ich ne Lösung habe, dann werde ich es hier posten

            Kommentar


            • #7
              in PHP gibt es ne Konstante wo man das einstellen kann, was genau gesendet wird, aber ich weiß nicht mehr welche. Mir ist es nur mal beim Drüberlesen bei php.net aufgefallen

              Schau dir mal die Logfiles (des Ziels) an und dort sollte dann was drin stehen wie "php 4....." so haste nen Ansatz

              Kommentar


              • #8
                hey das hört sich vielversprechend an, ich mach mich mal auf die suche

                Kommentar


                • #9
                  Geht das auch mit Google oder sonstigen Suchmaschinen?

                  Weiß jemand von euch wie man Google oder andere Suchmaschinen-Ergebnisse ausliest?
                  MEIN BROWSERGAME: MEDWORLD
                  MEHR DAZU: HIER

                  Kommentar


                  • #10
                    header() funktioniert nicht, weil du mit der header() Funktion headers an den Client sendest (also an denjenigen, der dein script aufruft).
                    Vom Prinzip müsste es so funktionieren:
                    PHP-Code:
                    <?php
                    $socket 
                    fsockopen('de.search.yahoo.com'80$errno$errstr)
                    if (!
                    $socket)
                     die(
                    $errstr);
                     
                    $send_headers = array();
                    $send_headers[] = "GET /search?p=baumschule HTTP/1.1\r\n";
                    $send_headers[] = "Host: de.search.yahoo.com\r\n";
                     
                    foreach (
                    $send_headers as $header) {
                      
                    fputs($socket$header);
                    }
                     
                    $string '';
                    while (!
                    feof($socket)) {
                      
                    $string .= fgets($socket);
                    }
                     
                    fclose($socket);
                     
                    echo 
                    $string;
                     
                    ?>
                    Welche Header du genau senden musst, musst halt schauen (Firefox Plugin "Live HTTP HEaders" kann da gut helfen )




                    Zitat von Ambience Beitrag anzeigen
                    PHP-Code:
                    header('connection''Keep-Alive');
                    header('accept-language''de');
                    header('accept-encoding''gzip, deflate');
                    header('user-agent''Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322)'); 
                    die header müssten wenn dann auch so aussehen:
                    PHP-Code:
                    <?php
                    header
                    ('accept-encoding: gzip, deflate');
                    ?>
                    die 2. Variable von header() sagt der funktion ob vorher gesetzte headers überschrieben werden sollen oder nicht

                    Kommentar


                    • #11
                      Snoopy!

                      Hi!

                      Für Parser verwende ich Snoopy:
                      Snoopy
                      Sehr leicht anzupassen und frei!

                      Grüsse

                      Peter
                      [URL="http://www.gomolla.com"]gomolla.com[/URL]

                      Kommentar


                      • #12
                        Geht das jetzt mit Google? und wenn ja ,wie?
                        MEIN BROWSERGAME: MEDWORLD
                        MEHR DAZU: HIER

                        Kommentar


                        • #13
                          wenn du google/andere Suchmaschinen parsen willst, solltest du dir ein Skript bauen, das lokal installieren und von dort aus starten (damit nicht die IP deines Servers übermittelt wird). Damit die Suchmaschinen nicht merken, dass Du ein "Bot" bist, kannst Du eben z.B. mit Snoopy einen Browser (und wenn Du willst auch einen Referer) übergeben. Damit bist Du zumindest in den logfiles unauffällig.
                          Das heisst aber nicht dass damit die rechtliche Seite ok ist.

                          Mit Snoopy ist das alles sehr einfach, hier ne Anleitung:
                          Snoopy

                          Grüsse

                          Peter
                          [URL="http://www.gomolla.com"]gomolla.com[/URL]

                          Kommentar

                          Lädt...
                          X