Python, urllib2 e cookies

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.

This entry was posted in Google, Linguagens, Python and tagged , , . Bookmark the permalink.

One Response to Python, urllib2 e cookies

  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!

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>