如何使用python从json对象中提取键名为Set-cookie的值?

时间: 2024-03-03 13:52:40 浏览: 20
可以使用Python中的json和requests库来实现。 假设json对象存储在变量response中,可以使用以下代码提取键名为Set-Cookie的值: ```python import json import requests response = requests.get(url) # 发送请求并获取响应 json_obj = json.loads(response.text) # 将响应转换为json对象 set_cookie_value = json_obj.get('headers', {}).get('Set-Cookie', '') # 获取Set-Cookie的值 ``` 其中,使用`json.loads`将响应转换为json对象,然后使用`get`方法获取键名为Set-Cookie的值。如果Set-Cookie不存在,则返回空字符串。
相关问题

请求 请求头 POST /api/sign Content-Type: application/json 消息体 为json格式 { "action" : "signin", "username" : "xxxx", "password" : "yyyy" } 响应 响应头 200 OK Content-Type: application/json Set-Cookie: sessionid=<sessionid数值> 消息体 如果校验通过,返回消息如下 { "ret": 0, "usertype":1, "userid":1, "realname":"白月黑羽", } ret 为 0 表示登录成功 usertype 是用户类型。 1:管理员,2000:学生,3000:老师 userid 是用户在系统中的id realname 是用户的姓名 登录成功后, 服务端在消息头Set-Cookie 中存入sessionid ,该用户的后续请求头Cookie中必须携带sessionid。 如果登录校验失败,返回失败的原因,示例如下 { "ret": 1, "msg": "用户名或者密码错误" } ret 不为 0 表示登录失败, msg字段描述登录失败的原因 根据登录接口写一个requests库的接口自动化脚本

好的,以下是一个使用 requests 库编写的自动化脚本: ```python import requests url = 'http://localhost:8000/api/sign' headers = { 'Content-Type': 'application/json' } data = { 'action': 'signin', 'username': 'xxxx', 'password': 'yyyy' } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: cookie = response.cookies.get('sessionid') if cookie: print('登录成功!') print('cookie:', cookie) result = response.json() print('ret:', result['ret']) print('usertype:', result['usertype']) print('userid:', result['userid']) print('realname:', result['realname']) else: print('登录失败!Cookie未获取到!') else: print('登录失败!状态码:', response.status_code) ``` 需要注意的是,由于请求头中需要携带 Cookie,因此在登录成功后,需要获取响应头中的 sessionid 值,并在后续的请求头中添加 Cookie。

from mitmproxy import http from mitmproxy.tools.main import mitmdump import temp import json class AddHeader: def __init__(self): self.num = 0 self.file = open("./request_headers.txt", "w") # 打开文件对象 def request(self, flow: http.HTTPFlow) -> None: with open('temp.json', 'r') as fff: config = json.load(fff) self.num += 1 # 保存请求头部内容和请求URL到文件 if f"{config['get_url']}" in flow.request.pretty_url: for name, value in flow.request.headers.items(): if f"{config['keyword']}" in name: self.file.write(f"{value}") self.file.flush() # 立即写入文件 # exit(0) def done(self): self.file.close() # 关闭文件对象 addons = [ AddHeader() ] if __name__ == "__main__": # print(config['get_url']) # print(config['keyword']) mitmdump(['-p', '8081', '-s', __file__]) 将写入request_headers.txt修改为写入到一个名为cookie.json的json文件中,把写入的值作为cookie.json中cookie的值,cookie.json如下: { "cookie": "" }

这段代码是使用 mitmproxy 中的 AddHeader 插件来获取 HTTP 请求的特定头部信息,并将其写入文件中。你的问题是将这个插件修改,不再将信息写入文件,而是将它们写入一个名为 cookie.json 的 JSON 文件中,并将其作为 cookie 的值。你需要将 AddHeader 插件修改为以下内容: ```python import json from mitmproxy import http class AddCookie: def __init__(self): with open('cookie.json', 'r+') as f: try: self.cookies = json.load(f) except json.JSONDecodeError: self.cookies = {} f.seek(0) f.write(json.dumps(self.cookies)) f.truncate() def request(self, flow: http.HTTPFlow): if 'cookie' in self.cookies: flow.request.headers['Cookie'] = self.cookies['cookie'] def response(self, flow: http.HTTPFlow): if 'set-cookie' in flow.response.headers: self.cookies['cookie'] = flow.response.headers['set-cookie'] with open('cookie.json', 'w') as f: json.dump(self.cookies, f) ``` 这个插件的作用是将请求中的 cookie 设置为 cookie.json 文件中的值,并将响应中的 set-cookie 头部中的 cookie 值更新为 cookie.json 文件中的值。请注意,这个插件需要在 mitmproxy 中以 AddCookie 插件名运行。你可以使用以下命令来运行它: ``` mitmdump -s your_script.py -s AddCookie ```

相关推荐

最新推荐

recommend-type

pre_o_1csdn63m9a1bs0e1rr51niuu33e.a

pre_o_1csdn63m9a1bs0e1rr51niuu33e.a
recommend-type

matlab建立计算力学课程的笔记和文件.zip

matlab建立计算力学课程的笔记和文件.zip
recommend-type

FT-Prog-v3.12.38.643-FTD USB 工作模式设定及eprom读写

FT_Prog_v3.12.38.643--FTD USB 工作模式设定及eprom读写
recommend-type

matlab基于RRT和人工势场法混合算法的路径规划.zip

matlab基于RRT和人工势场法混合算法的路径规划.zip
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

SPDK_NVMF_DISCOVERY_NQN是什么 有什么作用

SPDK_NVMF_DISCOVERY_NQN 是 SPDK (Storage Performance Development Kit) 中用于查询 NVMf (Non-Volatile Memory express over Fabrics) 存储设备名称的协议。NVMf 是一种基于网络的存储协议,可用于连接远程非易失性内存存储器。 SPDK_NVMF_DISCOVERY_NQN 的作用是让存储应用程序能够通过 SPDK 查询 NVMf 存储设备的名称,以便能够访问这些存储设备。通过查询 NVMf 存储设备名称,存储应用程序可以获取必要的信息,例如存储设备的IP地址、端口号、名称等,以便能
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依