Python requests change 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') 

Источник

How To Get / Set Http Headers, Cookies And Manage Sessions Use Python Requests Module

In the previous article How To Use Python Requests Module To Send Get Or Post Request Example, we have learned how to install and use the python requests module to send HTTP Get and Post request to a web server. It also tells you how to post form data or pass query string parameters use the python requests module. This article will tell you how to use the python requests module to manage HTTP headers, cookies, and sessions.

1. Get / Set HTTP Headers Use Python Requests Module.

1.1 Get Server Response HTTP Headers.

Python requests module’s headers property is used to get HTTP headers. The headers property is a dictionary-type object, you should provide the header name to get the header value.

>>> import requests >>> response = requests.get("http://www.dev2qa.com") >>> response.headers['content-type'] 'text/html; charset=UTF-8'

If you want to get all headers, just call response.headers , it will list out all HTTP response headers in a JSON format string.

1.2 Add Custom Headers To HTTP Request.

import requests # Create a python dictionary object to save custom http headers. custom_header = # Pass above custom_header dictionary object to requests module's get function's headers parameter. response = requests.get('https://www.dev2qa.com', headers=custom_header)

2. Get / Set Cookies Use Python Requests Module.

2.1 Python Get HTTP Cookies.

  1. Get all HTTP response cookies by invoke response.cookies property. This property is an instance of requests.cookies.RequestsCookieJar class.

>>> import requests >>> response = requests.get(‘http://www.dev2qa.com’) >>> response.cookies

>>> for cookie in response.cookies: . print('cookie domain = ' + cookie.domain) . print('cookie name = ' + cookie.name) . print('cookie value = ' + cookie.value) . print('*************************************') . cookie domain = .dev2qa.com cookie name = __cfduid cookie value = d8dccd301af7c19f3286442254fe10aa51560824472 ************************************* cookie domain = .dev2qa.com cookie name = active_template::80464 cookie value = pub_site.1560824472 ************************************* .
>>> for item in rsponse.cookies.items(): . print(item) . ('__cfduid', 'd0c1cc559af0893eb31cd23bb9bc22a261560866202') ('active_template::80464', 'pub_site.1560866203') ('ezCMPCCS', 'true') ('ezepvv', '92') ('ezoab_80464', 'mod31') ('ezoadgid_80464', '-1') ('ezopvc_80464', '1') ('ezoref_80464', '') ('ezovid_80464', '1774096901') ('ezovuuid_80464', '2d40f1eb-b006-4540-75cb-09a37a3b8387') ('ezovuuidtime_80464', '1560866206') ('lp_80464', 'https://www.dev2qa.com/?user_name=jerry&password=jerry') >>> for item in cookies.iterkeys(): . print(item) . __cfduid active_template::80464 ezCMPCCS ezepvv ezoab_80464 ezoadgid_80464 ezopvc_80464 ezoref_80464 ezovid_80464 ezovuuid_80464 ezovuuidtime_80464 lp_80464
# Get cookie value by provided cookie name. >>> response.cookies['ezCMPCCS'] 'true'
# Use get_dict function to get related domain's cookies. >>> response.cookies.get_dict('.dev2qa.com') 
>>> response.cookies.list_domains() ['.dev2qa.com']

2.2 Python Send HTTP Cookies To Web Server.

# Import python requests module. >>> import requests >>> # Set url value. >>> url = 'https://www.dev2qa.com' >>> # Create a dictionary object. >>> cookies = dict(name='jerry', password='888') >>> # Use python requests module to get related url and send cookies to it with cookies parameter. >>> response = requests.get(url, cookies=cookies)
>>> import requests >>> >>> url = 'https://www.dev2qa.com' >>> # Create a RequestsCookieJar object. >>> cookies_jar = requests.cookies.RequestsCookieJar() >>> # Add first cookie, the parameters are cookie_key, cookie_value, cookie_domain, cookie_path. >>> cookies_jar.set('name', 'jerry', domain='dev2qa.com', path='/cookies') Cookie(version=0, name='name', value='jerry', port=None, port_specified=False, domain='dev2qa.com', domain_specified=True, domain_initial_dot=False, path='/cookies', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest=, rfc2109=False) >>> # Add second cookie. >>> cookies_jar.set('password', 'jerry888', domain='dev2qa.com', path='/cookies') Cookie(version=0, name='password', value='jerry888', port=None, port_specified=False, domain='dev2qa.com', domain_specified=True, domain_initial_dot=False, path='/cookies', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest=, rfc2109=False) >>> # Get url with cookie parameter. >>> response = requests.get(url, cookies=cookies_jar)

3. Use Session In Python Requests Module.

Python requests module’s session() method will return a request.sessions.Session object, then all the later operations ( such as to browse a related URL page ) on this session object will use one same session.

>>> import requests >>> # Call requests module’s session() method to return a requests.sessions.Session object. >>> session = requests.session() >>> >>> print(session)

The returned request.sessions.Session objects provide a lot of attributes and methods for you to get related headers, cookie value in the same session. The session object also provides a get method to request a web page by URL. Below is an example of how to use the python requests module session object.

# Show all headers and cookies in this session. >>> session.headers >>> >>> session.cookies >>> # Use this session object to get a web page by url. >>> response = session.get('http://www.dev2qa.com') >>> # When above browse web page process complete, this session has cookies. >>> session.cookies >> >>> custom_header = # Get web page url and send custom headers. >>> >>> response = session.get('http://www.dev2qa.com', headers=custom_header)

The below link will show you python requests module session class source code, you can read it if you need it.

Источник

Читайте также:  New line python files
Оцените статью