python cookies cookiejar cookielib

python - Obtener cookie de CookieJar por nombre



cookies cookielib (5)

Sé que puedo recorrer las cookies en un cookiejar, y esto me permitiría encontrar una cookie con un nombre en particular, pero ¿el objeto CookieJar tiene algún método al que pueda llamar para obtener una determinada cookie por nombre?

Simplemente me ahorra tener que escribir un método auxiliar que ya existe.


Mezclar CookieJar con el módulo Cookie

const { parse } = require("cookie"); // uri eg: http://localhost const cookies = parse( cookieJar.getCookieString(uri) ); const cookieValue = cookies["cookie-name"];

Si uri tiene el prefijo http:// no obtendrá una cookie del jar


Se trata de elementos internos no documentados, pero puede acceder a las cookies directamente de esta manera: cookiejar._cookies[domain][path][name]


También puede usar dict_from_cookiejar , que devuelve un diccionario clave / valor de un CookieJar. Algo como:

my_cookies = requests.utils.dict_from_cookiejar(s.cookies)

y luego acceder a su valor de cookie por clave.


cookielib.CookieJar?

puede convertir jar en una lista y procesarlo, por ejemplo, {i.name: i for i in list(j)}

y por cierto, j._cookies ya es un dict dict, aunque no está completamente indexado de forma trivial.

cookie jar file?

Pensé que esos eran archivos de texto plano ...


Sí, el método __iter__ pasará por cada cookie en CookieJar .

for cookie in cj: print cookie.name, cookie.value, cookie.domain #etc etc

Una cookie no es solo un par de nombre y valor. En su larga lista (17) de propiedades, hay un domain y una path . Un valor de dominio de .ibm.com sería aplicable al sitio web mail.ibm.com por ejemplo. Un valor de dominio de ibm.com y un valor de ruta de acceso de /abc no se aplicarían a la página web ibm.com/index.htm . Por lo tanto, proporcionar el nombre solo no es suficiente para encontrar el valor de una cookie aplicable en CookieJar .

Aunque el método __iter__ devolverá fácilmente una lista de objetos de cookie , ejemplo de list(cj) , la estructura interna de CookieJar no es una lista simple. Internos sobre la clase CookieJar está here .