Thread View: pl.comp.lang.python
12 messages
12 total messages
Started by menth0l
Mon, 22 Jun 2009 20:13
httplib2 i logowanie do forum phpbb
Author: menth0l
Date: Mon, 22 Jun 2009 20:13
Date: Mon, 22 Jun 2009 20:13
36 lines
2130 bytes
2130 bytes
Witam, Mam mały problem z biblioteką httplib2. Otóż piszę sobie program, który zalogowałby się do forum opartym na phpbb i coś tam sobie pobrał. Postąpiłem tak jak podają to różne tutoriale na sieci, tj: > http = httplib2.Http() > response, content = http.request(loginUrl, "POST", headers=headers, body=urllib.urlencode(body)) W zmiennych odpowiednio przekazuję: url strony logowania, standardowe nagłówki i dane logowania (user, hasło etc.). Do tego momentu wszystko jest ok: logowanie się udaje. Problem powstaje gdy chcę przejść do strony właściwego forum. Zgodnie z tym co czytałem powinienem skopiować sobie cookie ze zmiennej response do nagłówków dla nowego requesta z nowym urlem. > headers['COOKIE'] = response['set-cookie'] > response, content = http.request(forumUrl, "POST", headers=headers) W odpowiedzi dostaję jednak stronę...logowania. Przesłane cookie jest olewane (?). Coś podobnego z sukcesem napisałem używając basha i curla i tam problemów nie było (-c cookie / -b cookie). Myślałem, że może to problem złych nagłówków więc chciałem porównać wysyłane nagłówki przez httplib2 i curl ale o ile wiem jak podejrzeć wysyłane w pierwszym przypadku (debuglevel) to w drugim już nie bardzo. A może szukam nie w tym miejscu? Będę wdzięczny za jakieś wskazówki. -- Pozdrawiam, menth0l
Re: httplib2 i logowanie do forum phpbb
Author: Marek Wywiał
Date: Mon, 22 Jun 2009 20:48
Date: Mon, 22 Jun 2009 20:48
38 lines
2789 bytes
2789 bytes
On 22 Cze, 22:13, menth0l <ment...@cut.this.o2.pl> wrote: > Witam, > > Mam mały problem z biblioteką httplib2. Otóż piszę sobie program, który > zalogowałby się do forum opartym na phpbb i coś tam sobie pobrał. > > Postąpiłem tak jak podają to różne tutoriale na sieci, tj: > > > http = httplib2.Http() > > response, content = http.request(loginUrl, "POST", headers=headers, > > body=urllib.urlencode(body)) > > W zmiennych odpowiednio przekazuję: url strony logowania, standardowe > nagłówki i dane logowania (user, hasło etc.). Do tego momentu wszystko > jest ok: logowanie się udaje. > > Problem powstaje gdy chcę przejść do strony właściwego forum. Zgodnie z > tym co czytałem powinienem skopiować sobie cookie ze zmiennej response do > nagłówków dla nowego requesta z nowym urlem. > > > headers['COOKIE'] = response['set-cookie'] > > response, content = http.request(forumUrl, "POST", headers=headers) > > W odpowiedzi dostaję jednak stronę...logowania. Przesłane cookie jest > olewane (?). > > Coś podobnego z sukcesem napisałem używając basha i curla i tam problemów > nie było (-c cookie / -b cookie). Myślałem, że może to problem złych > nagłówków więc chciałem porównać wysyłane nagłówki przez httplib2 i curl > ale o ile wiem jak podejrzeć wysyłane w pierwszym przypadku (debuglevel) > to w drugim już nie bardzo. A może szukam nie w tym miejscu? > > Będę wdzięczny za jakieś wskazówki. sprawdź: * http://docs.python.org/library/cookielib.html * http://docs.python.org/library/cookie.html
Re: httplib2 i logowanie do forum phpbb
Author: Radomir Dopieralski
Date: Tue, 23 Jun 2009 00:24
Date: Tue, 23 Jun 2009 00:24
15 lines
1672 bytes
1672 bytes
At Mon, 22 Jun 2009 20:13:13 +0000 (UTC), menth0l wrote: > Coś podobnego z sukcesem napisałem używając basha i curla i tam problemów > nie było (-c cookie / -b cookie). Myślałem, że może to problem złych > nagłówków więc chciałem porównać wysyłane nagłówki przez httplib2 i curl > ale o ile wiem jak podejrzeć wysyłane w pierwszym przypadku (debuglevel) > to w drugim już nie bardzo. A może szukam nie w tym miejscu? nc -l localhost -p 8080 i laczysz sie na http://localhost:8080 -- Radomir Dopieralski, http://sheep.art.pl
Re: httplib2 i logowanie do forum phpbb
Author: William Bonawentura
Date: Tue, 23 Jun 2009 05:39
Date: Tue, 23 Jun 2009 05:39
12 lines
1294 bytes
1294 bytes
Użytkownik "menth0l" <menth0l@cut.this.o2.pl> napisał w wiadomości news:h1ookp$2uca$1@news.mm.pl... > >> headers['COOKIE'] = response['set-cookie'] >> response, content = http.request(forumUrl, "POST", headers=headers) > > W odpowiedzi dostaję jednak stronę...logowania. Przesłane cookie jest > olewane (?). > IMHO te nagłówki nie powinny byc wprost identyczne.
Re: httplib2 i logowanie do forum phpbb
Author: Marek Wywiał
Date: Tue, 23 Jun 2009 06:44
Date: Tue, 23 Jun 2009 06:44
19 lines
1892 bytes
1892 bytes
On 23 Cze, 07:39, "William Bonawentura" <n...@ipartners.pl> wrote: > Użytkownik "menth0l" <ment...@cut.this.o2.pl> napisał w wiadomościnews:h1ookp$2uca$1@news.mm.pl... > > > > >> headers['COOKIE'] = response['set-cookie'] > >> response, content = http.request(forumUrl, "POST", headers=headers) > > > W odpowiedzi dostaję jednak stronę...logowania. Przesłane cookie jest > > olewane (?). krótki przykład działający z pythonem 2.6 (2.5 pewnie tez choć nie sprawdzałem, nie jestem pewien co do 2.4): * http://wklej.to/C72s złożone na przykładzie: * http://www.voidspace.org.uk/python/articles/cookielib.shtml przykład loguje do strony 'goldenline.pl', jeżeli masz konto oczywiście (zmień dane w 'data').
Re: httplib2 i logowanie do forum phpbb
Author: menth0l
Date: Tue, 23 Jun 2009 09:40
Date: Tue, 23 Jun 2009 09:40
27 lines
2227 bytes
2227 bytes
Dziękuję za wszystkie podpowiedzi. Poradziłem sobie trochę w
łopatologiczny sposób (tj. beż użycia openerów i urllib2) i chciałbym
się dowiedzieć dlaczego on działa ;)
Otóż przykładowe forum po zalogowaniu zwróciło mi cookie które
"rozpakowałem" za pomocą klasy BaseCookie:
> cookie = Cookie.BaseCookie()
> cookie.load(response['set-cookie'])
W wyniku tego dostałem trzy klucze: phpbb3_br63o_u, phpbb3_br63o_k,
phpbb3_br63o_sid. Zamiast:
> headers = {'COOKIE' : response['set-cookie']}
wystarczyło napisać:
> headers = {'COOKIE' : cookie['phpbb3_br63o_sid'].OutputString()}
Chodziło zatem tylko o tę część ciasteczka, która zawierała id sesji.
Teraz nasuwają mi się dwa pytania:
1) dlaczego silnik forum sam nie jest w stanie odczytać interesującej
go części ciasteczka, jeśli jest ono przesyłane w całości? A co za tym
idzie:
2) skąd przeglądarka wie jaka część ciasteczka powinna zostać wysłana?
Czy też może wysyła ona całe cookie lecz upakowane w innej strukturze?
--
Pozdrawiam,
menth0l
Re: httplib2 i logowanie do forum phpbb
Author: Marek Wywiał
Date: Tue, 23 Jun 2009 09:51
Date: Tue, 23 Jun 2009 09:51
31 lines
2755 bytes
2755 bytes
On 23 Cze, 11:40, menth0l <cemen...@gmail.com> wrote:
> Dziękuję za wszystkie podpowiedzi. Poradziłem sobie trochę w
> łopatologiczny sposób (tj. beż użycia openerów i urllib2) i chciałbym
> się dowiedzieć dlaczego on działa ;)
>
> Otóż przykładowe forum po zalogowaniu zwróciło mi cookie które
> "rozpakowałem" za pomocą klasy BaseCookie:
>
> > cookie = Cookie.BaseCookie()
> > cookie.load(response['set-cookie'])
>
> W wyniku tego dostałem trzy klucze: phpbb3_br63o_u, phpbb3_br63o_k,
> phpbb3_br63o_sid. Zamiast:> headers = {'COOKIE' : response['set-cookie']}
>
> wystarczyło napisać:
>
> > headers = {'COOKIE' : cookie['phpbb3_br63o_sid'].OutputString()}
>
> Chodziło zatem tylko o tę część ciasteczka, która zawierała id sesji.
> Teraz nasuwają mi się dwa pytania:
> 1) dlaczego silnik forum sam nie jest w stanie odczytać interesującej
> go części ciasteczka, jeśli jest ono przesyłane w całości? A co za tym
> idzie:
> 2) skąd przeglądarka wie jaka część ciasteczka powinna zostać wysłana?
> Czy też może wysyła ona całe cookie lecz upakowane w innej strukturze?
Wysyła całe, dla strony, która je ustawiła (to już nie temat python),
być może przesłałeś w niepoprawnej strukturze.
Zamiast się martwić o strukturę, użyj cookielib, jest proste i
wszyskie cookies będą lecieć
jak w normalnej przeglądarce, więc nie ma problemów z działaniem :)
Re: httplib2 i logowanie do forum phpbb
Author: menth0l
Date: Tue, 23 Jun 2009 09:59
Date: Tue, 23 Jun 2009 09:59
17 lines
2115 bytes
2115 bytes
On 23 Cze, 11:51, Marek Wywiał <onj...@gmail.com> wrote: > Wysyła całe, dla strony, która je ustawiła (to już nie temat python), > być może przesłałeś w niepoprawnej strukturze. > Zamiast się martwić o strukturę, użyj cookielib, jest proste i > wszyskie cookies będą lecieć > jak w normalnej przeglądarce, więc nie ma problemów z działaniem :) W tym momencie bardziej mnie interesują aspekty edukacyjne, po prostu lubię wiedzieć jak co działa i dlaczego ;) Po prostu zawziąłem się na to httplib2 bo na wszystkich przykładach w sieci piszą, że wystarczy przekopiować całe cookie do wysyłanego nagłówka. Być może od tego czasu zmienili coś w silniku phpBB... -- Pozdrawiam, menth0l
Re: httplib2 i logowanie do forum phpbb
Author: Marek Wywiał
Date: Tue, 23 Jun 2009 10:22
Date: Tue, 23 Jun 2009 10:22
19 lines
2332 bytes
2332 bytes
On 23 Cze, 11:59, menth0l <cemen...@gmail.com> wrote: > On 23 Cze, 11:51, Marek Wywiał <onj...@gmail.com> wrote: > > > Wysyła całe, dla strony, która je ustawiła (to już nie temat python), > > być może przesłałeś w niepoprawnej strukturze. > > Zamiast się martwić o strukturę, użyj cookielib, jest proste i > > wszyskie cookies będą lecieć > > jak w normalnej przeglądarce, więc nie ma problemów z działaniem :) > > W tym momencie bardziej mnie interesują aspekty edukacyjne, po prostu > lubię wiedzieć jak co działa i dlaczego ;) Po prostu zawziąłem się na > to httplib2 bo na wszystkich przykładach w sieci piszą, że wystarczy > przekopiować całe cookie do wysyłanego nagłówka. Być może od tego > czasu zmienili coś w silniku phpBB... silnik raczej nie ma nic do tego, przeglądarka i tak mu wyśle te o które poprosi, z tych, które zostały jej przesłane. Co do mechanizmu działania cookie to jest dokument: * http://www.ietf.org/rfc/rfc2109.txt
Re: httplib2 i logowanie do forum phpbb
Author: William Bonawentura
Date: Tue, 23 Jun 2009 11:21
Date: Tue, 23 Jun 2009 11:21
6 lines
1487 bytes
1487 bytes
> W tym momencie bardziej mnie interesują aspekty edukacyjne, po prostu > lubię wiedzieć jak co działa i dlaczego ;) Po prostu zawziąłem się na IMHO nagłowek Set-Cookie jest bogatszy, zawiera np. informację o tym kiedy cookie wygasa. Odsyłany przez klienta nagłowek Cookie zawiera wyłącznie zawartość ciasteczka.
Re: httplib2 i logowanie do forum phpbb
Author: menth0l
Date: Tue, 23 Jun 2009 12:33
Date: Tue, 23 Jun 2009 12:33
20 lines
2011 bytes
2011 bytes
On 23 Cze, 13:21, "William Bonawentura" <n...@ipartners.pl> wrote: > IMHO nagłowek Set-Cookie jest bogatszy, zawiera np. informację o tym kiedy > cookie wygasa. Odsyłany przez klienta nagłowek Cookie zawiera wyłącznie > zawartość ciasteczka. Chyba masz rację, przesłanie całej zawartości (bez kluczy): > bc = Cookie.BaseCookie() > bc.load(response['set-cookie']) > > for key in bc: > cookie += bc[key].OutputString() > > headers['COOKIE'] = cookie także daje dobry efekt. -- Pozdrawiam, menth0l
Re: httplib2 i logowanie do forum phpbb
Author: Marek Wywiał
Date: Tue, 23 Jun 2009 12:40
Date: Tue, 23 Jun 2009 12:40
31 lines
2456 bytes
2456 bytes
On 23 Cze, 14:33, menth0l <cemen...@gmail.com> wrote: > On 23 Cze, 13:21, "William Bonawentura" <n...@ipartners.pl> wrote: > > > IMHO nagłowek Set-Cookie jest bogatszy, zawiera np. informację o tym kiedy > > cookie wygasa. Odsyłany przez klienta nagłowek Cookie zawiera wyłącznie > > zawartość ciasteczka. > > Chyba masz rację, przesłanie całej zawartości (bez kluczy): > > > bc = Cookie.BaseCookie() > > bc.load(response['set-cookie']) > > > for key in bc: > > cookie += bc[key].OutputString() > > > headers['COOKIE'] = cookie > > także daje dobry efekt. > > -- > Pozdrawiam, > menth0l tak własnie jest: * Set-Cookie: nazwa=wartość; expires=DATA; path=ŚCIEŻKA; domain=DOMENA; secure * Cookie: nazwa_ciasteczka_1=wartosc_ciasteczka_1; nazwa_ciasteczka_2=wartosc_ciasteczka_2; ... jest to w RFC i w krótszej formie: * http://pl.wikipedia.org/wiki/Ciasteczko
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