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
Author: =?UTF-8?B?U8WCYX
Date: Wed, 06 Apr 2011 01:28
Date: Wed, 06 Apr 2011 01:28
55 lines
1794 bytes
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
Author: webmajsterek@poc
Date: Wed, 06 Apr 2011 12:38
Date: Wed, 06 Apr 2011 12:38
10 lines
256 bytes
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
Author: webmajsterek@poc
Date: Wed, 06 Apr 2011 15:36
Date: Wed, 06 Apr 2011 15:36
161 lines
4214 bytes
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=__utma732809.531009810.1302092788.1302095687.1302096492.4; __utmb732809.1.10.1302096492; __utmz732809.1302092788.1.1.utmcsr=google|utmccn=(organic) |utmcmd=organic|utmctr=http%3A%2F%2Fnowe.yamo.pl%2F; mgz=M1; yamo- frontöb296da4f3b9f18d70a38cae1a1b7d6 onDowloadComplete Cookies=__utma732809.531009810.1302092788.1302096492.1302096774.5; __utmb732809.1.10.1302096774; __utmz732809.1302092788.1.1.utmcsr=google|utmccn=(organic) |utmcmd=organic|utmctr=http%3A%2F%2Fnowe.yamo.pl%2F; mgz=M1; yamo- frontöb296da4f3b9f18d70a38cae1a1b7d6; __utmc732809 klik na zaoguj sie onDowloadComplete Cookies=__utma732809.531009810.1302092788.1302096492.1302096774.5; __utmb732809.1.10.1302096774; __utmz732809.1302092788.1.1.utmcsr=google|utmccn=(organic) |utmcmd=organic|utmctr=http%3A%2F%2Fnowe.yamo.pl%2F; mgz=M1; yamo- frontöb296da4f3b9f18d70a38cae1a1b7d6; __utmc732809 OnBeforeNavigate2 Url=http://nowe.yamo.pl/ PostData=l_login=kkkkkkkkkkkkkkkkkkkkkkkkkkkk&l_pass=kkkkkkkkkkkkkkkkkkkkkkkkkkk k&sf=l_login&xb&y# onDowloadComplete Cookies=__utma732809.531009810.1302092788.1302096492.1302096774.5; __utmb732809.2.10.1302096774; __utmz732809.1302092788.1.1.utmcsr=google|utmccn=(organic) |utmcmd=organic|utmctr=http%3A%2F%2Fnowe.yamo.pl%2F; mgz=M1; yamo- frontöb296da4f3b9f18d70a38cae1a1b7d6; __utmc732809 onDowloadComplete Cookies=__utma732809.531009810.1302092788.1302096492.1302096774.5; __utmb732809.2.10.1302096774; __utmz732809.1302092788.1.1.utmcsr=google|utmccn=(organic) |utmcmd=organic|utmctr=http%3A%2F%2Fnowe.yamo.pl%2F; mgz=M1; yamo- frontöb296da4f3b9f18d70a38cae1a1b7d6; __utmc732809 onDowloadComplete Cookies=__utma732809.531009810.1302092788.1302096492.1302096774.5; __utmb732809.2.10.1302096774; __utmz732809.1302092788.1.1.utmcsr=google|utmccn=(organic) |utmcmd=organic|utmctr=http%3A%2F%2Fnowe.yamo.pl%2F; mgz=M1; yamo- frontöb296da4f3b9f18d70a38cae1a1b7d6; __utmc732809 ----------- 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: =?utf-8?Q?Ł
Date: Wed, 06 Apr 2011 17:02
Date: Wed, 06 Apr 2011 17:02
54 lines
1734 bytes
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?
Author: =?ISO-8859-2?Q?S
Date: Thu, 07 Apr 2011 00:30
Date: Thu, 07 Apr 2011 00:30
26 lines
1063 bytes
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
Author: =?UTF-8?B?U8WCYX
Date: Thu, 07 Apr 2011 00:38
Date: Thu, 07 Apr 2011 00:38
26 lines
900 bytes
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
Author: =?UTF-8?B?U8WCYX
Date: Fri, 08 Apr 2011 12:30
Date: Fri, 08 Apr 2011 12:30
40 lines
1206 bytes
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
Author: =?UTF-8?B?U8WCYX
Date: Fri, 08 Apr 2011 13:16
Date: Fri, 08 Apr 2011 13:16
18 lines
441 bytes
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
Author: =?utf-8?Q?Ł
Date: Fri, 08 Apr 2011 13:18
Date: Fri, 08 Apr 2011 13:18
30 lines
885 bytes
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
Author: =?UTF-8?B?U8WCYX
Date: Fri, 08 Apr 2011 15:06
Date: Fri, 08 Apr 2011 15:06
41 lines
1330 bytes
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