Logowanie z ciasteczkiem i pobieranie plików

Odpowiedz Nowy wątek
2013-11-24 14:30
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;
edytowany 1x, ostatnio: madmike, 2013-11-24 15:04
@Adam Boduch - może rozważcie automatyczne przekierowanie do kosza tematów zawierających w tytule słowa "pomocy","help" i parę innych, wraz z automatycznym uzasadnieniem: - "Za nie przeczytanie (lub nie zrozumienie po przeczytaniu) zasad tworzenia tytułów wątku" - _13th_Dragon 2013-11-24 14:46
@_13th_Dragon, nie badz bardziej moderatorski niz moderatorzy - tytul byl wzglednie poprawny, a ze znalazlo sie tam takze POMOCY tragedia sie nie stala - nie ma powodow wysylac mniej obytych uzytkownikow od razu do kosza... @BlueKasia: wstawiaj kod w znaczniki <code=delphi></code> od razu jest on czytelniejszy ;) - madmike 2013-11-24 15:08

Pozostało 580 znaków

2013-11-24 15:12
1

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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2013-11-24 15:15
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

To, że sobie nie radzisz nie znaczy zaraz, że komponenty są popsute. - szopenfx 2013-11-24 16:23
Sam jesteś popsuty trzeba z komponentów umieć korzystać bo tak się składa że zrobiłem kilka dość dużych projektów korzystając miedzy innymi z Indy i wyobraź sobie działają. - kAzek 2013-11-24 16:45
Kiepskiemu tancerzowi jaja wadzą. - _13th_Dragon 2013-11-24 20:50

Pozostało 580 znaków

2013-11-24 16:57
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;

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.

Pozostało 580 znaków

2013-11-26 02:12
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.


Zachęcam jednak do publikacji rozwiązania na forum, a nie w PM - skorzystają inni. - Marooned 2013-11-30 13:04

Pozostało 580 znaków

2013-11-30 14:07

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.


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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