在会话更新饼干使用Python,请求模块(Update Cookies in Session Usi

2019-07-17 11:24发布

我使用python-请求模块来处理OAuth的请求和响应。 我想设置收到的access_token(响应内容字典 )在requests.session.cookies对象。

我怎样才能从服务器接收到的响应更新会话的现有饼干?

[编辑]

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)返回字典一个会话密钥。 现在,我要更新已接收响应内容self.session.cookies

Answer 1:

requests可以为你做的,只要你告诉它所有的requests你做是相同的部分session

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

后续请求使用由s.gets.post 将重新使用和更新的cookie发送回客户端服务器。


要对自己添加一个Cookie到一个请求 ,你只需通过饼干参数添加它。

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

除非服务器所提供的cookie发送回一个新值,该会议将不会保留提供的cookie。



Answer 2:

此代码为我工作。 希望它可以帮助别人。

我想更新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)


Answer 3:

为了提供自己一个cookie来请求模块可以使用的cookies参数对单个请求 ,并给它cookie罐或类似字典包含cookie(一个或多个)对象。

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

但是,如果你想保留所提供的饼干 ,而不必设置的Cookie参数每次,你可以使用一个会话reqests您还可以传递给其他funtions,使他们能够使用和更新同样的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')


文章来源: Update Cookies in Session Using python-requests Module