Delphi-PRAXiS
Seite 5 von 5   « Erste     345   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Rapidshare Premium Login - Wie? (https://www.delphipraxis.net/134539-rapidshare-premium-login-wie.html)

jaenicke 24. Mai 2009 20:22

Re: Rapidshare Premium Login - Wie?
 
Zitat:

Zitat von 0xF30FC7
daß Rapidshare den Premium Download von Dateien via HTTP Auth erlaubt?

Das kann ich ja nicht wissen, ich kenne Rapidshare kaum, schon gar nicht die Premiumzone. :mrgreen:
Aber mit SSL ist es sicherer. :mrgreen:

Und der Cookie sollte doch vom Cookiemanager verwaltet werden, oder?

Fridolin Walther 24. Mai 2009 20:28

Re: Rapidshare Premium Login - Wie?
 
Hab ich auch grad gesehen. Ok, dann hilfts ja doch ansatzweise. Trotzdem würde ich HTTP Auth vorziehen. Vor allem weils den separaten Login Krams unnötig macht. Wenn Datei http://rapidshare.com/files/111111/datei.exe runtergeladen werden soll, pack ich einfach die Auth Daten mit in den HTTP Request und erhalt die Datei direkt.

schismatic1 25. Mai 2009 18:11

Re: Rapidshare Premium Login - Wie?
 
Moment jetzt...

Das heißt wenn ich die Datei http://rapidshare.com/files/235937034/gain.dat (für das Beispiel hochgeladen) runterladen will könnte ich mittels dieser sache hier:

Delphi-Quellcode:
TIdHTTP.Request.BasicAuthentication := true;
TIdHTTP.Request.Username := 'rapidshareusername';
TIdHTTP.Request.Password := 'rapidsharepassword';
auch den Download starten? (bei Premiumlogin ist es wohl aber 'Login' statt 'Username')

Aber beim Aufruf des Links passiert ja noch nicht viel. Nach dem Klick auf 'Premium' ändert sich die URL in http://rs712.rapidshare.com/files/235937034/gain.dat. Bei Manueller Eingabe der URL in die Browserleiste baut sich aber wieder nur der Inhalt von http://rapidshare.com/files/235937034/gain.dat auf. Verrückt :roll:

[snip]

Ohohoh... meine Birne ist gerade voll am rühren von Informationen. Und langsam ergibt sich ein Bild.

#1 die URL war falsch, so muss die aussehen: https://ssl.rapidshare.com/cgi-bin/p...WORT&german=on
Wenn ich das manuell in die Browserleiste eingebe bekomme ich den Login. Das heißt ich muss meinen Quelltext dahingehend anpassen:
Delphi-Quellcode:
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);
    data.AddFormField('&german=', 'on');
    { Call the Post method of TIdHTTP and read the result into TMemo }
    Memo1.Lines.Text := IdHTTP1.Post('https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi', data);
  finally
    data.Free;
  end;
end;
Das probiere ich gleich mal. Wenn das aber nicht geht dann müsste mir jemand bitte sagen wo folgender Quelltext hingepackt werden muss :)

Delphi-Quellcode:
object IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocket
   SSLOptions.Method = sslvSSLv2
   SSLOptions.Mode = sslmUnassigned
   SSLOptions.VerifyMode = []
   SSLOptions.VerifyDepth = 0
   Left = 496
   Top = 65528
  end
  object http: TIdHTTP
   IOHandler = IdSSLIOHandlerSocket1
   MaxLineAction = maException
   ReadTimeout = 0
   AllowCookies = True
   ProxyParams.BasicAuthentication = False
   ProxyParams.ProxyPort = 0
   Request.ContentLength = -1
   Request.ContentRangeEnd = 0
   Request.ContentRangeStart = 0
   Request.ContentType = 'text/html'
   Request.Accept = 'text/html, */*'
   Request.BasicAuthentication = False
   Request.UserAgent =
     'Mozilla/5.0 (Windows; U; Windows NT 6.0; cs; rv:1.9.0.3) Gecko/2' +
     '008092417 Firefox/3.0.3'
   HTTPOptions = [hoForceEncodeParams]
   Left = 520
   Top = 65528
  end
Wenn ich den nämlich einfach in meine Quelltext reinpacke dann erhält 'objects' immer eine rote wellige Linie :X

[edit=Phoenix]Lange Linie von Unterstrichen, die das Design zerissen haben, entfernt. Mfg, Phoenix[/edit]

Namenloser 25. Mai 2009 19:21

Re: Rapidshare Premium Login - Wie?
 
Zitat:

Zitat von schismatic1
Delphi-Quellcode:
object IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocket
   SSLOptions.Method = sslvSSLv2
   SSLOptions.Mode = sslmUnassigned
   SSLOptions.VerifyMode = []
   SSLOptions.VerifyDepth = 0
   Left = 496
   Top = 65528
  end
  object http: TIdHTTP
   IOHandler = IdSSLIOHandlerSocket1
   MaxLineAction = maException
   ReadTimeout = 0
   AllowCookies = True
   ProxyParams.BasicAuthentication = False
   ProxyParams.ProxyPort = 0
   Request.ContentLength = -1
   Request.ContentRangeEnd = 0
   Request.ContentRangeStart = 0
   Request.ContentType = 'text/html'
   Request.Accept = 'text/html, */*'
   Request.BasicAuthentication = False
   Request.UserAgent =
     'Mozilla/5.0 (Windows; U; Windows NT 6.0; cs; rv:1.9.0.3) Gecko/2' +
     '008092417 Firefox/3.0.3'
   HTTPOptions = [hoForceEncodeParams]
   Left = 520
   Top = 65528
  end
