Captura y reutiliza las cookies con las solicitudes -- python campo con cookies campo con request campo con session-cookies campo con python-requests camp Relacionados El problema

Capture and Reuse Cookies with Requests


1
vote

problema

Español

He visto las publicaciones sobre cómo usar la biblioteca de solicitudes en Python para enviar una cookie, pero no ha podido encontrar nada para enviar múltiples. Estoy tratando de capturar todo el Solicitud de Solicitud y usarlo como las cookies para futuros puestos. Aquí está lo que estoy trabajando actualmente con:

  >>> import requests >>> s = requests.Session() >>> content = s.get('https://admin.url.com/login.html', verify=False) >>> print s.cookies <<class 'requests.cookies.RequestsCookieJar'>[<Cookie _hauavc_4699a329=b27e38d for .url.com/>, <Cookie ut=e for .url.com/>, <Cookie auth_token=5227121307 for admin.url.com/>, <Cookie cwd-extranet=1 for admin.url.com/>, <Cookie slan=en for admin.url.com/>]>   

Necesito pasar tanto a la cookie auth_token como a la cookie de _hauavc * en cualquier momento que utilice mi script más adelante. Lo he intentado:

  c = {'auth_token': '5227121307', '_hauavc_4699a329': 'b27e38d'}   

y enviando esto en el poste con la opción cookies=c2 . También he intentado ajustar:

  c = s.cookies   

y enviándolo de la misma manera. Ambos intentos no plantean excepciones, pero cuando voy a ejecutar el guión más tarde, no parece que reconozca las cookies. Actualmente tengo el proceso trabajando con Selenium, pero aún no ha podido conseguirlo con las solicitudes. Si ayuda, aquí están las cookies que capturé con selenio y use un bucle con las funciones import requests c = { '_hauavc_64331bfa': '61087df', 'auth_token': '1020504164', } s = requests.Session() content = s.get( 'https://admin.url.com/login.html', verify=False, cookies=c ) soup = Bs(content.text) session_id = soup.find('input', {'id': 'ses'}).get('value') payload = { 'loginname': username, 'password': password, 'ses': session_id, 'login': 'Login', 'lang': 'en' } content = s.post( 'https://admin.url.com/login.html', data=payload, verify=False, cookies=c ) 4 :

  c = [{u'domain': u'.url.com', u'name': u'_hauavc_64331bfa', u'value': u'61087df', u'expiry': 1424371385, u'path': u'/', u'secure': True}, {u'domain': u'admin.url.com', u'name': u'auth_token', u'value': u'1138335497', u'expiry': 1424371384, u'path': u'/', u'secure': False}]   

Editar: Incluido el código completo según lo solicitado:

  import requests c = {     '_hauavc_64331bfa': '61087df',     'auth_token': '1020504164', } s = requests.Session() content = s.get(     'https://admin.url.com/login.html',     verify=False,     cookies=c ) soup = Bs(content.text) session_id = soup.find('input', {'id': 'ses'}).get('value') payload = {     'loginname': username,     'password': password,     'ses': session_id,     'login': 'Login',     'lang': 'en' } content = s.post(     'https://admin.url.com/login.html',     data=payload,     verify=False,     cookies=c )   

