两个cookie的合并
Posted 小心走火
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个cookie的合并相关的知识,希望对你有一定的参考价值。
这里为什么会想到这个问题呢?
1.我们在对一个商品下订单之前需要2个步骤,1---登录,2---加入购物车
2.那么我们到底是用哪一个cookie呢?实际测试的时候,
a.发现只用了登录cookie,提示没有找到商品
b.只用了加入购物车的cookie,提示没有登录(登录超时或其他)
所以这就需要加入2个cookie了。怎么才能同时加2个cookie,这里就考虑到了cookie的合并
我们以动物园为例:
url = ‘https://www.shwzoo.com/tools/submit_ajax.ashx‘
登录参数: params = {"action":"user_login"}
加入购物车参数:params_buy = {"action":"cart_goods_buy"}
下订单参数:params_order = {"action":"order_save"}
默认headers:headers = { ‘content-type‘: "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" }
登录需要data:payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"txtUserName\"\r\n\r\n账号\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"txtPassword\"\r\n\r\n密码\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
首先我们获取登录cookies:
#登录 res = requests.post(url,headers=accept,data=payload,params=params) cookies = dict(res.cookies) #登录cookies
然后我们获取加入购物车cookies:
#加入购物车 res_buy = requests.post(url=url,params=params_buy,data=data_buy,cookies=cookies) cookies_buy = dict(res_buy.cookies) #购买cookies
合并cookie:
cookies_all = dict(cookies,**cookies_buy) #下订单时,需要所有的cookie,不然你怎么知道有没有登录,有没有加入购物车 #这里发现cookie的用法和dict很类似所有用了这种办法
然后我们下订单就可以成功了:
#下订单 res_order = requests.post(url=url,params=params_order,data=data_order,cookies=cookies_all) print(res_order.text)
返回res.text: {"status":1, "url":"/payment.aspx?order_no=B19021818004848578304", "msg":"恭喜您,订单已成功提交!"}
以上是关于两个cookie的合并的主要内容,如果未能解决你的问题,请参考以下文章