2010-07-24 7 views
1

J'utilise ce code:Comment utiliser les mêmes cookies dans plusieurs requêtes en python?

def req(url, postfields): 
    proxy_support = urllib2.ProxyHandler({"http" : "127.0.0.1:8118"}) 
    opener = urllib2.build_opener(proxy_support) 
    opener.addheaders = [('User-agent', 'Mozilla/5.0')] 
    return opener.open(url).read() 

Pour faire une simple demande HTTP get (en utilisant tor comme proxy).

Maintenant, je voudrais savoir comment faire plusieurs demandes en utilisant le même cookie.

Par exemple:

req('http://loginpage', 'postfields') 
source = req('http://pageforloggedinonly', 0) 
#do stuff with source 
req('http://anotherpageforloggedinonly', 'StuffFromSource') 

Je sais que mon req fonction ne prend pas en charge POST (encore), mais je l'ai envoyé postfields à l'aide httplib donc je suppose que je peux comprendre que par moi-même, mais je ne Je ne comprends pas comment utiliser les cookies, j'ai vu quelques exemples mais ils ne sont qu'une seule demande, je veux réutiliser le cookie de la première demande de connexion dans les requêtes suivantes, ou enregistrer/utiliser le cookie depuis un fichier (comme curl) , cela rendrait tout plus facile.

Le code que j'ai posté pour illustrer ce que j'essaie de réaliser, je pense que j'utiliserai httplib (2) pour l'application finale.

MISE À JOUR:

cookielib.LWPCOokieJar a bien fonctionné, voici un échantillon que je l'ai fait pour le test:

import urllib2, cookielib, os 

def request(url, postfields, cookie): 
    urlopen = urllib2.urlopen 
    cj = cookielib.LWPCookieJar() 
    Request = urllib2.Request 

    if os.path.isfile(cookie): 
     cj.load(cookie) 

    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
    urllib2.install_opener(opener) 
    txheaders = {'User-agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'} 

    req = Request(url, postfields, txheaders) 
    handle = urlopen(req) 
    cj.save(cookie) 
    return handle.read() 

print request('http://google.com', None, 'cookie.txt') 

Répondre

2

Le module cookielib est ce que vous devez faire. Il y a un joli tutorial avec quelques exemples de code.

+0

COokielib.LWPCookieJar a fait le travail, merci. – jahmax

Questions connexes