![]() |
Rapidshare Premium Login - Wie?
Hallo alle miteinander,
ich will mir meinen eigenen kleine Downloadmanager für Rapidshare bauen. Doch ich bekomme es absolut nicht hin mich via Delphi in meinen Premiumaccount einzuloggen. Was ich bisher rausbekommen habe ist, dass mein Programm die Adresse zum Premium-Login + Zugangsdaten verschicken muss. Die Loginseite bei Rapidshare wäre ja: ![]() und die Zugangsdaten schicke ich mit folgendem Anhang mit: =login&redirect=&login=ACCOUNTNAME&password=PASSWO RT sodass dann komplett folgende Zeichenkette verschickt werden würde: ![]() Jedoch klappt es nichteinmal bei einer manuellen Eingabe via Browserleiste bei Mozilla Firefox :X Kennt sich da jemand aus und kann mir einen Einstieg in die Sache geben? Habe bisher noch keinerlei Erfahrung was das Kommunizieren einer Anwendung mit anderen bzw Internet angeht :gruebel: PS: Ich nutze Delphi 2005 Personal [edit=mkinzler]Auf Win32 umgestellt Mfg, mkinzler[/edit] |
Re: Rapidshare Premium Login - Wie?
Da scheint ein ? Zwischen Url und Parameter zu fehlen
Zudem wird hier Post verwendet Zitat:
|
Re: Rapidshare Premium Login - Wie?
Hm... und was bedeutet Post? :X
|
Re: Rapidshare Premium Login - Wie?
|
Re: Rapidshare Premium Login - Wie?
Danke, das kannte ich noch nicht. Aber bei sämtlichen Routinen dort geht man davon aus, das man bereits vollständig angemeldet ist. Daran scheitert es aber aktuell bei mir.
|
Re: Rapidshare Premium Login - Wie?
Zitat:
[dp]INDY + POST[/dp] |
Re: Rapidshare Premium Login - Wie?
Danke für die Hinweise.
So wie ich das jetzt beim Lesen mitbekommen habe muss ich das ganze als Win32 Formular statt .NET Formular machen. Okay, dann schau ich mir das mal eben genauer an. |
Re: Rapidshare Premium Login - Wie?
Nein, in .Net gibt es auch Klassen dafür.
|
Re: Rapidshare Premium Login - Wie?
Hm... irgendwie komm ich so nicht weiter.
Ich habe mir im Forum für eine Anmeldung mittels der Methode Post folgenden Quelltext entdeckt:
Delphi-Quellcode:
Für Rapidshare würde der angepasst ja theoretisch so ausschauen:
procedure TForm1.Button1Click(Sender: TObject);
var data: TIdMultiPartFormDataStream; begin data := TIdMultiPartFormDataStream.Create; IdHTTP1.ProtocolVersion:=pv1_1; IdHTTP1.Request.UserAgent:='null'; IdHTTP1.Request.Accept:='eins'; IdHTTP1.Request.AcceptCharSet:='zwei'; IdHTTP1.Request.AcceptLanguage:='drei'; try { add the used parameters for the script } data.AddFormField('param1', 'value1'); data.AddFormField('param2', 'value2'); data.AddFormField('param3', 'value3'); { Call the Post method of TIdHTTP and read the result into TMemo } Memo1.Lines.Text := IdHTTP1.Post('http://www.delphipraxis.net', data); finally data.Free; end; end;
Delphi-Quellcode:
Wenn das soweit stimmt, dann ist mein Problem dabei nur, dass ich beim Einfügen dieses Quelltextes (egal ob "Formular - Delphi für Win 32" oder "VLC Formularanwendung - Delphi für Win 32") entweder ich überhaupt nicht compilieren kann oder der alles als Syntaxfehler rot unterwellt ist.
procedure TForm1.Button1Click(Sender: TObject);
var data: TIdMultiPartFormDataStream; begin data := TIdMultiPartFormDataStream.Create; try { add the used parameters for the script } data.AddFormField('login', edit1.Text); data.AddFormField('password', edit2.Text); { Call the Post method of TIdHTTP and read the result into TMemo } Memo1.Lines.Text := IdHTTP1.Post('https://ssl.rapidshare.com/premiumzone.html', data); finally data.Free; end; end; Vielleicht kannst du mir ja etwas mehr von deinem Wissen preisgeben. Denn bis jetzt tappe ich noch gut im Dunkeln :gruebel: EDIT MEINT: kann sein das ich ersteinmal das indy10 installieren muss, oder? |
Re: Rapidshare Premium Login - Wie?
Hm... das will alles nicht wirklich, wäre schön wenn mir jemand sagen könnte welche Delphiversion ich brauche um anfangen zu können. Denn Delphi 2005 ist nahezu jede Methode unbekannt die irgendetwas mit Indy zu tun hat trotz der Installation von Indy 10.0.52.
|
Re: Rapidshare Premium Login - Wie?
Erscheint Indy in der Toolbox?
|
Re: Rapidshare Premium Login - Wie?
Ja da kam eine ganze Reihe an neuen Elementen dazu die unter Indy aufgelistet sind.
|
Re: Rapidshare Premium Login - Wie?
Und hast du dú eine passende Komponente (TidHttp) auf die Form gelegt?
|
Re: Rapidshare Premium Login - Wie?
Ja, war so ein kleines Abbild von der Erde.
Dennoch war zB "TIdMultiPartFormDataStream" rot unterstrichen. Lediglich TStringList würde gehen. Aber da funktioniert "data.AddFormField('login', edit1.Text);" wiederum nicht. Hab das dann so abgeändert
Delphi-Quellcode:
Dann konnte ich es zwar endlich compilieren, aber nach dem Klick auf den Button kam dann eine Fehlermeldung die irgend ein Problem mit dem IOHandler (oder so) hatte. Hatte eigentlich erwartet das in dem Memo1 Feld eine Zeichenkette reingeschrieben wird...
procedure TForm1.Button1Click(Sender: TObject);
var data: TStringList; begin data := TStringList.Create; try { add the used parameters for the script } data.Add('login'); data.Add(edit1.Text); data.AddFormField('password'); data.Add(edit2.Text); { Call the Post method of TIdHTTP and read the result into TMemo } Memo1.Lines.Text := IdHTTP1.Post('https://ssl.rapidshare.com/premiumzone.html', data); finally data.Free; end; end; |
Re: Rapidshare Premium Login - Wie?
Ergänze mal die Uses durch IdMultipartFormData
|
Re: Rapidshare Premium Login - Wie?
@ mkinzler:
ich kann jetzt dank der einfügung bei uses problemlos compilieren und auf den knopf drücken ohne das eine fehlermeldung kommt. wenn ich diesen quelltext nehme:
Delphi-Quellcode:
erscheint in dem memofenster der seitenquelltext von delphipraxis!
procedure TForm1.Button1Click(Sender: TObject);
var data: TIdMultiPartFormDataStream; begin data := TIdMultiPartFormDataStream.Create; IdHTTP1.ProtocolVersion:=pv1_1; IdHTTP1.Request.UserAgent:='null'; IdHTTP1.Request.Accept:='eins'; IdHTTP1.Request.AcceptCharSet:='zwei'; IdHTTP1.Request.AcceptLanguage:='drei'; try { add the used parameters for the script } data.AddFormField('param1', 'value1'); data.AddFormField('param2', 'value2'); data.AddFormField('param3', 'value3'); { Call the Post method of TIdHTTP and read the result into TMemo } Memo1.Lines.Text := IdHTTP1.Post('http://www.delphipraxis.net', data); finally data.Free; end; end; jetzt müsste es doch eigentlich nur noch auf rapidshare angepasst werden und ich bin drinne, oder? :roll: Jedoch ist da noch immer der Wurm drinn wenn ich es so abänder, denn dann freezt alles und stirbt ab :X
Delphi-Quellcode:
An und für sich klingt es doch so einfach. Seite aufrufen --> Logindaten übergeben --> Fertig.
procedure TForm2.Button1Click(Sender: TObject);
var data: TIdMultiPartFormDataStream; begin data := TIdMultiPartFormDataStream.Create; IdHTTP1.ProtocolVersion:=pv1_1; IdHTTP1.Request.UserAgent:='null'; IdHTTP1.Request.Accept:='eins'; IdHTTP1.Request.AcceptCharSet:='zwei'; IdHTTP1.Request.AcceptLanguage:='drei'; try { add the used parameters for the script } data.AddFormField('login', edit1.Text); data.AddFormField('password', edit2.Text); { Call the Post method of TIdHTTP and read the result into TMemo } Memo1.Lines.Text := IdHTTP1.Post('https://ssl.rapidshare.com/premiumzone.html', data); finally data.Free; end; end; |
Re: Rapidshare Premium Login - Wie?
Afair hat Delphi 2005 nichts mit .Net zu tun. Kategorie wurde also falsch gesetzt.
|
Re: Rapidshare Premium Login - Wie?
Wie man der URL entnehmen kann, verwendet Rapidshare im Gegensatz zur DP https.
|
Re: Rapidshare Premium Login - Wie?
Will heißen, man muss Indy mit OpenSSL nutzen.
|
Re: Rapidshare Premium Login - Wie?
Hm... Okay - freezt nicht mehr. Kommt halt immer die Fehlermeldung "IOHandler value is not valid"
openSSL ... das heißt ich besorg mir jetzt diese .dll und muss die auch nich integrieren bzw abrufen? |
Re: Rapidshare Premium Login - Wie?
|
Re: Rapidshare Premium Login - Wie?
Hm... ganz ehrlich: als Laie verschließt sich mir hier doch einiges.
Aber egal, ich denke ich gehe richtig in der Annahme das ich mir diverse .DLLs besorgen musste wie es hier steht ( ![]() Brauch ich sonst noch etwas? Bzw wie muss ich den Quelltext anpassen damit die Zugangsdaten übersendet werden? Muss ich ja mit Sicherheit irgendwo im Quelltext einen Vermerk machen das diese .DLLs existieren, oder? |
Re: Rapidshare Premium Login - Wie?
Keiner der weiterhelfen kann bzw Lust dazu hat? :(
|
Re: Rapidshare Premium Login - Wie?
Ist es nicht möglich, sich bei Rapidshare ohne SSL anzumelden? Das würde die Sache zumindest erstmal vereinfachen. wenn dann alles funktioniert, kann man SSL-Support ja später noch einbauen.
Im Übrigen wirst du noch den IdCookieManager brauchen, wenn du auch dauerhaft angemeldet bleiben willst, denn sonst vergisst der Server dich sofort wieder. |
Re: Rapidshare Premium Login - Wie?
Für SSL muss man ja nur die Unit einbinden und einen entsprechenden IO-Handler einbauen. Das sollte die Unit IdSSLOpenSSL und die Klasse TIdSSLIOHandlerSocketOpenSSL sein. Es muss also eine Instanz dieser Klasse erstellt und an IOHandler zugewiesen werden.
|
Re: Rapidshare Premium Login - Wie?
Whoa, das klingt ja unschön.
Da stellt sich mir aber auch die Frage: Wenn ich mich per Hand bei Rapidshare Premium anmelde bin ich eigentlich bis ich irgendwann einmal manuell auf ausloggen drücke angemeldet. Würde das auch für mein Programm gelten? Also sozusagen lasse ich den Login weg (da ich mich ja einmal per Hand anmelden kann) und lass das Programm die eigentliche Aufgabe erledigen, nämlich "einfach" nur eine Datei heruntterladen :) @jaenicke : da werd ich mal ein wenig herumprobieren - bzw ... eine weiter unit erstellen? wenn du vielleicht ein beispiel dazu hättest wäre das echt eine feine sache |
Re: Rapidshare Premium Login - Wie?
Zitat:
Die Frage ist doch: Ist das nur ein Programm zur Übung? Dann würde ich es auch richtig machen. Oder willst du das wirklich verwenden? Dann wären ja auch genug kostenlose Tools verfügbar, die da wohl noch sehr viel mehr können. Zitat:
|
Re: Rapidshare Premium Login - Wie?
Naja ich hatte schon vor das Programm dann selbst auch zu verwenden. Immerhin ist es dann auf meine Bedürfnisse zugeschnitten ;)
Aber wie gesagt, du scheinst mit SSL Verbindungen ja Erfahrung zu haben. Wenn du vielleicht Licht in das tiefe tiefe Dunkel bringen könntest wäre das echt ein Grund zum feiern für mich :D |
Re: Rapidshare Premium Login - Wie?
Ich habe doch schon gesagt was du machen musst...
Delphi-Quellcode:
var
IdHttpLoader: TIdHttp; CookieManager: TIdCookieManager; SSLIOHandler: TIdSSLIOHandlerSocketOpenSSL; begin 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; |
Re: Rapidshare Premium Login - Wie?
Hm... Für mich stellt sich dann jetzt nur die Frage "Wohin mit den Zeilen und wie bekomme ich die roten Wellen unter dem ganzen Weg?" :X
EDIT: Ich hab das jetzt wie folgt untergebracht:
Delphi-Quellcode:
Bleibt die Frage was die " ... " noch für eine Bedeutung haben. Kann da noch was hin oder Muss da noch etwas hin? Wenn ich sie weglasse kommt es wieder zum gleichen Fehler "IOHandler value is not valid"
procedure TForm2.IdSSLIOHandlerSocketOpenSSL1GetPassword(var Password: string);
var IdHttpLoader: TIdHttp; CookieManager: TIdCookieManager; SSLIOHandler: TIdSSLIOHandlerSocketOpenSSL; begin SSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create; CookieManager := TIdCookieManager.Create; IdHttpLoader := TIdHttp.Create; try IdHttpLoader.CookieManager := CookieManager; IdHttpLoader.IOHandler := SSLIOHandler; IdHttpLoader.HandleRedirects := True; ... finally IdHttpLoader.Free; end; end; |
Re: Rapidshare Premium Login - Wie?
Zitat:
Delphi-Quellcode:
uses
IdHttp, IdSSLOpenSSL, IdCookieManager; |
Re: Rapidshare Premium Login - Wie?
Sooo... die letzen roten Wellen sind dank IdCookieManager verschwunden.
Aaaaber die Sache mit der Unit will noch nicht so ganz in meine Birne. Deswegen hier kurz mein Quelltext
Delphi-Quellcode:
Ganz oben sind bei mir die Reiter: "Welcome Page - Unit 2 - IdHTTP" und ich möchte fast wetten das du meinst das ich da noch zusätzlich die IdSSLopenSSL reinbringen muss damit das dann läuft - doch woher nehmen? Finde die im 'Design-Modus' nicht bei den ganzen Tools wo die ganzen Indys sind.
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, StdCtrls, IdMultipartFormData, IdServerIOHandler, IdSSL, IdSSLOpenSSL, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdServerIOHandlerSocket, IdServerIOHandlerStack, IdIOHandlerStream, IdCookieManager ; type TForm2 = class(TForm) IdHTTP1: TIdHTTP; Button1: TButton; Edit1: TEdit; Edit2: TEdit; Memo1: TMemo; IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); var data: TIdMultiPartFormDataStream; begin data := TIdMultiPartFormDataStream.Create; try { add the used parameters for the script } data.AddFormField('login=', edit1.Text); data.AddFormField('password=', edit2.Text); { Call the Post method of TIdHTTP and read the result into TMemo } Memo1.Lines.Text := IdHTTP1.Post('https://ssl.rapidshare.com/premiumzone.html', data); finally data.Free; end; end; var IdHttpLoader: TIdHttp; CookieManager: TIdCookieManager; SSLIOHandler: TIdSSLIOHandlerSocketOpenSSL; begin SSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create; CookieManager := TIdCookieManager.Create; IdHttpLoader := TIdHttp.Create; try IdHttpLoader.CookieManager := CookieManager; IdHttpLoader.IOHandler := SSLIOHandler; IdHttpLoader.HandleRedirects := True; finally IdHttpLoader.Free; end; end. |
Re: Rapidshare Premium Login - Wie?
Ich hab das noch nie mit visuellen Komponenten probiert, keine Ahnung was es da gibt und was nicht außer TIdHttp selbst.
Aber wie kommst du darauf den Quelltext in das Event zu schreiben? Du musst das doch nur der Reihe nach abbarbeiten. |
Re: Rapidshare Premium Login - Wie?
das hat halt so schön da reingepasst :X habs nun aber editiert und ans Ende gepackt.
Aber bisweilen besteht noch immer der gleiche Fehler : "IOHandler value is not valid" :( Aber wie gesagt, muss da oben in den Reitern noch eine Unit mit dem Namen IdSSLopenSSL existieren? aktuell steht IdSSLopenSSL nur bei den uses drinne. |
Re: Rapidshare Premium Login - Wie?
Die Reiter beeinflussen den Compiler nicht, sondern zeigen nur die gerade geöffneten Dateien an. Der Compiler ist unabhängig vom Editor.
|
Re: Rapidshare Premium Login - Wie?
Zitat:
Zitat:
Bei deinen Kenntnissen, wie du sie gerade demonstrierst, frage ich mich wie du da ernsthaft auch den Download hinbekommen willst... Du solltest dir erstmal die Grundlagen von Delphi aneignen... Einen sehr guten Crashkurs findest du hier: ![]() und die neue Version speziell ab Turbo Delphi: ![]() Ein weiteres gutes Online-Buch: ![]() |
Re: Rapidshare Premium Login - Wie?
Danke - wieder etwas gelernt ^^ - Danke für die Crashkurse, werde sie mir mal zu gemüte führen.
Funken tut es dennoch noch nicht. Aber echt bemerkenswert wie umständlich und schwer die Sache mit dem SSL ist. WÜrde glatt behaupten sowas bekommt man nur auf die Reihe wenn man das gesehen hat oder von einem detailliert beschrieben bekommt. Naja, morgen mal weiterschaun - aufgegeben werd ich jedenfalls nicht ;) |
Re: Rapidshare Premium Login - Wie?
Das war schon fast aller Quelltext, mehr ist das nicht. Das war 1:1 aus einem meiner Projekte kopiert. Danach kommt nur noch der Seitenabruf selbst mittels Get / Post. (Also vor dem finally)
Aber du musst halt verstehen was du da eigentlich machst, sonst kann das nix werden... |
Re: Rapidshare Premium Login - Wie?
[OT]
Zitat:
[/OT] |
Re: Rapidshare Premium Login - Wie?
Und wenn ihm jetzt noch wer sagt, daß es ihm nicht wirklich weiter hilft, weil er jetzt zwar eingeloggt ist, aber bei jedem weiteren Aufruf der Seite stets das richtige Cookie senden muss, damit er auch eingeloggt bleibt.
Ob ich evtl. erwähnen sollte, daß Rapidshare den Premium Download von Dateien via HTTP Auth erlaubt? Ach, ich glaub ich lass das lieber ... ;). Immerhin wäre ein ...
Delphi-Quellcode:
... ja auch einfach zu simpel :).
TIdHTTP.Request.BasicAuthentication := true;
TIdHTTP.Request.Username := 'rapidshareusername'; TIdHTTP.Request.Password := 'rapidsharepassword'; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz