Delphi i cookies

0

Witam,może dla większości pytanie banalne.Piszę program który loguje się na stroną poprzez komponent : TWebBrowser.Wszystko super działa...ale informacje taką dostaje podczas logowania :

Prawdopodobnie Twoja przeglądarka ma wyłączone technologie cookies i session (ciastek i sesji), logowanie z tego powodu nie jest możliwe technicznie. Włącz ciasteczka lub sesje, aby móc się zalogować!

Jak to rozwiązać aby komponent pobierał cocki?
funkcja :
ShowMessage(WebBrowser1.OleObject.Document.cookie);
pokazuje jakie ciasteczko niby zostało pobrane...

0

Przepraszam za flood...
Znalazłem takie coś :

function GetCookies(WebBrowser : TWebBrowser) : String;
var
documentt: IHTMLDocument2;
cookies: String;
begin
documentt := WebBrowser.Document as IHTMLDocument2;
if Assigned(documentt) then
cookies := documentt.cookie;
Result:=cookies;
end;

Ale jak to użyć i gdzie podczas wykonywania programu ?

0

A czy strona koniecznie korzysta JavaScriptu albo musisz pokazać jej wygląd czy potrzeba, bo jeżeli tylko się logujesz i potrzebujesz rezultaty strony po zalogowaniu to skorzystaj z pakietu Synapse (więcej informacji w google / na forum / w dokumentacji i przykładach oraz w moim ule na: Obsługa protokołu HTTP przy użyciu pakietu Synapse) lub ewentualnie Indy, ale tutaj zawsze są jakieś problemy z ciastkami i metodą POST, a przynajmniej wielu początkujących je ma, a im pomóc może wtedy chyba tylko Użytkownik o nicku kAzek. Wedlug mnie korzystanie koniecznie z TWebBrowser gdzie spokojnie temat można ogarnąć Synapse to jak polowanie na muchy z armatą.

0

WebBrowser obsługuje ciacha jeżeli tylko Internet Explorer ma je włączone a funkcja którą znalazłeś nie służy do tego aby WebBrowser pobrał ciacha tylko do zwyczajnego sprawdzenia jakie ciacha zostały pobrane.
Jednak skoro strona wyświetla taką informację to:
a) masz faktycznie wyłączone ciacha w IE ale jeżeli przez przeglądarkę ręcznie się zalogujesz to nie w tym problem
b) wysyłasz jakieś inne niż strona oczekuje dane (może np.: przy tym logowaniu w formularzu jest jakiś identyfikator sesji który się zmienia a ty wysyłasz za każdym razem taki sam) ale nie wiem w jaki sposób się logujesz, nie podałeś ani linii kodu więc nie powiem co może być źle

0

Daje linijkę do komponentu w WebBrowser :
http://jakas_strona/account/l[...]name=login&password=hasło

Wcześniej otwiera się w tle po uruchomieniu strona logowania aby powrót działał....

0

A sprawdziłeś jakimś snifferem (lub choćby przez przejrzenia w źródle strony kodu formularza logowania) jakie dane faktycznie są wysyłane podczas logowania? Czy faktycznie tylko login i password? No i czy na pewno logowanie jest zrobione metodą GET? Ja Ci tego nie powiem aby to sprawdzić musiałbym znać adres strony.

0

Wysłałem Panu wszystko na PW

Podaje rozwiązanie które podesłał mi kolega @kAzek

 var
 PostData: string;
 Data: OleVariant;
 Headers: OleVariant;
 i: integer;
begin
 WebBrowser1.Navigate('http://http://strona.pl/account/login');

 PostData:= 'username=TU_LOGIN&userpassword=TU_HASLO&option=andback';

 Data := VarArrayCreate([0, length(PostData)-1], varByte);

 for i := 1 to length(PostData) do
   Data[i-1] := ord(PostData[i]);

 Headers := 'Content-type: application/x-www-form-urlencoded'#10#13;

 WebBrowser1.Navigate('http://strona.pl/account/login', EmptyParam, EmptyParam, Data, Headers);
end;

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