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 .