Python, urllib2 e cookies

por Walter Cruz on 14/12/2006
in Python, Google, Linguagens

Essa semana precisei fazer reconhecer os cookies recebidos de um servidor, usando python.

Para conexões http no python, uso a urllib2. Após algumas pesquisas, encontrei o módulo necessário: é o cookielib. Segue um código que faz um acesso em google.com e traz os cookies, comentado.


#-*- encoding: iso8859-1 -*-
import urllib2
#biblioteca para requisições http
import cookielib
#biblioteca para tratar de cookies

cj = cookielib.CookieJar()
#Uma nova instância de um CookieJar. É onde guardaremos os cookis

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
#O método build_opener facilita algumas coisas. Estamos instalando um handler - um manipulador de cookies, o nosso cj.
urllib2.install_opener(opener)
#Podemos usar diversos openers. Com o install_opener, colocamos o nosso opener como o default

theurl = 'http://google.com'
txdata = None
txheaders =  {'User-agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
#Vamos brincar de ser o IE 5.5

try:
    req = urllib2.Request(theurl, txdata, txheaders)
    #criação da requisição
    handle = urllib2.urlopen(req)
    #A requisição própriamente dita
except IOError, e:
    print 'Falha em abrir a URL "%s".' % theurl
    if hasattr(e, 'code'):
        print 'Código do erro - %s.' % e.code
else:
    print 'Here are the headers of the page :'
    #os cabeçalhos da página
    print handle.info()

print 'Cookies recebidos:'
for index, cookie in enumerate(cj):
    print index, '  :  ', cookie  
 

Faça um teste eliminando o manipulador de cookies substituindo a linha


opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
 

por:


opener = urllib2.build_opener()
 

Você verá que mesmo o servidor enviando um cabeçalho Set-Cookie, não temos onde receber.

Endereço de trackback para este post

Trackback URL (clique direito e copie atalho/localização do link)

1 comentário


Notice: Undefined index: comment_secret in /home/walter/repositories/whissip-dev/blogs/inc/comments/model/_comment.class.php on line 161
  1. *****

    Olá, gostei bastante do seu post. Acabei de ler alguns howto sobre "fetching urls with python" e estava faltando a parte de manipulação de cookies.

    Valeu!

Share Your Thoughts


Seu endereço de e-mail não será revelado nesse site.

Sua URL será exibida.
PobreExcelente
(Quebras de linha se tornam <br />)
(Nome, e-mail & website)
(Permitir que usuários o contatem através de um formulário eletrônico (seu e-mail não será exibido.))
Subscribe to comments by email

You can just use your OpenID to provide your name, e-mail and url.