🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.pascal
10 messages
10 total messages Started by =?UTF-8?B?U8WCYX Wed, 06 Apr 2011 01:28
Logowanie na stronie http, błąd 301
#89791
Author: =?UTF-8?B?U8WCYX
Date: Wed, 06 Apr 2011 01:28
55 lines
1794 bytes
Witam,

Napisałem program, który loguje mi się na różne witryny,
po czym automatycznie pobiera mi z tych witryn pliki cennika.
Problem w tym, że na jedną z witryn nie mogę się zalogować.
Program jest trochę rozbudowany, więc napiszę skrótowo
czego użyłem:


IdHTTP.CookieManager := IdCookie;
// IdHTTP.IOHandler := IdSSL;
IdHTTP.HandleRedirects := True;
IdHTTP.AllowCookies := True;
IdHTTP.ReadTimeout := 5000;
IdHTTP.Request.UserAgent := 'Mozilla/5.0 (X11; U; Linux i686; pl-PL;
rv:1.9.2.16) Gecko/20110322 Fedora/3.6.16-1.fc14 Firefox/3.6.16';

//pobranie strony logowania
adres := 'http://nowe.yamo.pl/'
IdHTTP.Request.Host := adres;
UstawCookies();
strona := IdHTTP.Get(adres);
OdbierzCookies();

   frData := TIdMultiPartFormDataStream.Create;
   try
     frData.AddFormField('l_login', moj_login);
     frData.AddFormField('l_pass', moje_haslo);
     frData.AddFormField('sf', 'l_login');
     UstawCookies();
     strona := IdHTTP.Post(adres, frData); //WYSYŁANIE FORMULARZA
     OdbierzCookies();
   finally
     FreeAndNil(frData);
   end;

Efekt jest taki, że Post zamiera na ok. półtorej minuty,
po czym zwraca pusty ciąg. Gdy zaś HandleRedirects
ustawię na false, to zwraca mi błąd 301. Tyle, że w
IdHTTP.Response.Location pojawia się wówczas ten sam adres,
który użyłem do wysłania formularza(!) - jakiś bezsens.

Przeglądarka (Firefox) po wyłączeniu javascript loguje się
bez problemów, a więc javascript nie ma tu nic do rzeczy.
Obsługa cookies raczej działa dobrze, bo na innych
witrynach nie mam takich problemów, ale jak trzeba to
podam co jest w UstawCookies i OdbierzCookies.

Może ktoś doradzi, co jest nie tak z tym kodem?
Gdzie szukać przyczyny problemu?
Jakaś wskazówka? Bo ja już nie mam pomysłu.

Pozdrawiam,
Sławek

Re: Logowanie na stronie http, b��d 301
#89793
Author: webmajsterek@poc
Date: Wed, 06 Apr 2011 12:38
10 lines
256 bytes
przecierz ta strona nie ma prawa dzia��c z wy��czony� javascript ( logowanie
oparte na javiescript ).   i pod firefoxem jak wy��cze jave to nie pokazuje si�
okienko logowania .




--
Wys�ano z serwisu OnetNiusy: http://niusy.onet.pl

Re: Logowanie na stronie http, b��d 301
#89794
Author: webmajsterek@poc
Date: Wed, 06 Apr 2011 15:36
161 lines
4214 bytes
> Witam,

>

> Napisa�em program, kt�ry loguje mi si� na r�ne witryny,

> po czym automatycznie pobiera mi z tych witryn pliki cennika.

> Problem w tym, �e na jedn� z witryn nie mog� si� zalogowa�.

> Program jest troch� rozbudowany, wi�c napisz� skr�towo

> czego u�y�em:

>

>

> IdHTTP.CookieManager := IdCookie;

> // IdHTTP.IOHandler := IdSSL;

> IdHTTP.HandleRedirects := True;

> IdHTTP.AllowCookies := True;

> IdHTTP.ReadTimeout := 5000;

> IdHTTP.Request.UserAgent := 'Mozilla/5.0 (X11; U; Linux i686; pl-PL;