Edit2: Y aquí está la historia de la consola de mí que intenta capturar y reutilizar las cookies:

  >>> import requests >>> s = requests.Session() >>> c = s.get('https://admin.url.com/login.html', verify=False) >>> soup = Bs(content.text) >>> session_id = soup.find('input', {'id': 'ses'}).get('value') >>> payload = { ...     'loginname': username, ...     'password': password, ...     'ses': session_id, ...     'login': 'Login', ...     'lang': 'en' ... } >>> content = s.post( ...     'https://admin.url.com/login.html', ...     data=payload, ...     verify=False ... ) >>> payload = {'phone_id': '2c7f576cde7d1c43234f867d679a961f'} >>> content = s.post('https://admin.url.com/new_location/verify.html?h_id=777143&ses=%s' % session_id, verify=False, data=payload)>>> payload = {'ask_pin': '674802'} >>> content = s.post('https://admin.url.com/new_location/confirm.html?h_id=777143&ses=%s' % session_id, verify=False, data=payload) >>> captured_cookies = s.cookies >>> s.close() >>> s = requests.Session() >>> content = s.get( ...     'https://admin.booking.com/hotel/hoteladmin/login.html',  ...     verify=False,  ...     cookies=captured_cookies ... ) >>> soup = Bs(content.text) >>> session_id = soup.find('input', {'id': 'ses'}).get('value') >>> payload = { ...     'loginname': username, ...     'password': password, ...     'ses': session_id, ...     'login': 'Login', ...     'lang': 'en' ... } >>> content = s.post( ...     'https://admin.url.com/login.html', ...     data=payload, ...     verify=False, ...     cookies=captured_cookies ... ) >>> print s.cookies <<class 'requests.cookies.RequestsCookieJar'>[]>   
Original en ingles

I've seen posts on how to use the Requests library in Python to send a cookie, but haven't been able to find anything on sending multiple. I'm trying to capture the entire RequestsCookieJar and use it as the cookies for future Posts. Here is what I'm currently working with:

>>> import requests >>> s = requests.Session() >>> content = s.get('https://admin.url.com/login.html', verify=False) >>> print s.cookies <<class 'requests.cookies.RequestsCookieJar'>[<Cookie _hauavc_4699a329=b27e38d for .url.com/>, <Cookie ut=e for .url.com/>, <Cookie auth_token=5227121307 for admin.url.com/>, <Cookie cwd-extranet=1 for admin.url.com/>, <Cookie slan=en for admin.url.com/>]> 

I need to pass both the auth_token cookie and _hauavc* cookie any time I use my script later on. I've tried:

c = {'auth_token': '5227121307', '_hauavc_4699a329': 'b27e38d'} 

and sending this in the post with the cookies=c option. I've also tried setting:

c = s.cookies 

and sending it the same way. Both tries do not raise any exceptions, but when I go to run the script later, it doesn't appear to acknowledge the cookies. I currently have the process working with Selenium, but have yet to be able to get it to with with Requests. If it helps, here are the cookies I captured with Selenium and use a loop with the driver.add_cookie() functions:

c = [{u'domain': u'.url.com', u'name': u'_hauavc_64331bfa', u'value': u'61087df', u'expiry': 1424371385, u'path': u'/', u'secure': True}, {u'domain': u'admin.url.com', u'name': u'auth_token', u'value': u'1138335497', u'expiry': 1424371384, u'path': u'/', u'secure': False}] 

EDIT: Including the full code as requested:

import requests c = {     '_hauavc_64331bfa': '61087df',     'auth_token': '1020504164', } s = requests.Session() content = s.get(     'https://admin.url.com/login.html',     verify=False,     cookies=c ) soup = Bs(content.text) session_id = soup.find('input', {'id': 'ses'}).get('value') payload = {     'loginname': username,     'password': password,     'ses': session_id,     'login': 'Login',     'lang': 'en' } content = s.post(     'https://admin.url.com/login.html',     data=payload,     verify=False,     cookies=c ) 

EDIT2: And here is the console history of me trying to capture and reuse the cookies:

