logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[delphi] [Delphi] Jak zrealizować logowanie na Rapidshare.com w programie?

Loch_Ness 23 Wrz 2008 14:55 3419 17
REKLAMA
  • #1 5563570
    Loch_Ness
    Poziom 17  
    Posty: 375
    Pomógł: 9
    Ocena: 33
    Witam, jak rozwiazac sprawe logowania, np. na Rapidshare.com, w delphi? Chcialbym napisac program ktory loguje sie na serwerze, dane dostepowe moga byc w kodzie, ..... jak to jest rozwiazane np. w programie rapget ?
  • REKLAMA
  • #3 5565023
    Loch_Ness
    Poziom 17  
    Posty: 375
    Pomógł: 9
    Ocena: 33
    Witam, co robie źle? Probowałem juz wszystkiego. Na zwykłe http loguje sie bez problemu, a z https juz nie. Niby wszystk ok, a nie loguje sie.

    
    procedure TForm1.Button1Click(Sender: TObject);
    var
         HTTP: TidHTTP;
         html, s: string;
         i: integer;
         StreamIn: TStringStream;
    begin
         HTTP := TidHTTP.Create(nil);
         StreamIn:= TStringStream.Create('');
         HTTP.IOHandler:= Form1.IdSSLIOHandlerSocket1;
         Http.Request.UserAgent:= 'Mozilla/5.0 (Windows; U; Windows NT 5.0; pl-PL; rv:1.7.6) Gecko/20050226 Firefox/1.0.1';
         StreamIn.WriteString('uselandingpage=1&login=******&password=*****');
         try
          HTTP.HandleRedirects := True;
          HTTP.AllowCookies := True;
          HTTP.Request.ContentType :='application/x-www-form-urlencoded';
          html := HTTP.Post('https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi',StreamIn);
    
          s := 'Cookies: ';
          if HTTP.CookieManager.CookieCollection.Count > 0 then
            for i := 0 to HTTP.CookieManager.CookieCollection.Count - 1 do
              s := s + HTTP.CookieManager.CookieCollection.Items[i].CookieText;
          Memo1.Lines.Add(s);
      // Cookies: user=login-zakodowanehaslo; path=/; domain=.rapidshare.com
          memo1.Lines.add(HTTP.response.ResponseText);
          //HTTP/1.1 200 OK
          memo1.Lines.add(HTTP.Request.RawHeaders.Text);
       //  Content-Type: application/x-www-form-urlencoded
       //  Content-Length: 46
      //  Host: ssl.rapidshare.com:443
      //  Accept: text/html, */*
      //  User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; pl-PL; rv:1.7.6) Gecko/20050226 Firefox/1.0.1
         finally
          FreeAndNil(HTTP);
         end;
    end;
    


    W komentarzach jest to co wyswietla sie w memo1.
    Nie otrzymuje terminu waznosci, co widac na zdjeciach.[code]
    Załączniki:
    • 3.TIF (211.31 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • 2.TIF (141.48 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • 1.TIF (157.06 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #4 5567163
    kamm24
    Poziom 10  
    Posty: 49
    którą wersję masz indy??

    żeby używać ssl trzeba mieć dodatkowe dllki
  • #5 5567671
    Loch_Ness
    Poziom 17  
    Posty: 375
    Pomógł: 9
    Ocena: 33
    Delphi w wersji 7.0, indy 9.0, co do dll'ow tomam wszystkie, bledow nie sypie ale tez nie loguje sie.
  • REKLAMA
  • #7 5567780
    Loch_Ness
    Poziom 17  
    Posty: 375
    Pomógł: 9
    Ocena: 33
    ddl,ki podmienilem, (pobralem inne) teraz bledow nie sypie ale tez nie loguje sie.
  • #8 5568197
    Dżyszla
    Poziom 42  
    Posty: 7074
    Pomógł: 1095
    Ocena: 224
    metoda Post przypadkiem nie ma 3 parametrów? Adres, parametry (zakodowane przez URLEncode) a odpowiedź napływa do Stream'a. Alternatywnie może być zwracana do zmiennej String (wtedy tlyko 2 pierwsze parametry).
  • REKLAMA
  • Pomocny post
    #9 5568305
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #10 5570128
    Loch_Ness
    Poziom 17  
    Posty: 375
    Pomógł: 9
    Ocena: 33
    nikt nie wie jak to rozwiazac?
  • Pomocny post
    #11 5571990
    Konto nie istnieje
    Konto nie istnieje  
  • #12 5589065
    Loch_Ness
    Poziom 17  
    Posty: 375
    Pomógł: 9
    Ocena: 33
    Get nie pomaga, .... mysle ze tu cos z petla for jest nie tak.
  • #13 5594624
    Loch_Ness
    Poziom 17  
    Posty: 375
    Pomógł: 9
    Ocena: 33
    Jakby ktos miał chwile czasu sie pobawić, byłbym wdzięczny, kont rs:

    login:6349934
    pass:gDT6hDDjms
  • Pomocny post
    #14 5595623
    Konto nie istnieje
    Konto nie istnieje  
  • #15 5596256
    Loch_Ness
    Poziom 17  
    Posty: 375
    Pomógł: 9
    Ocena: 33
    Zgadza się, ale ja próbuje zrobić tak abym był zalogowany gdy otwieram stronę rapidshare.com w przeglądarce lub wklejam link i ściagam bezpośrednio ... a tu wlacza sie panel logowania
  • Pomocny post
    #16 5596664
    Konto nie istnieje
    Konto nie istnieje  
  • #17 5597096
    Dżyszla
    Poziom 42  
    Posty: 7074
    Pomógł: 1095
    Ocena: 224
    Każda przeglądarka (w tym Indy) tworzy własną sesję. Względami bezpieczeństwa jest podyktowane, że nie zalogujesz się w innej sesji, niż bieżąca. Z resztą sam https wprowadza nawet kolejny poziom zabezpieczenia pod tym względem związany z szyfrowaniem. Nie istnieje nic takiego, jak logowanie się komputera - loguje się wyłącznie sesja.
  • #18 5597770
    Loch_Ness
    Poziom 17  
    Posty: 375
    Pomógł: 9
    Ocena: 33
    Ok, dziekuje za pomoc, wszystko wyjaśnione.

Podsumowanie tematu

✨ Dyskusja dotyczy implementacji logowania do Rapidshare.com w Delphi z wykorzystaniem komponentów Indy, w szczególności obsługi protokołu HTTPS. Problemem jest poprawne przesłanie danych logowania (login, hasło) metodą POST oraz obsługa ciasteczek i przekierowań. Użytkownik stosuje Delphi 7 i Indy 9, z dołączonymi bibliotekami SSL (OpenSSL DLL), jednak logowanie nie działa poprawnie. Wskazano konieczność użycia komponentu IdSSLIOHandlerSocketOpenSSL oraz IdCookieManager do zarządzania sesją i ciasteczkami. Zalecane jest wykonanie najpierw żądania GET do strony głównej, aby złapać ciasteczka sesyjne, a następnie POST z danymi logowania. Podano przykładowy kod wykorzystujący TStringStream do przesłania parametrów oraz obsługę odpowiedzi w TStringStream. Podkreślono, że sesja logowania jest powiązana z konkretną sesją HTTP i nie można być zalogowanym w przeglądarce bezpośrednio po zalogowaniu się przez Indy, gdyż każda sesja jest odrębna. Alternatywnie zasugerowano otwarcie adresu logowania w przeglądarce za pomocą ShellExecute z parametrami loginu i hasła. Ostatecznie wyjaśniono, że logowanie dotyczy sesji, a nie całego systemu, co jest zabezpieczeniem protokołu HTTPS.
Wygenerowane przez model językowy.
REKLAMA