🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#26263
Author: menth0l
Date: Mon, 22 Jun 2009 20:13
36 lines
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
#26265
Author: Marek Wywiał
Date: Mon, 22 Jun 2009 20:48
38 lines
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
#26264
Author: Radomir Dopieralski
Date: Tue, 23 Jun 2009 00:24
15 lines
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
#26273
Author: William Bonawentura
Date: Tue, 23 Jun 2009 05:39
12 lines
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
#26274
Author: Marek Wywiał
Date: Tue, 23 Jun 2009 06:44
19 lines
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
#26266
Author: menth0l
Date: Tue, 23 Jun 2009 09:40
27 lines
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
#26267
Author: Marek Wywiał
Date: Tue, 23 Jun 2009 09:51
31 lines
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
#26268
Author: menth0l
Date: Tue, 23 Jun 2009 09:59
17 lines
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
#26269
Author: Marek Wywiał
Date: Tue, 23 Jun 2009 10:22
19 lines
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
#26270
Author: William Bonawentura
Date: Tue, 23 Jun 2009 11:21
6 lines
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
#26271
Author: menth0l
Date: Tue, 23 Jun 2009 12:33
20 lines
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
#26272
Author: Marek Wywiał
Date: Tue, 23 Jun 2009 12:40
31 lines
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