ejemplos python urllib2 cookielib

urllib2 python ejemplos



Python-urllib2 & cookielib (3)

Creo que es un problema con el servidor que está configurando una nueva cookie para cada solicitud.

Estoy intentando abrir el siguiente sitio web, recuperar la cookie inicial y usarla para la segunda URL abierta, PERO si ejecuta el siguiente código, genera 2 cookies diferentes. ¿Cómo uso la cookie inicial para la segunda url-open?

import cookielib, urllib2 cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) home = opener.open(''https://www.idcourts.us/repository/start.do'') print cj search = opener.open(''https://www.idcourts.us/repository/partySearch.do'') print cj

La salida muestra 2 cookies diferentes cada vez que puedes ver:

<cookielib.CookieJar[<Cookie JSESSIONID=0DEEE8331DE7D0DFDC22E860E065085F for www.idcourts.us/repository>]> <cookielib.CookieJar[<Cookie JSESSIONID=E01C2BE8323632A32DA467F8A9B22A51 for www.idcourts.us/repository>]>


Esto no es un problema con urllib. Ese sitio hace algunas cosas funky. Debe solicitar un par de hojas de estilo para validar su ID de sesión:

import cookielib, urllib2 cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) # default User-Agent (''Python-urllib/2.6'') will *not* work opener.addheaders = [ (''User-Agent'', ''Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11''), ] stylesheets = [ ''https://www.idcourts.us/repository/css/id_style.css'', ''https://www.idcourts.us/repository/css/id_print.css'', ] home = opener.open(''https://www.idcourts.us/repository/start.do'') print cj sessid = cj._cookies[''www.idcourts.us''][''/repository''][''JSESSIONID''].value # Note the += opener.addheaders += [ (''Referer'', ''https://www.idcourts.us/repository/start.do''), ] for st in stylesheets: # da trick opener.open(st+'';jsessionid=''+sessid) search = opener.open(''https://www.idcourts.us/repository/partySearch.do'') print cj # perhaps need to keep updating the referer...


No es una respuesta real (pero es demasiado larga para un comentario); Posiblemente sea útil para cualquier otra persona que intente responder esto.

A pesar de mis mejores intentos, no puedo resolver esto.

Buscando en Firebug, la cookie parece permanecer igual (funciona correctamente) para Firefox.

urllib2.HTTPSHandler(debuglevel=1) para depurar qué encabezados está enviando Python, y parece que vuelve a enviar la cookie.

También agregué todos los encabezados de solicitud de Firefox para ver si eso ayudaría (no fue así):

opener.addheaders = [ (''User-Agent'', ''Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13''), .. ]

Mi código de prueba:

import cookielib, urllib2 cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj), urllib2.HTTPSHandler(debuglevel=1)) opener.addheaders = [ (''User-Agent'', ''Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13''), (''Accept'', ''text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8''), (''Accept-Language'', ''en-gb,en;q=0.5''), (''Accept-Encoding'', ''gzip,deflate''), (''Accept-Charset'', ''ISO-8859-1,utf-8;q=0.7,*;q=0.7''), (''Keep-Alive'', ''115''), (''Connection'', ''keep-alive''), (''Cache-Control'', ''max-age=0''), (''Referer'', ''https://www.idcourts.us/repository/partySearch.do''), ] home = opener.open(''https://www.idcourts.us/repository/start.do'') print cj search = opener.open(''https://www.idcourts.us/repository/partySearch.do'') print cj

Siento que me falta algo obvio.