> rv:1.9.2.16) Gecko/20110322 Fedora/3.6.16-1.fc14 Firefox/3.6.16';

>

> //pobranie strony logowania

> adres := 'http://nowe.yamo.pl/'

> IdHTTP.Request.Host := adres;

> UstawCookies();

> strona := IdHTTP.Get(adres);

> OdbierzCookies();

>

>  � frData := TIdMultiPartFormDataStream.Create;

>  � try

>  � � frData.AddFormField('l_login', moj_login);

>  � � frData.AddFormField('l_pass', moje_haslo);

>  � � frData.AddFormField('sf', 'l_login');

>  � � UstawCookies();

>  � � strona := IdHTTP.Post(adres, frData); //WYSY�ANIE FORMULARZA

>  � � OdbierzCookies();

>  � finally

>  � � FreeAndNil(frData);

>  � end;

>



> Przegl�darka (Firefox) po wy��czeniu javascript loguje si�

> bez problem�w, a wi�c javascript nie ma tu nic do rzeczy.

> Obs�uga cookies raczej dzia�a dobrze, bo na innych

> witrynach nie mam takich problem�w, ale jak trzeba to

> podam co jest w UstawCookies i OdbierzCookies.

>

> Mo�e kto� doradzi, co jest nie tak z tym kodem?

> Gdzie szuka� przyczyny problemu?

> Jaka� wskaz�wka? Bo ja ju� nie mam pomys�u.

>

> Pozdrawiam,

> S�awek


zbada�em strone  -- bez javyscript na 100 % nie ma szans zeby si� zalogowac (
przynajmniej z poiomu przegl�darki ) bo  ca�o�� logowania jest w javiescript (
ajax ) .


logi

OnBeforeNavigate2
Url=http://nowe.yamo.pl/
PostDataonDowloadComplete
Cookies=__utma‚732809.531009810.1302092788.1302095687.1302096492.4;
__utmb‚732809.1.10.1302096492;
__utmz‚732809.1302092788.1.1.utmcsr=google|utmccn=(organic)
|utmcmd=organic|utmctr=http%3A%2F%2Fnowe.yamo.pl%2F; mgz=M1; yamo-
frontöb296da4f3b9f18d70a38cae1a1b7d6
onDowloadComplete
Cookies=__utma‚732809.531009810.1302092788.1302096492.1302096774.5;
__utmb‚732809.1.10.1302096774;
__utmz‚732809.1302092788.1.1.utmcsr=google|utmccn=(organic)
|utmcmd=organic|utmctr=http%3A%2F%2Fnowe.yamo.pl%2F; mgz=M1; yamo-
frontöb296da4f3b9f18d70a38cae1a1b7d6; __utmc‚732809

klik na zaoguj sie

onDowloadComplete
Cookies=__utma‚732809.531009810.1302092788.1302096492.1302096774.5;
__utmb‚732809.1.10.1302096774;
__utmz‚732809.1302092788.1.1.utmcsr=google|utmccn=(organic)
|utmcmd=organic|utmctr=http%3A%2F%2Fnowe.yamo.pl%2F; mgz=M1; yamo-
frontöb296da4f3b9f18d70a38cae1a1b7d6; __utmc‚732809
OnBeforeNavigate2
Url=http://nowe.yamo.pl/
PostData=l_login=kkkkkkkkkkkkkkkkkkkkkkkkkkkk&l_pass=kkkkkkkkkkkkkkkkkkkkkkkkkkk
k&sf=l_login&xb&y#
onDowloadComplete
Cookies=__utma‚732809.531009810.1302092788.1302096492.1302096774.5;
__utmb‚732809.2.10.1302096774;
__utmz‚732809.1302092788.1.1.utmcsr=google|utmccn=(organic)
|utmcmd=organic|utmctr=http%3A%2F%2Fnowe.yamo.pl%2F; mgz=M1; yamo-
frontöb296da4f3b9f18d70a38cae1a1b7d6; __utmc‚732809
onDowloadComplete
Cookies=__utma‚732809.531009810.1302092788.1302096492.1302096774.5;
__utmb‚732809.2.10.1302096774;
__utmz‚732809.1302092788.1.1.utmcsr=google|utmccn=(organic)
|utmcmd=organic|utmctr=http%3A%2F%2Fnowe.yamo.pl%2F; mgz=M1; yamo-
frontöb296da4f3b9f18d70a38cae1a1b7d6; __utmc‚732809
onDowloadComplete
Cookies=__utma‚732809.531009810.1302092788.1302096492.1302096774.5;
__utmb‚732809.2.10.1302096774;
__utmz‚732809.1302092788.1.1.utmcsr=google|utmccn=(organic)
|utmcmd=organic|utmctr=http%3A%2F%2Fnowe.yamo.pl%2F; mgz=M1; yamo-
frontöb296da4f3b9f18d70a38cae1a1b7d6; __utmc‚732809

