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

    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的合并的更多相关文章

  1. JS 两个对象数组合并并去重

    JS两个对象数组合并并去重 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  2. python3两个字典的合并

    两个字典的合并其实很简单,直接用dict的update即可,代码如下: # /usr/bin/python3 # -*- encoding: utf-8 -*- ", "" ...

  3. 如何用MaskBlt实现两个位图的合并,从而实现背景透明

    我有两个位图,一个前景图,一个背景图(mask用途).请问如何用MaskBlt实现两个位图的合并,从而实现背景透明! 核心代码:dcImage.SetBkColor(crColour);dcMask. ...

  4. 两个有序数组合并成一个有序数组(要求时间复杂度为O(n))

    面试题: 怎样把两个有序数组合并成有序数组呢 逻辑步骤: 1.假设两个数组为A和B 2.A和B都是从小到大的顺序进行排列 ** 1.我们可以直接比较两个数组的首元素,哪个小就把这个小元素放入可变数组. ...

  5. JAVA将两个byte数组合并为一个

    /** * 将两个byte数组合并为一个 * @param data1 要合并的数组1 * @param data2 要合并的数组2 * @return 合并后的新数组 */ public stati ...

  6. 两个app 的合并

    我们需要把两个app 合并在一起,就是在原有项目基础上添加一个功能使用.如下有项目a和项目b: 一开始,我们把项目b独立成一个module,然后,作为一个库给项目a调用. 问题是,项目b 已有的app ...

  7. 两个有序list合并

    package 剑指office; import java.util.ArrayList; import java.util.List; public class ListMerge { /** * ...

  8. 图片合并成PDF,两个PDF的合并

    需求: 将多张手机照片合并成一个PDF,并于另一个成型PDF合并 过程: 使用全能扫描王处理一遍,拆剪掉多余部分,并提高亮度增加文字对比度 合并: 使用Faststone Capture合并图片即可. ...

  9. Java 将两个Map对象合并为一个Map对象

    实现方式是通过 putAll() 方法将多个 map 对象中的数据放到另外一个全新的 map 对象中,代码如下所示,展示了两个 map 对象的合并,如果是多个 map 合并也是用这种方式. publi ...

随机推荐

  1. 理解 php new static

    今天在看 Laravel 的容器(Container)实现时,发现了这么一段突然不能理解的代码: ** * Set the globally available instance of the con ...

  2. LaTeX:Question & Answer

    tikz 宏包中循环 foreach 的使用方法 矩阵环境输入 displaystyle 分式与垂直间距的设置 在 LaTeX 中使用 mathrsfs 宏包遇到 "rsfs7.tfm&qu ...

  3. jQuery 的attr()方法

    在JS中设置节点的属性与属性值用到setAttribute(),获得节点的属性与属性值用到getAttribute(),而在jquery中,用一个attr()就可以全部搞定了,赞一个先 ^^ jque ...

  4. Mysql数据库安装与配置

    先介绍下dql,dml,ddl,dcl: 安装: 加上这一行: 接下来把mysql设置成随系统自动启动: 开放3306端口(如果是阿里云服务器需要修改安全规则而不是如下): 或者 这里注意,有时候没有 ...

  5. 使用Ajax向服务器端发送请求

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  6. Sql Server查询同一ID 时间较大的一条数据

  7. R语言统计词频 画词云

    原始数据: 程序: #统计词频 library(wordcloud) # F:/master2017/ch4/weibo170.cut.txt text <- readLines("F ...

  8. Python3.x:定时获取页面数据存入数据库

    Python3.x:定时获取页面数据存入数据库 #间隔五分钟采集一次数据入库 import pymysql import urllib.request from bs4 import Beautifu ...

  9. vue.js指令v-model实现方法

    原文链接:http://www.jb51.net/article/99097.htm V-MODEL 是VUE 的一个指令,在input 控件上使用时,可以实现双向绑定. 通过看文档,发现他不过是一个 ...

  10. 20145106 《Java程序设计》第1周学习总结

    20145106 <Java程序设计>第1周学习总结 教材学习内容总结 因为我用的是Mac,所以教材内容暂时对我的编译java没有帮助.不过还好我也在同学和自己的帮助学习下初步学会了在Ma ...