zoukankan      html  css  js  c++  java
  • 两个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 Content-Disposition: form-data; name="txtUserName" 账号 ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="txtPassword" 密码 ------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":"恭喜您,订单已成功提交!"}

  • 相关阅读:
    PHP学习(6)——代码重用与函数编写的一些注意事项
    PHP学习(5)——字符串操作与POSIX正则
    PHP学习(4)——数组的使用
    Three.js基础探寻十——动画
    PHP学习(3)——数据的存储与检索
    Three.js基础探寻九——网格
    PHP学习(2)——操作符与迭代整理
    个人寒假作业项目《印象笔记》第一天
    《需求工程》阅读笔记2
    《需求工程》阅读笔记
  • 原文地址:https://www.cnblogs.com/nieliangcai/p/10397098.html
Copyright © 2011-2022 走看看