-----------
w logach   przy logowaniu  wida� ze s� jeszcze dwa parametry x i y ( ws�lrzedne
gdzie klikn��e� na obrazku zaloguj si�  ) spr�buj je doda�  przy pr�bie
logowania .

--
Wys�ano z serwisu OnetNiusy: http://niusy.onet.pl

Re: Logowanie na stronie http, błąd 301
#89795
Author: =?utf-8?Q?Ł
Date: Wed, 06 Apr 2011 17:02
54 lines
1734 bytes
On Wed, 06 Apr 2011 01:28:04 +0200, Sławek wrote:

> Witam,
>
> Napisałem program, który loguje mi się na różne witryny,
> po czym automatycznie pobiera mi z tych witryn pliki cennika.
> Problem w tym, że na jedną z witryn nie mogę się zalogować.
> Program jest trochę rozbudowany, więc napiszę skrótowo
> czego użyłem:
>
>
> IdHTTP.CookieManager := IdCookie;
> // IdHTTP.IOHandler := IdSSL;
> IdHTTP.HandleRedirects := True;
> IdHTTP.AllowCookies := True;
> IdHTTP.ReadTimeout := 5000;
> IdHTTP.Request.UserAgent := 'Mozilla/5.0 (X11; U; Linux i686; pl-PL;
> rv:1.9.2.16) Gecko/20110322 Fedora/3.6.16-1.fc14 Firefox/3.6.16';
>
> //pobranie strony logowania
> adres := 'http://nowe.yamo.pl/'
> IdHTTP.Request.Host := adres;
> UstawCookies();
> strona := IdHTTP.Get(adres);
> OdbierzCookies();
>
>    frData := TIdMultiPartFormDataStream.Create;
>    try
>      frData.AddFormField('l_login', moj_login);
>      frData.AddFormField('l_pass', moje_haslo);
>      frData.AddFormField('sf', 'l_login');
>      UstawCookies();
>      strona := IdHTTP.Post(adres, frData); //WYSYŁANIE FORMULARZA
>      OdbierzCookies();
>    finally
>      FreeAndNil(frData);
>    end;

Zakładająć że w ukrytych fragmentach nie ma żadnych robaczków,
to całość wygląda sprawnie.

1. Jaki jest Request.ContentType?
2. Debug log z Indy będzie wielce pomocny + porównanie z
   outputem Fiddler'a, jeżeli Kolega nie zna narzędzia,
   to radzę się zapoznać. Wklej Debug Log'a w miare
   możliwosći, zanonimizuj dane logowania.

P.S. Trudno sprawdzać takie coś bez danych logowania,
     a jestem leniwy na tyle, że się rejestrował nie będę ;-).

--
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.eu/

