Ankündigung

Einklappen
Keine Ankündigung bisher.

Login in eine externe Seite per PHP

Einklappen

Neue Werbung 2019

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

  • Login in eine externe Seite per PHP

    Hi,

    Ich möchte mich automatisch auf einer Webseite einloggen und dann Daten dort auslesen. (PV-Anlage)

    Dafür benutze ich curl wie folgt:

    PHP-Code:
     <?php

            $login_email 
    'email@email.de';
            
    $login_pass 'passwort';

            
    curl_setopt($chCURLOPT_URL'https://www.sunnyportal.com/Templates/Start.aspx?logout=true');
            
    # ctl00$ContentPlaceHolder1$Logincontrol1$txtUserName    << Feldbezeichnung für Benutzername
            # ctl00$ContentPlaceHolder1$Logincontrol1$txtPassword    << Feldbezeichnung für Passwort
            # ctl00$ContentPlaceHolder1$Logincontrol1$LoginBtn    << Feldbezeichnung für LogIn Button
            
    $data = array('ctl00$ContentPlaceHolder1$Logincontrol1$txtUserName'=>$login_email,
                                
    'ctl00$ContentPlaceHolder1$Logincontrol1$txtPassword'=>$login_pass,
                                
    '__EVENTTARGET'=>'ctl00$ContentPlaceHolder1$Logincontrol1$LoginBtn');

            
    curl_setopt($chCURLOPT_POSTcount($data));
            
    curl_setopt($chCURLOPT_POSTFIELDShttp_build_query($data));
            
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
            
    curl_setopt($chCURLOPT_COOKIEJAR'cookie_sma.txt');
            
    curl_setopt($chCURLOPT_COOKIEFILE'cookie_sma.txt');
            
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
            
    curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
            
    curl_setopt($chCURLOPT_REFERER"https://www.sunnyportal.com");
            
    $result curl_exec($ch);

            echo 
    $result;

            
    curl_setopt($chCURLOPT_URL,"https://www.sunnyportal.com/homemanager");
            
    curl_setopt($chCURLOPT_COOKIEFILE'cookie_sma.txt');
            
    curl_setopt($chCURLOPT_POST0);
            
    $result curl_exec($ch);

            
    ?>
    es scheitert schon in der Zeile "echo $result".

    Der Login schlägt Fehl da zwar die Email in das richtig Feld eingefügt wurde aber das Passwort nicht.

    Was mache ich falsch?

    vielleicht gibt es ja jemanden der eine Lösung hat.

    Gruß
    Crankerer

  • #2
    Und das funktioniert wenn du das über den Browser aufrufst? Oder mit Postman? Was sollen eigentlich die ganzen Dollarzeichen in den Daten, ist das so vorgesehen? Normales HTTP-Post benutz das UND-Zeichen.

    https://de.wikipedia.org/wiki/Hypert...ocol#HTTP_POST
    [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

    Kommentar


    • #3
      Aufgerufen wird das in der Konsole.

      Dollarzeichen? meinst du die in den Namen?
      So heißen die Loginfelder auf der externen Webseite.
      Ich weiß das normale HTTP-Post mit UND-Zeichen verknüpft werden. Dies wird auch in der Zeile "curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));" mit http_build_query($data) erledigt.

      Kommentar


      • #4
        Das Formular überträgt aber noch viel mehr POST Parameter, als du per CURL angibst:

        image_3894.png

        Der Viewstate wird sowas wie ein CSRF Token sein, also keine Chance das Formular zu umgehen, fürchte ich...
        sorry, shift-taste kaputt

        Kommentar

        Lädt...
        X