Python requests update cookies

Update Cookies in Session Using python-requests Module

This code worked for me. hope it can help to someone else.

I want to update session.cookies variable with received response values from post request. so, same request value can be used in another post/get request.

1) updated requests module to 1.0.3 version.

 session = requests.session() def set_SC(cookie_val): for k,v in cookie_dict.iteritems(): if not isinstance(v, str): cookie_dict[k] = str(v) requests.utils.add_dict_to_cookiejar(session.cookies, cookie_val) def get_SC(): return requests.utils.dict_from_cookiejar(session.cookies) In another function: setSC(response.content) 

Solution 2

requests can do that for you, provided you tell it all the requests you make are part of the same session :

>>> import requests >>> s = requests.session() >>> s.get('https://www.google.com') >>> s.cookies [Cookie(version=0, name='NID'. 

Subsequent requests made using s.get or s.post will re-use and update the cookies the server sent back to the client.

To add a Cookie on your own to a single request, you would simply add it via the cookies parameter.

>>> s.get('https://www.google.com', cookies = ) 

Unless the server sends back a new value for the provided cookie, the session will not retain the provided cookie.

Solution 3

In order to provide a cookie yourself to the requests module you can use the cookies parameter for a single request and give it a cookie jar or dict like object containing the cookie(s).

>>> import requests >>> requests.get('https://www.example.com', cookies ) 

But if you want to retain the provided cookie without having to set the cookies parameter everytime, you can use a reqests session which you can also pass to other funtions so they can use and update the same cookies:

>>> session = requests.session() >>> session.cookies.set('cookieKey', 'cookieName') # In order to avoid cookie collisions # and to only send cookies to the domain / path they belong to # you have to provide these detail via additional parameters >>> session.cookies.set('cookieKey', 'cookieName', path='/', domain='www.example.com') 

Источник

Я использую модуль python-запросов для обработки запроса и ответа oAuth. Я хочу, чтобы установить полученный access_token (содержание ответа в Словаре) в requests.session.cookies объекта. Как я могу обновить существующие файлы cookie сеанса с полученным ответом от сервера? [РЕДАКТИРОВАТЬ]

self.session = requests.session(auth=self.auth_params) resp = self.session.post(url, data=data, headers=self.headers) content = resp.content 
requests.utils.dict_from_cookiejar(self.session.cookies).update(content) 

Здесь requests.utils.dict_from_cookiejar(self.session.cookies) возвращает dict с одним сеансовым ключом. Теперь я хочу обновить полученный контент ответа в self.session.cookies .

3 ответа

Этот код работал для меня. надеюсь, что это может помочь кому-то другому. Я хочу обновить переменную session.cookies с полученными значениями ответа из почтового запроса. поэтому одно и то же значение запроса может использоваться в другом запросе post/get. здесь, что я сделал: 1) обновленный модуль запросов до версии 1.0.3. 2) создал 2 функции

 session = requests.session() def set_SC(cookie_val): for k,v in cookie_dict.iteritems(): if not isinstance(v, str): cookie_dict[k] = str(v) requests.utils.add_dict_to_cookiejar(session.cookies, cookie_val) def get_SC(): return requests.utils.dict_from_cookiejar(session.cookies) In another function: setSC(response.content) 

Это звучит как обходной путь, то есть, почему запрос не сохраняет куки-файлы после звонка? см. ietf.org/rfc/rfc2109.txt в разделе 5.1, пример. Я подниму это на запросы

Чтобы предоставить куки файл самому модулю запросов, вы можете использовать параметр cookie для одного запроса и предоставить ему кук файл cookie или файл типа dict, содержащий файлы cookie.

>>> import requests >>> requests.get('https://www.example.com', cookies ) 

Но если вы хотите сохранить предоставленный cookie без необходимости устанавливать параметр cookie каждый раз, вы можете использовать сессию reqests, которую вы также можете передать другим функциям, чтобы они могли использовать и обновлять одни и те же файлы cookie:

