Python中用requests处理cookies的3种方法

在接口测试中,大多数项目的接口是需要登录后进行操作的,经常用到requests库进行模拟登录及登录后的操作,下面是我不断踩坑后总结出来的关于登录凭证cookies的3种操作方法。

一. 用 requests.utils.dict_from_cookiejar() 把返回的cookies转换成字典

  1. 处理cookies:

 1 import requests
 2
 3 def login():
 4     login_url = ‘http://www.xxx.com/login
 5     headers = {
 6         "Accept": "application/json, text/javascript, */*; q=0.01"
 7     }
 8     body = {
 9         "usercode": "[email protected]****.com",
10         "password": "123456"
11     }
12     try:
13         res = requests.post(url=login_url, headers=headers, data=body)
14         cookies = res.cookies
15
16         cookie = requests.utils.dict_from_cookiejar(cookies)
17
18         return cookie
19     except Exception as err:
20         print(‘获取cookie失败:\n{0}‘.format(err))

  2. 使用cookie:

1 import requests
2
3 def get_data():
4     cookie = login()
5     res = requests.get(url=get_data_url, cookies=cookie)
6     print(res.text)

二. 遍历cookies的键值,拼接成cookie格式

  1. 处理cookies:

 1 import requests
 2
 3 def login():
 4     login_url = ‘http://www.xxx.com/login
 5     headers = {
 6         "Accept": "application/json, text/javascript, */*; q=0.01"
 7     }
 8     body = {
 9         "usercode": "[email protected]****.com",
10         "password": "123456"
11     }
12     try:
13         res = requests.post(url=login_url, headers=headers, data=body)
14         cookies = res.cookies.items()
15
16         cookie = ‘‘
17         for name, value in cookies:
18             cookie += ‘{0}={1};‘.format(name, value)
19
20         return cookie
21     except Exception as err:
22         print(‘获取cookie失败:\n{0}‘.format(err))

  2. 使用cookie:

1 import requests
2
3 def get_data():
4     cookie = login()
5     headers = {
6         "cookie": cookie
7     }
8     res = requests.get(url=get_data_url, headers=headers)
9     print(res.text)

三. 直接拼接cookies,这种方法比较傻,前提是要知道cookies的键

  1. 处理cookies:

 1 import requests
 2
 3 def login():
 4     login_url = ‘http://www.xxx.com/login
 5     headers = {
 6         "Accept": "application/json, text/javascript, */*; q=0.01"
 7     }
 8     body = {
 9         "usercode": "[email protected]****.com",
10         "password": "123456"
11     }
12     try:
13         res = requests.post(url=login_url, headers=headers, data=body)
14         cookies = res.cookies
15
16         phpsessid = cookies[‘phpsessid‘]
17         env_orgcode = cookies[‘env_orgcode‘]
18         acw_tc = cookies[‘acw_tc‘]
19         aliyungf_tc = cookies[‘aliyungf_tc‘]
20         last_env = cookies[‘last_env‘]
21
22         cookie = ‘phpsessid={0};env_orgcode={1};acw_tc{2};aliyungf_tc={3};last_env={4}‘.format(
23             phpsessid, env_orgcode, acw_tc, aliyungf_tc, last_env
24         )
25
26         return cookie
27     except Exception as err:
28         print(‘获取cookie失败:\n{0}‘.format(err))

  2. 使用cookie:

1 import requests
2
3 def get_data():
4     cookie = login()
5     headers = {
6         "cookie": cookie
7     }
8     res = requests.get(url=get_data_url, headers=headers)
9     print(res.text)

原文地址:https://www.cnblogs.com/liuzhzhao/p/12114453.html

时间: 2024-10-12 08:42:14

Python中用requests处理cookies的3种方法的相关文章

Python中执行系统命令常见的几种方法--转载

Python中执行系统命令常见的几种方法 Python中执行系统命令常见的几种方法有: (1)os.system # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 # 如果再命令行下执行,结果直接打印出来 例如: >>> import os >>> os.system('ls') chk_err_log.py CmdTool.log  install_log.txt  install_zabbix.sh  manage_deploy.sh  MegaSA