>>> import requests >>> s = requests.Session() >>> c = s.get('https://admin.url.com/login.html', verify=False) >>> soup = Bs(content.text) >>> session_id = soup.find('input', {'id': 'ses'}).get('value') >>> payload = { ...     'loginname': username, ...     'password': password, ...     'ses': session_id, ...     'login': 'Login', ...     'lang': 'en' ... } >>> content = s.post( ...     'https://admin.url.com/login.html', ...     data=payload, ...     verify=False ... ) >>> payload = {'phone_id': '2c7f576cde7d1c43234f867d679a961f'} >>> content = s.post('https://admin.url.com/new_location/verify.html?h_id=777143&ses=%s' % session_id, verify=False, data=payload)>>> payload = {'ask_pin': '674802'} >>> content = s.post('https://admin.url.com/new_location/confirm.html?h_id=777143&ses=%s' % session_id, verify=False, data=payload) >>> captured_cookies = s.cookies >>> s.close() >>> s = requests.Session() >>> content = s.get( ...     'https://admin.booking.com/hotel/hoteladmin/login.html',  ...     verify=False,  ...     cookies=captured_cookies ... ) >>> soup = Bs(content.text) >>> session_id = soup.find('input', {'id': 'ses'}).get('value') >>> payload = { ...     'loginname': username, ...     'password': password, ...     'ses': session_id, ...     'login': 'Login', ...     'lang': 'en' ... } >>> content = s.post( ...     'https://admin.url.com/login.html', ...     data=payload, ...     verify=False, ...     cookies=captured_cookies ... ) >>> print s.cookies <<class 'requests.cookies.RequestsCookieJar'>[]> 
              
   
   

Lista de respuestas


Relacionados problema

1  Frasco de Python: envíe y reciba el archivo CSV  ( Python flask send and receive csv file ) 
He creado una API de matraz y actualmente se está ejecutando en la máquina local Desde una máquina, corrí al script de Python para publicar el archivo de text...

1  Ajax Solicitud de HTTP y carrito de compras Squarespace  ( Ajax http request and squarespace shopping cart ) 
Estoy trabajando en un sitio SquarSpace, que no permite ningún scripting de lado del servidor. Así que solo puedo usar JavaScript, pero necesito actualizar la...

-1  Analizando dinámicamente la Q como una entrada de usuario para buscar noticias en noticias API en Python  ( Dynamically parsing the q as an user input to search news in news api in python ) 
He escribido el código que busca una palabra clave en particular y da la noticia a través de la API de noticias, pero he codificado duro la Q (Palabras clave ...

143  ¿Cómo podría usar las solicitudes en Asyncio?  ( How could i use requests in asyncio ) 
Quiero hacer tareas de solicitud HTTP en paralelo en asyncio , pero encuentro que 9988777664 bloquearía el bucle de evento de asyncio . He encontrado aio...

1  Solicitud COOKIEJAR [] está vacío  ( Requestscookiejar is empty ) 
>>> import requests >>> r = requests.get('http://watchdisneychannel.go.com/live') >>> r.cookies <RequestsCookieJar[]> Mi pregunta es ¿Por qué las cookies...

6  Solicitudes de Python: ¿es posible recibir una respuesta parcial después de un post HTTP?  ( Python requests is it possible to receive a partial response after an http pos ) 
Estoy usando la Módulo de Solicitudes de Python a DataMine un sitio web . Como parte de la dataming, tengo que hacer un formulario de publicar un formulario...

2  Apagar el proxy en la biblioteca de solicitudes  ( Switch off proxy in requests library ) 
He estado usando la biblioteca !=-Operator14 en un código Python, y necesito ayuda para navegar por las aguas turbias de los servidores proxy corporativos. ...

0  Cómo enviar una mezcla de obtener y publicar en Python  ( How to send mix of get and post in python ) 
Estoy tratando de enviar una mezcla de obtener y publicar a una URL usando Módulo de Solicitudes. ¿Hay alguna manera de hacer esto? Lo que he probado es lo ...

1  No se puede iniciar sesión en un sitio usando las solicitudes  ( Cant log in to a site using requests ) 
Estoy tratando de iniciar sesión en este sitio usando el módulo de las solicitudes pero obtengo public class User { public int USERID {get; set;} ...

0  ¿Cómo bucle a través de registros para enviar una solicitud de poste única al servidor?  ( How to loop through records to send single post request to server ) 
Tengo una tabla SQL en la que estoy pasando para enviar una solicitud de publicación única a un servidor para cada registro. Todos los registros deben ser Jso...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos