Externen Javascript Link per PHP aufrufen

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

  • Externen Javascript Link per PHP aufrufen

    Hallo zusammen,

    Problem :
    Ich möchte mehrere Seiten Html-Code mit file_get_contents($url) auslesen.

    Die Seiten sind aber per Javascript folgendermaßen untereinander verlinkt was mich daran hindert den Befehl file_get_contents($url) anzuwenden :

    Am besten ihr schaut euch das Ganze unter Myspace Friendlist an.

    Code:
    <a href="javascript:__doPostBack('ctl00$cpMain$pagerTop','1')">1</a>
    Die dazugehörige Javascript Funktion sieht folgendermaßen aus :

    Code:
    <div>
    <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
    <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDw[ Endlos langer String]" />
    </div>
    
    <script type="text/javascript">
    <!--
    var theForm = document.forms['aspnetForm'];
    if (!theForm) {
        theForm = document.aspnetForm;
    }
    function __doPostBack(eventTarget, eventArgument) {
        if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
            theForm.__EVENTTARGET.value = eventTarget;
            theForm.__EVENTARGUMENT.value = eventArgument;
            theForm.submit();
        }
    }
    // -->
    </script>
    Ich möchte nun die anderen Seiten auch mit file_get_contents($url) auslesen und möchte dazu gerne wissen wie ich den javascript Link umgehen kann. Hat jeman 'nen Plan ?


    Wozu das alles :
    Ich möchte gerne meine "Friendlist" auf MySpace.com per PHP auslesen und dann die so erhaltenen Daten neu sortieren und die ganzen Photos und dazugehörigen Links in eine Art Mosaikform unterbringen.
    Zuletzt geändert von innocent_judas; 13.04.2007, 00:17.

  • #2
    Bitte Code umbrechen!

    Der Klick auf diesen Link bewirkt das Ändern der Werte der ersten beiden Inputs und das Abschicken des Formulars. Wenn es ein GET-Formular ist, kannst du nach ein wenig Stringspielerei weiter file_get_contents() benutzet. Für ein POST-Formular wirds so nicht gehen. Da mußt du den POST-Request nachbauen.

    Kommentar


    • #3
      Vielen Dank für die schnelle Antwort. Es handelt sich um eine POST - Formular. Der gesamte <form> - Tag sieht folgendermaßen aus.

      Code:
      <form name="aspnetForm" method="post"
      action="FriendsView.aspx?%3ffuseaction=user.viewfriends&amp;friendID=114446263"
      onkeypress="javascript:return WebForm_FireDefaultButton(event, 'ctl00_cpMain_btnSearch')" id="aspnetForm">
      
      <div>
      <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
      <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
      <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDw[ Endlos langer String]" />
      </div>
      
      <script type="text/javascript">
      <!--
      var theForm = document.forms['aspnetForm'];
      if (!theForm) {
          theForm = document.aspnetForm;
      }
      function __doPostBack(eventTarget, eventArgument) {
          if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
              theForm.__EVENTTARGET.value = eventTarget;
              theForm.__EVENTARGUMENT.value = eventArgument;
              theForm.submit();
          }
      }
      // -->
      </script>
      
      [... jede Menge anderer Code ...]
      
      </form>
      Aufgerufen wird das Ganze mit :

      Code:
      <a href="java script:__doPostBack('ctl00$cpMain$pagerTop','1')">1</a>

      Das wird meine erste POST - Request Simulation

      Ich hoffe mal, das wird nicht allzu schwierig. Aber mit folgendem Standardcode sollte ich eigentlich auf dem richtigen Weg sein.

      Mit diesem Versuch erhalte ich aber als Rückgabewert $x immer noch Seite 1 der "Friendlist" und nicht wie erwartet Seite 3 (__EVENTARGUMENT=3).

      Irgendetwas mach ich also falsch. Probleme macht meiner Meinung nach diese __VIEWSTATE Variabe. Bitte um Hilfe.

      PHP-Code:
      <?php

      function PostToHost($host$path$referer$data_to_send) {
        
      $fp fsockopen($host80);
        
      printf("Open!\n");
        
      fputs($fp"POST $path HTTP/1.1\r\n");
        
      fputs($fp"Host: $host\r\n");
        
      fputs($fp"Referer: $referer\r\n");
        
      fputs($fp"Content-type: application/x-www-form-urlencoded\r\n");
        
      fputs($fp"Content-length: "strlen($data_to_send) ."\r\n");
        
      fputs($fp"Connection: close\r\n\r\n");
        
      fputs($fp$data_to_send);
        
      printf("Sent!\n");
        while(!
      feof($fp)) {
            
      $res .= fgets($fp128);
        }
        
      printf("Done!\n");
        
      fclose($fp);

        return 
      $res;
      }

      $data "__EVENTTARGET=ctl00$cpMain$pagerTop&__EVENTARGUMENT=3&__VIEWSTATE=/w[... Endlos langer String ...]";

      printf("Go!\n");
      $x PostToHost(
                    
      "friends.myspace.com",
                    
      "/Modules/ViewFriends/FriendsView.aspx?%3ffuseaction=user.viewfriends&friendID=114446263",
                    
      "http://friends.myspace.com/Modules/ViewFriends/FriendsView.aspx?%3ffuseaction=user.viewfriends&friendID=114446263",
                    
      $data
      );
      ?>
      Zuletzt geändert von innocent_judas; 13.04.2007, 12:16.

      Kommentar

      Lädt...
      X