gpt4 book ai didi

python - 如何修改Requests中的cookies

转载 作者:太空狗 更新时间:2023-10-29 19:25:31 26 4
gpt4 key购买 nike

我在官方网站上找不到任何关于 cookie 修改的文档,即没有 requests.cookies.RequestsCookieJar 的 api 文档。

例如,

session = requests.Session()
a = session.head('http://www.google.co.uk')

session.cookies

<[Cookie(version=0, name='NID', value='67=CXdvwjj9sjd-13Y0VyRQyUs8PxXaxyMhiGrrozXP7RWSjf-5alV4D17ORcfnZNYLAmlHXSVlHuS5LcuE4-v6vnzRQS-Gt72hgbGye0apoBoW5KJeVXA2o2E0gE-8jIeY', port=None, port_specified=False, domain='.google.co.uk', domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=False, expires=1424443599, discard=False, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False), Cookie(version=0, name='PREF', value='ID=41c5d5cac7d22262:FF=0:TM=1408632399:LM=1408632399:S=wTfY_LkkZnSsBxoL', port=None, port_specified=False, domain='.google.co.uk', domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=False, expires=1471704399, discard=False, comment=None, comment_url=None, rest={}, rfc2109=False)]>

现在我想改变'NID'的值

如果我执行 session.cookies['NID'] = 'abc',它会以重复的键结束,如下所示:

<[Cookie(version=0, name='NID', value='abc', port=None, port_specified=False, domain='', domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False), Cookie(version=0, name='NID', value='67=CXdvwjj9sjd-13Y0VyRQyUs8PxXaxyMhiGrrozXP7RWSjf-5alV4D17ORcfnZNYLAmlHXSVlHuS5LcuE4-v6vnzRQS-Gt72hgbGye0apoBoW5KJeVXA2o2E0gE-8jIeY', port=None, port_specified=False, domain='.google.co.uk', domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=False, expires=1424443599, discard=False, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False), Cookie(version=0, name='PREF', value='ID=41c5d5cac7d22262:FF=0:TM=1408632399:LM=1408632399:S=wTfY_LkkZnSsBxoL', port=None, port_specified=False, domain='.google.co.uk', domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=False, expires=1471704399, discard=False, comment=None, comment_url=None, rest={}, rfc2109=False)]>

我目前的方法是先做 session.cookies['NID'] = None,这会删除键/值,然后 session.cookies['NID'] = ' abc' 这有时有效,但它完全忽略了 cookies 属性。

什么是正确的做法?

最佳答案

如您所见,您的 cookie 没有为其指定域,因此它实际上是另一个 cookie。

使用域和路径

    session.cookies.set('NID', 'abc', domain='.google.co.uk', path='/')

将设置新的 cookie 而不是以前定义的 cookie。

RequestCookieJarcookielib.CookieJar 的包装器,但是如果您想就地修改 cookie 属性(以便您引用实际的 cookielib.Cookie 对象)我发现没有比使用迭代器更好的方法了。

如果您查看 requests.cookies.RequestsCookieJar 的源代码,就会发现没有其他方法可以让您访问项目本身,而不是它们的 name/value 字段。

关于python - 如何修改Requests中的cookies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25429754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com