Putting a `Cookie` in a `CookieJar` Putting a `Cookie` in a `CookieJar` python python

Putting a `Cookie` in a `CookieJar`


I'm confused by this question. The requests library will put the cookies in the jar for you.

import requestsimport cookielibURL = '...whatever...'jar = cookielib.CookieJar()r = requests.get(URL, cookies=jar)r = requests.get(URL, cookies=jar)

The first request to the URL will fill the jar. The second request will send the cookies back to the server. The same goes for the standard library's urllib module cookielib. (doc currently available for 2.x Version)


A requests Session will also receive and send cookies.

s = requests.Session()s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')r = s.get("http://httpbin.org/cookies")print(r.text)# '{"cookies": {"sessioncookie": "123456789"}}'

(Code above stolen from http://www.python-requests.org/en/latest/user/advanced/#session-objects)

If you want cookies to persist on disk between runs of your code, you can directly use a cookie jar and save/load them. More cumbersome, but still pretty easy:

import requestsimport cookielibcookie_file = '/tmp/cookies'cj = cookielib.LWPCookieJar(cookie_file)# Load existing cookies (file might not yet exist)try:    cj.load()except:    passs = requests.Session()s.cookies = cjs.get('http://httpbin.org/cookies/set/sessioncookie/123456789')r = s.get("http://httpbin.org/cookies")# Save cookies to disk, even session cookiescj.save(ignore_discard=True)

Then look in the file:

$ cat /tmp/cookies #LWP-Cookies-2.0Set-Cookie3: sessioncookie=123456789; path="/"; domain="httpbin.org"; path_spec; discard; version=0


I think many of these answers are missing the point. Sometimes that other library isn't using requests under the hood. Or doesn't expose the cookiejar it's using. Sometimes all we have is the cookie string. In my case I'm trying to borrow the auth cookie from pyVmomi.

import requestsimport http.cookiesraw_cookie_line = 'foo="a secret value"; Path=/; HttpOnly; Secure; 'simple_cookie = http.cookies.SimpleCookie(raw_cookie_line)cookie_jar = requests.cookies.RequestsCookieJar()cookie_jar.update(simple_cookie)

Which gives us the following cookie_jar:

In [5]: cookie_jarOut[5]: <RequestsCookieJar[Cookie(version=0, name='foo', value='a secret value', port=None, port_specified=False, domain='', domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=True, expires=None, discard=False, comment='', comment_url=False, rest={'HttpOnly': True}, rfc2109=False)]>

Which we can use as normal:

requests.get(..., cookies=cookie_jar)