>>> session = requests.session() >>> session.cookies.set('cookieKey', 'cookieName') # In order to avoid cookie collisions # and to only send cookies to the domain / path they belong to # you have to provide these detail via additional parameters >>> session.cookies.set('cookieKey', 'cookieName', path='/', domain='www.example.com') 

requests могут сделать это для вас, если вы скажете, что все ваши requests являются частью одного и того же session :

>>> import requests >>> s = requests.session() >>> s.get('https://www.google.com') >>> s.cookies [Cookie(version=0, name='NID'. 

Последующие запросы, сделанные с использованием s.get или s.post будут повторно использовать и обновлять файлы cookie, отправленные сервером обратно клиенту.

Чтобы добавить Cookie самостоятельно к одному запросу, вы просто добавите его через параметр cookie.

>>> s.get('https://www.google.com', cookies = ) 

Если сервер не отправит обратно новое значение для предоставленного файла cookie, сеанс не сохранит предоставленный файл cookie.

Источник

Я использую модуль python-запросов для обработки запроса и ответа oAuth. Я хочу, чтобы установить полученный access_token (содержание ответа в Словаре) в requests.session.cookies объекта. Как я могу обновить существующие файлы cookie сеанса с полученным ответом от сервера? [РЕДАКТИРОВАТЬ]

self.session = requests.session(auth=self.auth_params) resp = self.session.post(url, data=data, headers=self.headers) content = resp.content 
requests.utils.dict_from_cookiejar(self.session.cookies).update(content) 

Здесь requests.utils.dict_from_cookiejar(self.session.cookies) возвращает dict с одним сеансовым ключом. Теперь я хочу обновить полученный контент ответа в self.session.cookies .

3 ответа

Этот код работал для меня. надеюсь, что это может помочь кому-то другому. Я хочу обновить переменную session.cookies с полученными значениями ответа из почтового запроса. поэтому одно и то же значение запроса может использоваться в другом запросе post/get. здесь, что я сделал: 1) обновленный модуль запросов до версии 1.0.3. 2) создал 2 функции

 session = requests.session() def set_SC(cookie_val): for k,v in cookie_dict.iteritems(): if not isinstance(v, str): cookie_dict[k] = str(v) requests.utils.add_dict_to_cookiejar(session.cookies, cookie_val) def get_SC(): return requests.utils.dict_from_cookiejar(session.cookies) In another function: setSC(response.content) 

Это звучит как обходной путь, то есть, почему запрос не сохраняет куки-файлы после звонка? см. ietf.org/rfc/rfc2109.txt в разделе 5.1, пример. Я подниму это на запросы

Чтобы предоставить куки файл самому модулю запросов, вы можете использовать параметр cookie для одного запроса и предоставить ему кук файл cookie или файл типа dict, содержащий файлы cookie.

>>> import requests >>> requests.get('https://www.example.com', cookies ) 

Но если вы хотите сохранить предоставленный cookie без необходимости устанавливать параметр cookie каждый раз, вы можете использовать сессию reqests, которую вы также можете передать другим функциям, чтобы они могли использовать и обновлять одни и те же файлы cookie:

>>> session = requests.session() >>> session.cookies.set('cookieKey', 'cookieName') # In order to avoid cookie collisions # and to only send cookies to the domain / path they belong to # you have to provide these detail via additional parameters >>> session.cookies.set('cookieKey', 'cookieName', path='/', domain='www.example.com') 

requests могут сделать это для вас, если вы скажете, что все ваши requests являются частью одного и того же session :

>>> import requests >>> s = requests.session() >>> s.get('https://www.google.com') >>> s.cookies [Cookie(version=0, name='NID'. 

Последующие запросы, сделанные с использованием s.get или s.post будут повторно использовать и обновлять файлы cookie, отправленные сервером обратно клиенту.

Чтобы добавить Cookie самостоятельно к одному запросу, вы просто добавите его через параметр cookie.

>>> s.get('https://www.google.com', cookies = ) 

Если сервер не отправит обратно новое значение для предоставленного файла cookie, сеанс не сохранит предоставленный файл cookie.

Источник

Читайте также:  Enable php curl windows
Оцените статью