Re: Logowanie na stronie http, =?ISO-8859-2?Q?b³±d_301?
#89796
Author: =?ISO-8859-2?Q?S
Date: Thu, 07 Apr 2011 00:30
26 lines
1063 bytes
W dniu 06.04.2011 15:36, webmajsterek@poczta.onet.pl pisze:
> zbada�em strone  -- bez javyscript na 100 % nie ma szans zeby si� zalogowac (
> przynajmniej z poiomu przegl�darki ) bo  ca�o�� logowania jest w javiescript (
> ajax ) .
>
Bez javascript na 100% mo�na si� zalogowa�.
Wystarczy doinstalowa� sobie wtyczk� Firebug do Firefoxa
i zmieni� ni� styl display: none na display: block dla
<div  class="mask_diver" id="mask_window">
w�wczas ten div si� pojawi i mo�na si� zalogowa�.
Javascript zreszt� dok�adnie tylko to robi.

[ciach]
> -----------
> w logach   przy logowaniu  wida� ze s� jeszcze dwa parametry x i y ( ws�lrzedne
> gdzie klikn��e� na obrazku zaloguj si�  ) spr�buj je doda�  przy pr�bie
> logowania .
>
Dodawa�em x i y, ale nic to nie daje. Gdy si� wy��czy obrazki
w przegl�darce, to mo�na si� zalogowa�, a wtedy x i y nie s�
wysy�ane - sprawdzi�em.

Jutro do tego zn�w usi�d�, dzisiaj mia�em do�� ci�ki dzie�.

S�awek

Re: Logowanie na stronie http, błąd 301
#89797
Author: =?UTF-8?B?U8WCYX
Date: Thu, 07 Apr 2011 00:38
26 lines
900 bytes
W dniu 06.04.2011 17:02, Łukasz 'Maly' Ostrowski pisze:
>
> Zakładająć że w ukrytych fragmentach nie ma żadnych robaczków,
> to całość wygląda sprawnie.
Tak też mi się wydaje.

>
> 1. Jaki jest Request.ContentType?
> 2. Debug log z Indy będzie wielce pomocny + porównanie z
>     outputem Fiddler'a, jeżeli Kolega nie zna narzędzia,
>     to radzę się zapoznać. Wklej Debug Log'a w miare
>     możliwosći, zanonimizuj dane logowania.
Jutro postaram się dać na to odpowiedź, narzędzia faktycznie
nie znam, ale jak trzeba to się zapoznam.
Jak uzyskać debug loga z Indy też jeszcze nie wiem, dotąd
nie potrzebowałem.
Dzięki za wskazówki.
>
> P.S. Trudno sprawdzać takie coś bez danych logowania,
>       a jestem leniwy na tyle, że się rejestrował nie będę ;-).
>
Nie zarejestrują cię, chyba że masz firmę informatyczną
i podpiszesz z nimi umowę.

Sławek

Re: Logowanie na stronie http, błąd 301
#89798
Author: =?UTF-8?B?U8WCYX
Date: Fri, 08 Apr 2011 12:30
40 lines
1206 bytes
W dniu 06.04.2011 17:02, Łukasz 'Maly' Ostrowski pisze:

> 1. Jaki jest Request.ContentType?
Request.ContentType ustawiałem na:
'' (pusty)
'text/xml'
'text/html; charset=utf-8'
'application/x-www-form-urlencoded'
i za każdym razem efekt jest ten sam.

Jednak chyba nie w tym jest problem.
Użyłem Wiresharka i zauważyłem, że Indy przy

IdHTTP.HandleRedirects := true;

próbuje w kółko wysyłać na serwer dane logowania:
Robi POST, dostaje błąd 301, więc ponownie
robi POST na adres z Response.Location, znów
dostaje błąd 301 i tak w kółko.
Tymczasem przeglądarka gdy po POST dostanie
błąd 301, to po prostu pobiera potem stronę
z Response.Location za pomocą GET.
Z tego wniosek, że muszę użyć

IdHTTP.HandleRedirects := false;

i sam obsłużyć sytuację po błędzie 301.

Wstępne próby dają już obiecujące rezultaty,
ale jest tam jeszcze jakiś haczyk, bo dostaję
po GET zakodowane dane i kolejny błąd.

Content-encoded entity body (gzip): 9243 bytes [Error: Decompression failed]

Co ciekawe po zalogowaniu Firefoksem jest ten sam błąd,
a mimo to Firefox coś tam jeszcze robi i wyświetla potem
stronę poprawnie. Muszę to dokładniej przeanalizować.

