Entwickler-Ecke
Internet / Netzwerk - Rapidshare.com Login über Indy(IdHTTP)?
jackie05 - Do 21.05.09 18:18
Titel: Rapidshare.com Login über Indy(IdHTTP)?
Hallo,
ich versuche mich gerade über Delphi bei Rapidshare einzuloggen und als Test versuche ich den Seiten Quelltext auszulesen.
Hier mal mein Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.Button1Click(Sender: TObject); var HTTP: TIdHTTP; Stream: TIdMultiPartFormDataStream; Quelltext: string; begin HTTP := TIdHTTP.Create(nil); Stream := TIdMultiPartFormDataStream.Create; try Stream.AddFormField('login=',edtLogin.Text); Stream.AddFormField('password=',edtPassword.Text); Quelltext := HTTP.Post('https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi',Stream); Memo1.Text := Quelltext; except on E: Exception do ShowMessage(E.Message); end; HTTP.Free; Stream.Free; end; |
Wenn ich jetzt die Logindaten sende, erhalte ich folgende fehlermeldung:
Wert für IOHandler ist ungültig
Kann mir Vielleicht jemand helfen, wie ich das Problem lösen kann?
Ich bedanke mich schonmal im Voraus.
MfG
jaenicke - Do 21.05.09 18:28
Es fehlt die SSL-Einbindung. Das sind die entsprechenden beiden DLLs (libeay32.dll und ssleay32.dll glaube ich) von OpenSSL sowie die Erstellung und Zuweisung des entsprechenden IOHandlers TIdSSLIOHandlerSocketOpenSSL (ich hoffe richtig geschrieben, aber ist ja sehr kurz der Name :mrgreen:).
Dafür muss noch IdSSLOpenSSL in die uses. Zusätzlich musst du vielleicht auch noch Cookies annehmen und brauchst dafür TIdCookieManager in der Unit IdCookieManager.
jackie05 - Do 21.05.09 19:00
Ich danke Dir.
Ich habe die 2 DLLs, nur weiss ich nicht genau, wie ich das alles richtig einbinden und verwenden soll.
Kann mir das Vielleicht jemand erklären?
Danke schonmal.
MfG
jaenicke - Do 21.05.09 19:13
Naja, so ungefähr:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| SSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create; CookieManager := TIdCookieManager.Create; IdHttpLoader := TIdHttp.Create; try IdHttpLoader.CookieManager := CookieManager; IdHttpLoader.IOHandler := SSLIOHandler; IdHttpLoader.HandleRedirects := True; ... finally IdHttpLoader.Free; CookieManager.Free; SSLIOHandler.Free; end; |
jackie05 - Do 21.05.09 19:22
Ich danke Dir.
TIdSSLIOHandlerSocketOpenSSL ist Undefiniert.
IdSSLIOHandlerSocketOpenSSL kann ich auch nicht in die uses Klausel aufnehmen, da die IdSSLIOHandlerSocketOpenSSL.dcu nicht vorhanden ist.
Oder muss ich die beiden DLL Dateien in meinem Programm mit einbinden?
MfG
jaenicke - Do 21.05.09 19:59
jaenicke hat folgendes geschrieben : |
| Dafür muss noch IdSSLOpenSSL in die uses. |
jackie05 - Do 21.05.09 20:42
Das klappt ja soweit bis auf TIdSSLIOHandlerSocketOpenSSL.
IdSSLOpenSSL habe ich ja in die uses Klausel aufgenommen.
Beim Kompilieren bekomme ich diese Fehlermeldung:
[Fehler] Unit1.pas(41): Undefinierter Bezeichner: 'TIdSSLIOHandlerSocketOpenSSL'
Ich habe immer noch nicht diese 2 DLLs(libeay32.dll und ssleay32.dll) eingebunden, sind diese denn Wichtig?
Diese DLLs kann ich auch irgendwie nicht in Delphi einbinden, also Fehler beim laden des Typ Bibliotheks oder so.
MfG
jaenicke - Do 21.05.09 20:52
Welche Delphi-/Indyversion benutzt du denn? Ich bin von Indy 10 ausgegangen wie es ja bei Turbo Delphi dabei ist. Damit benutze ich das so. :gruebel:
Die DLLs werden davon ja benutzt, die müssen nur da sein.
jackie05 - Do 21.05.09 21:21
Ich benutze Delphi 7 Enterprise, keine ahnung welche Indy version dabei ist.
Ich denke mal, dass es sich bei mir um Indy 9 handelt.
Ich lade mir mal Indy 10 runter und Installiere es, mal kucken ob es funktioniert.
MfG
jaenicke - Do 21.05.09 21:29
Delphi 7 war sicherlich noch mit Indy 9, denn Delphi 7 ist ja nun ca. 8 Jahre alt. Wenn du die Komponenten dynamisch erstellst (wie ich es stets mache, u.a. damit auch jemand mit Turbo Delphi die Projekte nutzen kann), dann musst du nur die Pfade im Bibliothekspfad anpassen.
jackie05 - So 31.05.09 15:06
Hallo und Sry das es solange gedauert hat, ich hatte wenig Zeit.
Ich habe jetzt Delphi 2005 und Indy version 10.0.52 Installiert und bekomme immer noch eine fehlermeldung:
IQHandler value is not valid
Irgendwie schaffe ich das nicht richtig mit der SSL Verbindung.
Kann mir da vielleicht jemand Helfen?
MfG
jackie05 - Mo 01.06.09 12:51
Danke Dir.
Ich möchte mich nur in Rapidshare einloggen über Premium Account und nix runterladen.
Hier mal mein Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| procedure TForm1.btnLoginClick(Sender: TObject); var Stream: TIdMultiPartFormDataStream; Quelltext: string; SSLIOHandler: TIdSSLIOHandlerSocket; HTTP: TIdHttp; begin SSLIOHandler := TIdSSLIOHandlerSocket.Create(nil); HTTP := TIdHttp.Create(nil);
HTTP.HandleRedirects := true; HTTP.IOHandler := SSLIOHandler;
Stream := TIdMultiPartFormDataStream.Create; try Stream.AddFormField('login=',edtLogin.Text); Stream.AddFormField('password=',edtPassword.Text); Quelltext := HTTP.Post('https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi',Stream); Memo1.Text := Quelltext; except on E: Exception do ShowMessage(E.Message); end; Stream.Free; HTTP.Free; SSLIOHandler.Free; end; |
Wenn ich mich jetzt versuche einzuloggen, dann bekomme ich folgende fehlermeldung:
SSL.-Bibliothek konnte nicht geladen werden.
Die 2 DLLs befinden sich im Delphiverzeichnis lib und da wo sich meine .exe Datei befindet.
Woran liegt denn jetzt der fehler?
Danke schonmal.
MfG
jaenicke - Mo 01.06.09 13:14
Die müssen nur im Verzeichnis der Exe liegen. Aber stimmt, da war noch was. Ich glaube vorher:
Und danach entsprechend Unload...
Das hatte ich vergessen, da ich das in meinem Projekt in den Hauptinitialisierungsthread gelegt hatte. Dadurch stand das weder im Hauptthread noch im Downloadthread. :oops:
jackie05 - Mo 01.06.09 13:26
Danke Dir.
Sry das ich nerve, aber ich weiss leider nicht, wie ich diese Library in meinem Projekt lade.
Hab hier im Forum mal nachgekuckt und in google, leider komme ich nicht weiter.
Könntest Du mir vielleicht erklären wie ich das ambesten lade?
MfG
jaenicke - Mo 01.06.09 13:43
Damit geht es immer noch nicht? Mehr habe ich nicht gemacht als ich die bei mir eingebaut habe. :gruebel:
jackie05 - Mo 01.06.09 13:51
Ich weiss nicht was ich damit machen soll:
LoadOpenSSLLibrary;
Ich hab das mal beim Button Klick eingefügt und bekomme diese Meldung:
Delphi-Quelltext
1:
| [Fehler] Unit1.pas(51): Undefinierter Bezeichner: 'LoadOpenSSLLibrary' |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| procedure TForm1.btnLoginClick(Sender: TObject); var Stream: TIdMultiPartFormDataStream; Quelltext: string; SSLIOHandler: TIdSSLIOHandlerSocket; HTTP: TIdHttp; begin LoadOpenSSLLibrary;
SSLIOHandler := TIdSSLIOHandlerSocket.Create(nil); HTTP := TIdHttp.Create(nil);
HTTP.HandleRedirects := true; HTTP.IOHandler := SSLIOHandler;
Stream := TIdMultiPartFormDataStream.Create; try Stream.AddFormField('uselandingpage','1'); Stream.AddFormField('login=',edtLogin.Text); Stream.AddFormField('password=',edtPassword.Text); Quelltext := HTTP.Post('https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi',Stream); Memo1.Text := Quelltext; except on E: Exception do ShowMessage(E.Message); end; Stream.Free; HTTP.Free; SSLIOHandler.Free;
LoadHTMLToWebbrowser(WebBrowser1,Memo1.Lines); end; |
Oder hab ich da was falsch verstanden?
MfG
jaenicke - Mo 01.06.09 13:58
jaenicke hat folgendes geschrieben : |
Naja, so ungefähr: Delphi-Quelltext 1:
| SSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create; | |
jackie05 hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| [Fehler] SSLIOHandler: TIdSSLIOHandlerSocket; HTTP: TIdHttp; begin LoadOpenSSLLibrary;
SSLIOHandler := TIdSSLIOHandlerSocket.Create(nil); | |
Wie soll es denn klappen, wenn du gar nicht OpenSSL benutzt...
Mit der Unit IdSSLOpenSSL, in der auch das Laden der Bibliothek definiert ist.
the-kecks - Fr 05.06.09 16:08
ich hab grad das selbe problem mit uploaded (siehe
diesen [
http://www.delphi-forum.de/topic_92739.html] thread) und das LoadOpenSSLLibrary geht bei mir nicht, da steht immernoch undefinierter bezeichner Loadopen...
code:
-FormCreate
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| var SSLIOHandler: TIdSSLIOHandlerSocket; begin LoadOpenSSLLibrary SSLIOHandler := TIdSSLIOHandlerSocket.Create(nil); IdHTTP1.CookieManager := IdCookieManager1; IdHttp1.IOHandler := SSLIOHandler; IdHTTP1.HandleRedirects := true; IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10'; |
-ButtonClick
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| begin [...] Params := TStringList.Create; try Params.Add('email=' + login); Params.Add('password=' + pw); try HTMLCode:=IdHTTP1.Post('http://uploaded.to/login', Params); except showmessage('Login fehlgeschlagen'); end; finally Memo2.text:=HTMLCode; if pos('Login', HTMLCode) >0 then showmessage('Login fehlgeschlagen'); Params.Free; end; end; |
code ist auch im anderen thread vermerkt
mfg
jaenicke - Sa 06.06.09 00:46
Und auf dich trifft genauso mein letzter Thread zu... du benutzt OpenSSL doch gar nicht...
the-kecks - Sa 06.06.09 16:14
sry *schäm*
hab jetzt mal hier jeden schritt befolgt indy 10 installiert dlls geholt etc. nun ist bei mir immernoch LoadOpenSSLLibary undef.
code:
-einloggen
s.o
-FormCreate
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var SSLIOHandler: TIdSSLIOHandlerSocketOpenSSL; begin LoadOpenSSLLibrary; SSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create; IdHTTP1.CookieManager := IdCookieManager1; IdHttp1.IOHandler := SSLIOHandler; IdHTTP1.HandleRedirects := true; IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10'; [...] end; |
ist aber auch nicht schlimm, denn ich krieg keinen fehler ohne das loadopeSSLlibrary.
nur bin ich immernoch nicht eingeloggt -.-
mfg
Novo - Di 16.06.09 13:29
Braucht ihr da noch hilfe?
Ich habs hinbekommen.
Wenn Bedarf besteht, PM me.
Weil bis ich zuHause bin, hab ich das hier schon wieder vergessen xD
Xentar - Di 16.06.09 14:30
Wenn du eine Lösung hast, veröffentliche diese doch, statt nur auf Anfrage.
the-kecks - Di 16.06.09 16:18
mit diesem code funzt das einloggen
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| [...] Params := TStringList.Create; try Params.Add('username=' + login); Params.Add('password=' + pw); try HTMLCode:=IdHTTP1.Post('https://ssl.rapidshare.com/cgi-bin/collectorszone.cgi', Params); except showmessage('Login fehlgeschlagen'); end; Memo2.text:=HTMLCode; finally Params.Free; end; [...] procedure TForm1.FormCreate(Sender: TObject); var SSLIOHandler: TIdSSLIOHandlerSocketOpenSSL; begin SSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create; IdHTTP1.CookieManager := IdCookieManager1; IdHttp1.IOHandler := SSLIOHandler; IdHTTP1.HandleRedirects := true; IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10'; end; |
PS: uploaded.to hab ich jetzt aufgegeben...weiß auch nicht wieso da kein cookie kommt
mfg
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!