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')