码迷,mamicode.com
首页 > 其他好文 > 详细

两个cookie的合并

时间:2019-02-18 19:20:07      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:测试的   获取   request   too   name   成功   ram   用法   商品   

这里为什么会想到这个问题呢?

    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的合并

标签:测试的   获取   request   too   name   成功   ram   用法   商品   

原文地址:https://www.cnblogs.com/nieliangcai/p/10397098.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!