Python中将一个对象倒序输出的3种方法

Python中将一个对象倒序输出的3种方法就用列表来举例说明吧: >>> lst = [1,2,3,4,5,6] #创建一个表 #方法1: >>> lst1 = [i for i in reversed(lst)] #reversed只适用于与序列(列表.元组.字符串) >>> lst1 [6, 5, 4, 3, 2, 1] #方法2: >>> lst2 = sorted(lst,reverse=True) #sorted+rever

让Python代码更快运行的 5 种方法

不论什么语言,我们都需要注意性能优化问题,提高执行效率.选择了脚本语言就要忍受其速度,这句话在某种程度上说明了Python作为脚本语言的不足之处,那就是执行效率和性能不够亮.尽管Python从未如C和Java一般快速,但是不少Python项目都处于开发语言领先位置. Python很简单易用,但大多数人使用Python都知道在处理密集型cpu工作时,它的数量级依然低于C.Java和JavaScript.但不少第三方不愿赘述Python的优点,而是决定自内而外提高其性能.如果你想让Python在同一

Python 中格式化字符串 % 和 format 两种方法之间的区别

Python2.6引入了 format 格式化字符串的方法,现在格式化字符串有两种方法,就是 % 和 format ,具体这两种方法有什么区别呢?请看以下解析. # 定义一个坐标值 c = (250, 250) # 使用%来格式化 s1 = "敌人坐标:%s" % c 上面的代码很明显会抛出一个如下的TypeError: TypeError: not all arguments converted during string formatting 像这类格式化的需求我们需要写成下面丑陋

Python中给List添加元素的4种方法

https://blog.csdn.net/hanshanyeyu/article/details/78839266 List 是 Python 中常用的数据类型,它一个有序集合,即其中的元素始终保持着初始时的定义的顺序(除非你对它们进行排序或其他修改操作). 在Python中,向List添加元素,方法有如下4种方法(append(),extend(),insert(), +加号) 1. append() 追加单个元素到List的尾部,只接受一个参数,参数可以是任何数据类型,被追加的元素在Lis

让你的Python代码更快运行的 5 种方法

https://cloud.tencent.com/developer/news/354761 不论什么语言,我们都需要注意性能优化问题,提高执行效率.选择了脚本语言就要忍受其速度,这句话在某种程度上说明了Python作为脚本语言的不足之 处,那就是执行效率和性能不够亮.尽管Python从未如C和Java一般快速,但是不少Python项目都处于开发语言领先位置. Python 很简单易用,但大多数人使用Python都知道在处理密集型cpu工作时,它的数量级依然低于C.Java和JavaScrip

python pandas 获取列数据的几种方法及书写形式比较

pandas获取列数据位常用功能,但在写法上还有些要注意的地方,在这里总结一下: ''' author: zilu.tang 2015-12-31 ''' import pandas as pd data1 = pd.DataFrame(...) #任意初始化一个列数为3的DataFrame data1.columns=['a', 'b', 'c'] 1. data1['b'] #这里取到第2列(即b列)的值 2. data1.b #效果同1,取第2列(即b列) #这里b为列名称,但必须是连续字

python 读取并显示图片的两种方法

在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片.本人偏爱 matpoltlib,因为它的语法更像 matlab. 一.matplotlib 1. 显示图片 import matplotlib.pyplot as plt # plt 用于显示图片 import matplotlib.image as mpimg # mpimg 用于读取图片 import numpy as np lena = mpimg.imread('lena.png')

Python Process创建进程的(2种方法)

Python 在 multiprocessing 模块下提供了 Process 来创建新进程.与 Thread 类似的是,使用 Process 创建新进程也有两种方式: 以指定函数作为 target,创建 Process 对象即可创建新进程. 继承 Process 类,并重写它的 run() 方法来创建进程类,程序创建 Process 子类的实例作为进程. Process 类也有如下类似的方法和属性: run():重写该方法可实现进程的执行体. start():该方法用于启动进程. join([