Sławek

Re: Logowanie na stronie http, błąd 301
#89799
Author: =?UTF-8?B?U8WCYX
Date: Fri, 08 Apr 2011 13:16
18 lines
441 bytes
W dniu 08.04.2011 12:30, Sławek pisze:
> Content-encoded entity body (gzip): 9243 bytes [Error: Decompression
> failed]
>
> Co ciekawe po zalogowaniu Firefoksem jest ten sam błąd,
> a mimo to Firefox coś tam jeszcze robi i wyświetla potem
> stronę poprawnie. Muszę to dokładniej przeanalizować.
>

Problem rozwiązany!

Wystarczyło podpiąć jeszcze TIdCompressorZLib
pod mój IdHTTP i ... śmiga!

Dzięki i pozdrawiam,

Sławek

Re: Logowanie na stronie http, błąd 301
#89800
Author: =?utf-8?Q?Ł
Date: Fri, 08 Apr 2011 13:18
30 lines
885 bytes
On Fri, 08 Apr 2011 12:30:22 +0200, Sławek wrote:
> Jednak chyba nie w tym jest problem.
> Użyłem Wiresharka i zauważyłem, że Indy przy

Fiddler wygodniejszy do debugowania ruchu http.

> <snip>
> Z tego wniosek, że muszę użyć
>
> IdHTTP.HandleRedirects := false;
>
> i sam obsłużyć sytuację po błędzie 301.

Nie powinno być konieczne, cookiesy autoryzacyjne
dostaniesz w tym samym response w którym dostajesz
301, na 99.9%, a później możesz już sobie z nimi
przenawigować do sekcji "zabezpieczonej".

> Wstępne próby dają już obiecujące rezultaty,
> ale jest tam jeszcze jakiś haczyk, bo dostaję
> po GET zakodowane dane i kolejny błąd.
>
> Content-encoded entity body (gzip): 9243 bytes [Error: Decompression failed]

Accept-Encoding plainowy może, jeżeli gzip jest problematyczny?

--
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.eu/

Re: Logowanie na stronie http, błąd 301
#89801
Author: =?UTF-8?B?U8WCYX
Date: Fri, 08 Apr 2011 15:06
41 lines
1330 bytes
W dniu 08.04.2011 13:18, Łukasz 'Maly' Ostrowski pisze:
> On Fri, 08 Apr 2011 12:30:22 +0200, Sławek wrote:
>> Jednak chyba nie w tym jest problem.
>> Użyłem Wiresharka i zauważyłem, że Indy przy
>
> Fiddler wygodniejszy do debugowania ruchu http.

Może, ale jeszcze go nie używałem.
A w ogóle to Fiddler jest pod Linuxa?
Jakoś nie widzę go w repozytorium Fedory.

>
>> <snip>
>> Z tego wniosek, że muszę użyć
>>
>> IdHTTP.HandleRedirects := false;
>>
>> i sam obsłużyć sytuację po błędzie 301.
>
> Nie powinno być konieczne, cookiesy autoryzacyjne
> dostaniesz w tym samym response w którym dostajesz
> 301, na 99.9%, a później możesz już sobie z nimi
> przenawigować do sekcji "zabezpieczonej".

No tak tylko, że jak dam true, to błąd 301
dostaję dopiero po 1,5 minucie od wywołania Post,
a w tym czasie Indy wysyła chyba kilkadziesiąt razy
Posta w kółko. Więc nie bardzo widzę jak to ominąć.

Przy HandleRedirects := false Post się nie zapętla.
Jakoś to "dziwnie" jest tu zrobione, bo nie bardzo
rozumiem, po co przekierowywać na ten sam adres,
czy serwer nie mógłby po prostu odesłać to co ma do
odesłania? No ale tak tu jest i już.

Wydaje mi się, że to może być błąd w samym indy.
Widać nikt tu nie pomyślał, że przekierować można na
ten sam adres.

Sławek

Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads