Estoy usando el módulo de solicitudes (versión 0.10.0 con Python 2.5). He descubierto cómo enviar datos a un formulario de inicio de sesión en un sitio web y recuperar la clave de sesión, pero no veo una forma obvia de usar esta clave de sesión en solicitudes posteriores. ¿Alguien puede completar la elipsis en el código a continuación o sugerir otro enfoque?
>>> import requests
>>> login_data = {'formPosted':'1', 'login_email':'[email protected]', 'password':'pw'}
>>> r = requests.post('https://localhost/login.py', login_data)
>>>
>>> r.text
u'You are being redirected <a href="profilePage?_ck=1349394964">here</a>'
>>> r.cookies
{'session_id_myapp': '127-0-0-1-825ff22a-6ed1-453b-aebc-5d3cf2987065'}
>>>
>>> r2 = requests.get('https://localhost/profile_data.json', ...)
python
python-requests
ChrisGuest
fuente
fuente
localhost
, podría haber problemas con el inicio de sesión y otras cookies devueltas por el servidor web, si contienen un valor de propiedad de dominio incorrecto. Paralocalhost
, el servidor web debe devolver cookies con la propiedad de dominio establecida enlocalhost.local
, de lo contrario, la cookie no se aplicará a la sesión. En ese caso, use en127.0.0.1
lugar delocalhost
las otras respuestas ayudan a comprender cómo mantener dicha sesión. Además, quiero proporcionar una clase que mantenga la sesión mantenida en diferentes ejecuciones de un script (con un archivo de caché). Esto significa que un "inicio de sesión" adecuado solo se realiza cuando es necesario (tiempo de espera o no existe sesión en la caché). También es compatible con la configuración del proxy en las siguientes llamadas a "obtener" o "publicar".
Está probado con Python3.
Úselo como base para su propio código. Los siguientes fragmentos se publican con GPL v3
Un fragmento de código para usar la clase anterior puede verse así:
fuente
requests
módulo. ¿Cómo lo implementaría como parte del módulo? o ¿cómo te refieres a @ user1602?Mira mi respuesta en esta pregunta similar:
python: urllib2 cómo enviar una cookie con una solicitud urlopen
EDITAR:
Veo que he recibido algunos votos negativos por mi respuesta, pero no hay comentarios explicativos. Supongo que es porque me refiero a las
urllib
bibliotecas en lugar derequests
. Hago eso porque el OP pide ayudarequests
o que alguien sugiera otro enfoque.fuente
requests
ofrece una solución simple y de alto nivel a un problema que de otro modo tomaría 3 bibliotecas para implementar.La documentación dice que
get
incluye uncookies
argumento opcional que le permite especificar las cookies para usar:de los documentos:
http://docs.python-requests.org/en/latest/user/quickstart/#cookies
fuente
Después de probar todas las respuestas anteriores, descubrí que el uso de "RequestsCookieJar" en lugar del CookieJar normal para solicitudes posteriores solucionó mi problema.
fuente
fragmento para recuperar datos json, protegido con contraseña
fuente
Guarde solo las cookies necesarias y reutilícelas.
fuente
Esto funcionará para usted en Python;
fuente