Einzelnen Beitrag anzeigen

Sougetsu

Registriert seit: 18. Feb 2009
20 Beiträge
 
#7

AW: Einloggen mit idhttp auf https-Server

  Alt 30. Okt 2013, 18:01
Moin,

theoretisch ist es einfach ein post zu basteln.
bei der login source könnte dein delphi code evtl. so aussehen:
Code nicht getestet, alles auf eigene Gefahr.

Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var
  PostDataStream : TStringStream;
  MYIOHandler: TIdSSLIOHandlerSocketOpenSSL;
  MyMultiPartFormDataStream:TIdMultipartFormDataStream;
begin
  //Voraussetzungen für SSL erzeugen
  MYIOHandler:=TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  MYIOHandler.SSLOptions.Method:=sslvTLS1_2; // Method anpassen an die welche vom Server unterstützt wird.
  MYIOHandler.SSLOptions.Mode:=sslmUnassigned; //Akzeptiert alle Zertifikate egal ob signiert oder nicht, sollte behandelt werden damit Zertifikate auf Gültigkeit etc. geprüft wird.
  MyMultiPartFormDataStream:=TIdMultipartFormDataStream.Create; //Hier einen Stream erzeugen der nachher die Formulardaten enthält.
  MyMultiPartFormDataStream.AddFormField('user',username); //Das sollte klar sein
  MyMultiPartFormDataStream.AddFormField('pass',password); //Das auch
  MyMultiPartFormDataStream.AddFormField('submit','Anmelden'); //Falls geprüft wird ob der reguläre Button da war
  MyMultiPartFormDataStream.AddFormField('logintype','login'); //Auch selbsterklärend
  MyMultiPartFormDataStream.AddFormField('pid','28110'); //Gute Frage, bleibt die pid immer gleich oder ändert sie sich nach jedem Request?
  MyMultiPartFormDataStream.AddFormField('redirect_url',''); //Auch unbekannt wofür das ist
  MyMultiPartFormDataStream.AddFormField('tx_felogin_pi1[noredirect]','0'); //Hier auch
  MyMultiPartFormDataStream.AddFormField('e','10001'); //Hier auch, ändern sich die Werte mal?

  IdHTTP1.Create(nil);
  IdHTTP1.IOHandler:=MYIOHandler; // Der Kompo das SSL mitgeben damit es eine SSL Verbindung aufbauen kann.
  IdHTTP1.AllowCokies:=true; //Standardeinstellungen vornehmen wie Cookies und Redirects.
  IdHTTP1.HandleRedirect:=true;
  PostDataStream := TStringStream.Create('');
try
//Connect
      IdHTTP1.Post('https://kb.zumtobel.com/de.html', MyMultiPartFormDataStream, PostDataStream);
      Memo1.Text := PostDataStream.DataString;
    end;
finally
  MyMultiPartFormDataStream.Free;
  PostDataStream.Free;
  MYIOHandler.Free;
end;
end;
  Mit Zitat antworten Zitat