Obsługa olx.pl pod Indy - kłopot z zapamiętaniem ciasteczek.

0

Robię programik do obsługi ogłoszeń na OLX, na własny użytek.

Mam problem, otóż mogę się zalogować w Delphi na stronę, ale jak już wchodzę na inne podstrony to traktuje mnie jakbym był wylogowany. Winne są zapewne tu ciastka, nie istnieje sesja. Ktoś wie jak to ugryźć? Wiem, że jest komponent idCookieManager, nie wiem jak to użyć. Proszę o jakieś wskazówki.

Chodzi mi o to, że mogę obsługiwać stronę z poziomu programu.

1

Podstawa to jaka wersja Delphi i Indy jak Indy starsze niż 10 to od razu zmień na 10 instrukcje masz tu http://4programmers.net/Forum/1066577 a druga sprawa to podaj kod mamy wróżyć z fusów co skopałeś czy napisać ci gotowca?

I znowu dzień dziecka jak już zrobiłem z nudów to daję kod... nie używam żadnyego zbędnego tutaj IdCookieMenager ani nie korzystam z GZip (nie ma IdCompressorZLib) jest tylko IdHTTP i IdSSLIOHandlerSocketOpenSSL (do obsługi SSL)

const
  USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0';
  OLX_LOGIN_URL = 'https://ssl.olx.pl/konto/';
var
  htmlStr, dataStr: string;
  dataSL: TStringList;
begin
  IdHTTP.HandleRedirects:= True;
  IdHTTP.Request.UserAgent:= USER_AGENT;
  IdHTTP.IOHandler:= IdSSLIOHandlerSocketOpenSSL;
  IdHTTP.Get(OLX_LOGIN_URL); //for user_id cookie
  IdHTTP.Request.Referer:= OLX_LOGIN_URL;
  dataSL:= TStringList.Create;
  try
    dataSL.Add('login[email]=' + 'EMAIL');
    dataSL.Add('login[password]=' + 'HASLO');
    htmlStr:= IdHTTP.Post(OLX_LOGIN_URL, dataSL,  IndyTextEncoding(TEncoding.UTF8));
  finally
    dataSL.Free;
  end;
  Memo1.Text:= htmlStr;
end;
0

@kAzek ogromne dzięki, działa!

Tylko małe pytanie, otóż:

IndyTextEncoding(TEncoding.UTF8)

takiej funkcji nie mam, to twoja autorska?
Wywaliłem ten parametr, ale dostaję stronę z "krzaczkami", podejrzewam, że właśnie wina tego.

0

Jaka to wersja Indy i Delphi? IndyTextEncoding jest funkcją z Indy (zdefiniowana w module IdGlobal) ale TEncoding jest w nowych wersjach Delphi (nie wiem dokładnie od której chyba 2009). Zamiast tego można by użyć np.:

htmlStr:= IdHTTP.Post(OLX_LOGIN_URL, dataSL, IndyTextEncoding_UTF8);

ale nie ma co się stresować w starych Delphi krzaki i tak będą ponieważ stare Delphi nie obsługuje Unicode.

0

Używam najnowszej, środowisko RAD Studio XE8. Dzięki, spróbuje to co podałeś.

0

W Delphi XE8 powinno działać jak podałem na początku tylko do uses dodaj IdGlobal.
PS: Nie kłam że najnowszej bo Delphi XE 8 wcale nie jest najnowszą wersją. Najnowsze jest Delphi 10 Seattle http://www.embarcadero.com/products/delphi

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