Thread View: pl.comp.lang.pascal
10 messages
10 total messages
Started by Sławek
Tue, 05 Apr 2011 23:28
Logowanie na stronie http, błąd 301
Author: Sławek
Date: Tue, 05 Apr 2011 23:28
Date: Tue, 05 Apr 2011 23:28
54 lines
2735 bytes
2735 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
Author: webmajsterek
Date: Wed, 06 Apr 2011 10:38
Date: Wed, 06 Apr 2011 10:38
9 lines
1327 bytes
1327 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
Author: webmajsterek
Date: Wed, 06 Apr 2011 13:36
Date: Wed, 06 Apr 2011 13:36
160 lines
5261 bytes
5261 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/
PostData=
onDowloadComplete
Cookies=__utma=82732809.531009810.1302092788.1302095687.1302096492.4;
__utmb=82732809.1.10.1302096492;
__utmz=82732809.1302092788.1.1.utmcsr=google|utmccn=(organic)
|utmcmd=organic|utmctr=http%3A%2F%2Fnowe.yamo.pl%2F; mgz=M1; yamo-
front=f6b296da4f3b9f18d70a38cae1a1b7d6
onDowloadComplete
Cookies=__utma=82732809.531009810.1302092788.1302096492.1302096774.5;
__utmb=82732809.1.10.1302096774;
__utmz=82732809.1302092788.1.1.utmcsr=google|utmccn=(organic)
|utmcmd=organic|utmctr=http%3A%2F%2Fnowe.yamo.pl%2F; mgz=M1; yamo-
front=f6b296da4f3b9f18d70a38cae1a1b7d6; __utmc=82732809
klik na zaoguj sie
onDowloadComplete
Cookies=__utma=82732809.531009810.1302092788.1302096492.1302096774.5;
__utmb=82732809.1.10.1302096774;
__utmz=82732809.1302092788.1.1.utmcsr=google|utmccn=(organic)
|utmcmd=organic|utmctr=http%3A%2F%2Fnowe.yamo.pl%2F; mgz=M1; yamo-
front=f6b296da4f3b9f18d70a38cae1a1b7d6; __utmc=82732809
OnBeforeNavigate2
Url=http://nowe.yamo.pl/
PostData=l_login=kkkkkkkkkkkkkkkkkkkkkkkkkkkk&l_pass=kkkkkkkkkkkkkkkkkkkkkkkkkkk
k&sf=l_login&x=62&y=23
onDowloadComplete
Cookies=__utma=82732809.531009810.1302092788.1302096492.1302096774.5;
__utmb=82732809.2.10.1302096774;
__utmz=82732809.1302092788.1.1.utmcsr=google|utmccn=(organic)
|utmcmd=organic|utmctr=http%3A%2F%2Fnowe.yamo.pl%2F; mgz=M1; yamo-
front=f6b296da4f3b9f18d70a38cae1a1b7d6; __utmc=82732809
onDowloadComplete
Cookies=__utma=82732809.531009810.1302092788.1302096492.1302096774.5;
__utmb=82732809.2.10.1302096774;
__utmz=82732809.1302092788.1.1.utmcsr=google|utmccn=(organic)
|utmcmd=organic|utmctr=http%3A%2F%2Fnowe.yamo.pl%2F; mgz=M1; yamo-
front=f6b296da4f3b9f18d70a38cae1a1b7d6; __utmc=82732809
onDowloadComplete
Cookies=__utma=82732809.531009810.1302092788.1302096492.1302096774.5;
__utmb=82732809.2.10.1302096774;
__utmz=82732809.1302092788.1.1.utmcsr=google|utmccn=(organic)
|utmcmd=organic|utmctr=http%3A%2F%2Fnowe.yamo.pl%2F; mgz=M1; yamo-
front=f6b296da4f3b9f18d70a38cae1a1b7d6; __utmc=82732809
-----------
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
Author: Łukasz 'Maly' Ostrowski
Date: Wed, 06 Apr 2011 15:02
Date: Wed, 06 Apr 2011 15:02
53 lines
2596 bytes
2596 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, błąd 301
Author: Sławek
Date: Wed, 06 Apr 2011 22:30
Date: Wed, 06 Apr 2011 22:30
25 lines
2067 bytes
2067 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 onclick="masker_close()" 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
Author: Sławek
Date: Wed, 06 Apr 2011 22:38
Date: Wed, 06 Apr 2011 22:38
25 lines
1956 bytes
1956 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
Author: Sławek
Date: Fri, 08 Apr 2011 10:30
Date: Fri, 08 Apr 2011 10:30
39 lines
2234 bytes
2234 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
Author: Sławek
Date: Fri, 08 Apr 2011 11:16
Date: Fri, 08 Apr 2011 11:16
17 lines
1456 bytes
1456 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
Author: Łukasz 'Maly' Ostrowski
Date: Fri, 08 Apr 2011 11:18
Date: Fri, 08 Apr 2011 11:18
29 lines
1795 bytes
1795 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
Author: Sławek
Date: Fri, 08 Apr 2011 13:06
Date: Fri, 08 Apr 2011 13:06
40 lines
2460 bytes
2460 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