Wenn ich den nämlich einfach in meine Quelltext reinpacke dann erhält 'objects' immer eine rote wellige Linie :X

Das gehört in deine DFM-Datei.

schismatic1 25. Mai 2009 19:43

Re: Rapidshare Premium Login - Wie?
 
Tadaaaa :D

Habe gerade nebenbei ein wenig rumprobiert und siehe da: Die Fehlermeldung 'IOHandler value is not valid' wurde erfolgreich terminiert ^^

Ich brauchte den Code nicht zu integrieren, es reichte die auf dem Formular platzierten IdHTTP1 und IdSSLIOHandlerSocketOpenSSL1 miteinerander zu verlinken indem ich beim Objektinspektor von IdHTTP1 einfach unter Linkage - IOHandler IdSSLIOHandlerSocketOpenSSL1 eingetragen habe :zwinker:

JETZT muss ich nur noch dem Programm verstehen zu geben wo sich die Programmbibliotheken befinden damit auch noch die Fehlermeldung 'Could not load SSL library' verschwindet :)


Wenn ich es noch richtig in Erinnerung habe handelt es sich um die beiden .DLLs mit dem Namen 'libssl32.dll' und 'libeay32.dll' welche doch einfach nur in jenen Ordner gepackt werden müssten in welchem sich die Programm.exe befindet, oder? Habe es versucht aber noch scheinen sie nicht gefunden zu werden :(

Edit meint: Das spielen mit Fake-DLLs hat mir gezeigt das es 'libeay32.dll' und 'ssleay32.dll' (statt libssl32.dll) sein muss. Nachdem ich jene runtergeladen habe wurde zusätzlich noch nach 'vsinit.dll' gefragt. Auch diese habe ich gesucht, gefunden, runtergeladen und in den Ordner zu der Programm.exe gepackt. Jedoch schreit er mir nun wieder den Fehler 'Could not load SSL library' an den Kopf. Blöd...

Wenn da jetzt noch jemand den (wahrscheinlich letzen) Hinweis geben könnte wie ich das noch einrenken kann das dieser 'Could not load SSL library' Fehler verschwindet würde ich glatt platzen vor freude :party:

Fridolin Walther 25. Mai 2009 20:54

Re: Rapidshare Premium Login - Wie?
 
Falls es jemanden interessiert: Wie man eine Datei bei Rapidshare herunterlädt und dabei einen Premium Account nutzt in weniger als 20 Zeilen Code. Keine lustigen DLLs oder sonstiges Gedöhns ;).
Delphi-Quellcode:
procedure DownloadFileFromRapidshare(URL, DestinationFile, Username, Password : string);
var
  FileStream: TFileStream;
  HTTP : TIdHTTP;
begin
  FileStream := TFileStream.Create(DestinationFile, fmCreate);
  HTTP := TIdHTTP.Create;
  HTTP.Request.BasicAuthentication := true;
  HTTP.Request.Username := Username;
  HTTP.Request.Password := Password;
  HTTP.HandleRedirects := true;
  HTTP.Get(URL, FileStream);
  HTTP.Free;
  FileStream.Free;
end;
Disclaimer: Bevor man den Code adaptiert sollte man ihn zumindest um Fehlerhandling erweitern. Auch wäre es wahrscheinlich benutzerfreundlicher wenn man das ganze asynchron macht damit die UI nicht für die Dauer des Downloads blockiert ;).

schismatic1 25. Mai 2009 21:44

Re: Rapidshare Premium Login - Wie?
 
Das klingt ja geil :D

Gleich mal testen :)

EDIT: Wow, das klappt ja prima ^^

Tausendmal einfacher als die Sache mit dem SSL und für meine Zwecke ausreichend :)

Kannst du mir vielleicht noch sagen was du mit "asynchron" meinst?

jaenicke 25. Mai 2009 21:55

Re: Rapidshare Premium Login - Wie?
 
Asynchron heißt eben im Thread, damit dein Programm derweil noch normal reagiert...
Zudem sind synchron wie im Beispiel keine multiplen Downloads möglich.

Die Funktionalität des Tools ist so allerdings erst einmal schlechter als jeder existierende Downloadmanager für diesen Zweck. :mrgreen:

schismatic1 26. Mai 2009 08:25

Re: Rapidshare Premium Login - Wie?
 
Morgen,

danke an alle die sich die Zeit genommen haben hier Hilfe zu leisten. Habe statt dem direkten Login bei Rapidshare nun wie 0xF30FC7 geschrieben bei jeder Downloadanfrage die Zugangsdaten übersendet.

Das Programm funktioniert auch soweit super :bounce1: aber bedarf jetzt noch einer optimierung ---> Download in Thread & Download nur im Arbeitsspeicher halten und löschen anstatt Festplatte anzusprechen.

Doch da das mit dem eigentlichen Problem nichts mehr zu tun hat, erstelle ich dafür wenn einen eigenen Thread!

Aber bisher:

:dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:24 Uhr.
Seite 5 von 5   « Erste     345   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz