Logowanie z ciasteczkiem i pobieranie plików

0

Logowanie z ciasteczkiem i pobieranie plikówałby cokies:

  1. logownie na strone i pobranie ciasteczka
  2. pobieranie plików [przy pomocy ciasteczka

Nie wiem jak pobrać ciasteczko, po wysłaniu danych do logowania?
I jak je wykorzystać do pobrania pliku?

Zaczełam pisać program i prosiłabym o radę jak o dalej rozgryźć (jakiś przykład w którym jest to zastosowane).
Za strone do takiego programu wybrałam chomikuj.pl (Tylko nie piszcie że jest program ChomikBox).

Poniżej moje początki.
PROSZĘ O WSPARCIE :)

var
 HTTP : TIDHTTP;
 Cookie : TidCookieManager;
 Data, Page : TStringList;
 Result: Boolean;
 s:string;
begin
  HTTP := TIDHTTP.Create(NIL);
 Cookie := TidCookieManager.Create(NIL);

 HTTP.Request.UserAgent := 'Mozilla/5.0 (Windows NT 5.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0';
 HTTP.Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
 HTTP.Request.AcceptLanguage := 'en-US,en;q=0.5';
 HTTP.Request.AcceptCharSet := 'windows-1251,utf-8;q=0.7,*;q=0.7';
 HTTP.Request.AcceptEncoding :='gzip, deflate';
 HTTP.Request.Referer := 'http://chomikuj.pl/';
 HTTP.Request.Pragma := 'no-cache';
 HTTP.Request.CacheControl := 'no-cache';
 HTTP.Request.RawHeaders.Add('X-Requested-With: XMLHttpRequest');
 HTTP.AllowCookies := True;
 HTTP.HandleRedirects := True;
 HTTP.ProtocolVersion := pv1_1;
 HTTP.Request.Connection := 'Keep-Alive';
 HTTP.CookieManager  := Cookie;

 HTTP.Get()
 Data := TStringList.Create;
 Page := TStringList.Create;
 Cookie.CookieCollection.Add;
 Data.Add('ReturnUrl=&[email protected]&Password=SdHoX9sAZz51&rememberLogin=false&topBar_LoginBtn=Zaloguj');
 page.Text := HTTP.Post('http://chomikuj.pl', Data);

//jak dostać ciastko i je zapamiętać??

     Memo1.Lines.Add(s);
      memo1.Lines.add(Cookie.Version);
      memo1.Lines.add(HTTP.response.ResponseText);

// jak pobrać plik z tym ciastkiem??


 Page.Free;
 Data.Free;
1

Po podłączeniu TidCookieManager cała sprawa z ciasteczkami odbywa się automatycznie, nic nie musisz więcej robić.

2

Wiele razy było opowiadane że Indy są popsute nie nie działają jak byśmy tego chcieli, a istnieje jego dobry zamiennik Obsługa protokołu HTTP przy użyciu pakietu Synapse

2

Zarządzanie ciasteczkami w Indy działa automatycznie ale jeżeli z jakiś powodów chcesz się dobrać do ciasteczek to tak jak napisał @_13th_Dragon najlepiej wykorzystać IdCookieManager wtedy nie musisz czytać z nagłówków tylko masz wszystkie ciacha w postaci kolekcji.

var
  i: integer;
begin
  for i:= 0 to IdCookieManager1.CookieCollection.Count - 1 do
    Memo1.Lines.Add(IdCookieManager1.CookieCollection.Items[i].CookieText)
end;
0

Już wiem z prywatnej wiadomości od @BlueKasia, że chodzi/ło Jej o zalogowanie się i pobieranie z chomikuj.pl plików. Machnąłem mozolnie analizując co i jak WireSharkiem prosty programik, gdzie podajemy nasz login (nie e-mail czyli bez @ itp), hasło oraz identyfikator własnego pliku i możemy go pobrać pod domyślną nazwą do D:\test.zip. Kod był pisany na szybko, także wiele rzeczy da się za pewne poprawić i ewentualnie dorobić czy pozmieniać wedle własnych upodobań. Dorobić dodatkowe sprawdzanie poprawności, wyłuskanie identów pliku z treści zwrócengo kodu HTML ze stroną naszego lub obcego chomika i tym podobne. Szczegóły posłałem @BlueKasia na prywatną wiadomośc. Póki co nie publikuje kodu, bo jest bałaganiarski i nie chće znowu poczytac, że promuje klepanie pod Delphi 7 oraz że użyłem Synapse, a nie Indy itd.

3

Ok, skoro tak @Marooned mnie zachęca. A do tej pory @BlueKasia nie odpisuje. Także publikuje tutaj rozwiązanie. Tak, jak wspomniałem pisane na szybko, pod kątem pobrania pliku typu ZIP, z własnego chomika. Kod może i bałaganiarski, jednak oczywiscie nikomu nie bronię pozmieniać go po swojemu i dostosować do własnych potrzeb. Tylko miło by jakbyście późnej "dali credits" w swoim tworze, z czyjego przykładu korzystaliście. Oczywiście ident pliku należało by pobrać z kodu strony, dorobić jeszcze jakąś dodatkową obsługę błędów i takie tam, ale to już pozostawiam osobom zainteresowanym tematem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1