col*_*ang 11 python python-requests
我在官方网站上找不到关于cookie修改的任何文件,即没有api doc for requests.cookies.RequestsCookieJar.
例如,
session = requests.Session()
a = session.head('http://www.google.co.uk')
session.cookies
Run Code Online (Sandbox Code Playgroud)
<[曲奇(版本= 0,名称= 'NID',值= '67 = CXdvwjj9sjd-13Y0VyRQyUs8PxXaxyMhiGrrozXP7RWSjf-5alV4D17ORcfnZNYLAmlHXSVlHuS5LcuE4-v6vnzRQS-Gt72hgbGye0apoBoW5KJeVXA2o2E0gE-8jIeY '端口=无,port_specified =假,域='.使用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(版本= 0,名称='PREF',值='ID = 41c5d5cac7d22262:FF = 0:TM = 1408632399:LM = 1408632399:S = wTfY_LkkZnSsBxoL',port =无,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(版本= 0,名称='NID',值='abc',port =无,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(版本= 0,名称='NID',值= '67 = CXdvwjj9sjd-13Y0VyRQyUs8PxXaxyMhiGrrozXP7RWSjf-5alV4D17ORcfnZNYLAmlHXSVlHuS5LcuE4-v6vnzRQS-Gt72hgbGye0apoBoW5KJeVXA2o2E0gE-8jIeY '端口=无,port_specified =假,域='.google.co.uk",domain_specified =真,domain_initial_dot =真,路径= '/',path_specified = True,secure = False,expires = 1424443599,discard = False,comment = None,comment_url = None,rest = {'HttpOnly':None},rfc2109 = False),Cookie(版本= 0,名称='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,disc ard = False,comment = None,comment_url = None,rest = {},rfc2109 = False)]>
我当前的方法是首先执行session.cookies['NID'] = None,这将删除键/值,然后session.cookies['NID'] = 'abc'这有时会起作用,但它完全忽略了cookie属性.
这样做的正确方法是什么?
如您所见,您的cookie没有为其指定任何域,因此它实际上是另一个cookie。
使用域和路径
session.cookies.set('NID', 'abc', domain='.google.co.uk', path='/')
Run Code Online (Sandbox Code Playgroud)
将设置新的cookie,而不是先前定义的cookie。
RequestCookieJar是的包装cookielib.CookieJar,但是如果您想就地修改Cookie属性(以便您引用实际cookielib.Cookie对象),我发现没有比使用迭代器更好的方法了。
如果您查看的来源,requests.cookies.RequestsCookieJar则没有其他方法可以让您自己访问项目,而不访问其name/ value字段。
| 归档时间: |
|
| 查看次数: |
6712 次 |
| 最近记录: |