通过登录获取token实现接口自动化

登录接口有统一认证,访问该登录接口时会跳转到认证界面输入用户名密码

url = "https://auth.xxxxx.com/auth/realms/xxxoa-with-os/protocol/openid-connect/auth?response_type=code&client_id=tests&scope=openid&redirect_uri=https://xxxnew.xxxxx.net"
response = requests.get(url)
if response.status_code == 200:# 从接口的响应中获取重定向的登录接口urlnew_url = re.findall(r'action="(.*?)" method=', response.text)[0]

该接口返回内容如下

<div id="kc-form-wrapper" ><form id="kc-form-login" onsubmit="login.disabled = true; return true;" action="https://auth.xxxx.com/auth/realms/xxx-with-os/login-actions/authenticate?session_code=9k3MqNnprJeoM41ugw4B_JvuspNABjCQvzSK-0jXwvg&amp;execution=dfd7b3b2-6595-47d4-b96d-655ff493677e&amp;client_id=test&amp;tab_id=vxRO5NTwtLE" method="post"><div class="form-group"><label for="username" class="control-label">账号</label><input tabindex="1" id="username" placeholder="请输入域账号" class="form-control user-input" name="username" value=""  type="text" autofocus autocomplete="off" /></div><div class="form-group"><label for="password" class="control-label">密码</label><input tabindex="2" id="password" class="form-control user-input" placeholder="请输入登录密码" name="password" type="password" autocomplete="off" /></div><div class="form-group login-pf-settings"><div id="kc-form-options"></div><div class=""></div></div>

获取到的new_url如下:

https://auth.igwfmc.com/auth/realms/igwoa-with-os/login-actions/authenticate?session_code=ed1wdMv8YR_XHCRRIM3Ua8JNz-pDUAuz6-qIRWuFIfM&amp;execution=dfd7b3b2-6595-47d4-b96d-655ff493677e&amp;client_id=devops&amp;tab_id=jet144uKtaI

返回的url中存在 &amp; 是 HTML 中用于表示字符 & 的转义实体。在处理包含这种 HTML 实体的字符串时,要使用 Python 的 html 模块中的 unescape 函数将其转换回普通字符:

 new_url = html.unescape(re.findall(r'action="(.*?)" method=', response.text)[0])

对该接口进行请求,获取后续接口需要的内容

完整代码如下:

# -*- coding: utf-8 -*-
import json
import requests
import re
import html
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)def getkeyCloakToken():url = "https://auth.xxxx.com/auth/xxxoa-with-os/protocol/openid-connect/auth?response_type=code&client_id=devops&scope=openid&redirect_uri=https://aaaanew.xxxx.net/subSysList"response = requests.get(url)if response.status_code == 200:# 请求成功,打印响应内容new_url = re.findall(r'action="(.*?)" method=', response.text)[0]print("new_url:",new_url)new_url = html.unescape(re.findall(r'action="(.*?)" method=', response.text)[0])print("new_url:", new_url)AUTH_SESSION_ID = re.findall(r'AUTH_SESSION_ID=(.*?);', str(response.headers))[0]AUTH_SESSION_ID_LEGACY = re.findall(r'AUTH_SESSION_ID_LEGACY=(.*?);', str(response.headers))[0]KC_RESTART = re.findall(r'KC_RESTART=(.*?);', str(response.headers))[0]headers ={'Content-Type':'application/x-www-form-urlencoded','Cookie':'AUTH_SESSION_ID='+AUTH_SESSION_ID+'; AUTH_SESSION_ID_LEGACY='+AUTH_SESSION_ID_LEGACY+'; KC_RESTART='+KC_RESTART+'; Hm_lvt_ed25ac3c0e72b77fbab3c2b066a445e7=1715676484,1716192914; Hm_lpvt_ed25ac3c0e72b77fbab3c2b066a445e7=1716192915'}print(headers)data ={'username':'username','password':'password','credentialId':''}response = requests.post(new_url, headers=headers, data=data,verify=False)print(response.status_code,response.url)session_state = re.findall(r'session_state=(.*?)\&code', str(response.url))[0]code = re.findall(r'code=(.*?)$', str(response.url))[0]url_3='https://auth.xxxxx.com/auth/xxxoa-with-os/protocol/openid-connect/token'headers = {'Content-Type': 'application/x-www-form-urlencoded'}data = {'grant_type' : 'authorization_code','client_id' : 'tests' ,"code" :code,'redirect_uri': 'https://xxxxnew.xxxx.net/aaaa?session_state='+session_state,'code':code}response = requests.post(url_3,headers=headers, data=data).json()access_token = response['access_token']token_type =response['token_type']print(access_token)print(token_type)else:# 请求失败,打印错误信息print(f"Failed to retrieve data. Status code: {response.status_code}")getkeyCloakToken()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/26766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据平台之hadoop

Apache Hadoop是一个用于存储和处理大规模数据的开源框架。它由Apache软件基金会开发&#xff0c;主要用于处理大数据应用。Hadoop框架的核心组件包括HDFS&#xff08;Hadoop Distributed File System&#xff09;、MapReduce和YARN&#xff08;Yet Another Resource Negotiato…

Perl 语言入门学习

一、介绍 Perl 是一种高级的、动态的、解释型的通用编程语言&#xff0c;由Larry Wall于1987年开发。它是一种非常灵活和强大的语言&#xff0c;广泛用于文本处理、系统管理、网络编程、图形编程等领域。 Perl 语言的设计理念是“用一种简单的语法&#xff0c;去解决复杂的编…

动画的js动画于css3区别?

JavaScript动画与CSS3动画在实现和使用上有一些显著的区别&#xff1a; 实现方式: CSS3动画&#xff1a;通过在CSS样式表中使用keyframes规则定义动画序列&#xff0c;然后将这些动画应用到元素上。CSS3动画由浏览器引擎优化处理&#xff0c;因此通常性能较好。JavaScript动画…

C++共享指针shared_ptr的理解分享

share_ptr是线程安全的吗 回答&#xff1a; 如果多个线程同时拷贝同一个shared_ptr对象&#xff0c;不会有问题&#xff0c;因为shared_ptr的引用技术是线程安全的。如果多个线程同时修改同一个shared_ptr对象&#xff0c;不是线程安全的。如果多个线程同时读写shared_ptr指向…

LabVIEW水箱液位控制系统

介绍了如何使用LabVIEW软件和硬件工具开发水箱液位控制系统。系统集成了数据采集、实时控制和模拟仿真技术&#xff0c;展示了高精度和高可靠性的特点&#xff0c;适用于需要精细水位调节的工业应用。 项目背景 在制造和化工行业&#xff0c;液位控制是保证生产安全与效率的关…

Linux 系统中的 /etc/issue and /etc/issue.net 文件

Linux 系统中的 /etc/issue and /etc/issue.net 文件 1. /etc/issue and /etc/issue.net2. /etc/ssh/sshd_configReferences 1. /etc/issue and /etc/issue.net (base) yongqiangyongqiang:~$ cat /etc/issue Ubuntu 20.04.5 LTS \n \l(base) yongqiangyongqiang:~$ (base) yo…

【C++】开源项目收集

C 是一种强大的、静态类型的通用编程语言&#xff0c;它的开源生态系统非常丰富&#xff0c;拥有众多高质量的项目。以下是一些知名的C开源项目&#xff1a; Boost: 这是一个庞大的库集合&#xff0c;提供了大量的实用工具和组件&#xff0c;如文件系统、网络编程、智能指针等&…

FFmpeg开发笔记(三十七)分析SRS对HLS协议里TS包的插帧操作

《FFmpeg开发实战&#xff1a;从零基础到短视频上线》一书的“2.1.2 音视频文件的封装格式”介绍了视频流的PS格式和TS格式。由于TS包的长度固定&#xff0c;从TS流的任一片段开始都能独立解码&#xff0c;因此可以把TS当成音视频文件的封装格式。 鉴于TS包的独立解码特性&…

Linux DNS域名解析

DNS系统的作用及类型 整个 Internet 大家庭中连接了数以亿计的服务器、个人主机&#xff0c;其中大部分的网站、邮件等服务器都使用了域名形式的地址&#xff0c;如www.google.com、mail.163.com 等。很显然这种地址形式要比使用 64.233.189.147、202.108.33.74的IP地址形式更…

【教程】从0开始搭建大语言模型:构造GPT模型

从0开始搭建大语言模型&#xff1a;构造GPT模型 从0开始搭建大语言模型&#xff1a;构造GPT模型GPT模型Layer NormalizationGELU激活函数Feed Forward网络增强shortcut连接构造Transformer Block构造GPT模型使用GPT模型生成文本 从0开始搭建大语言模型&#xff1a;构造GPT模型 …

2024-2025最新软考系统架构设计师的复习资料教材,解决如何快速高效通过该考试,试题的重点和难点在哪里?案例分析题和论文题的要点和踩坑点分析

目录 引言考试概述 考试结构考试内容 复习策略 制定复习计划学习资源 知识点详解 系统架构基础设计原则与模式系统分析与设计软件开发过程项目管理系统集成性能与优化安全性设计新兴技术 试题解析 选择题案例分析题论文题 重点与难点分析模拟试题与答案参考资料总结 引言 系…

2024年护网行动全国各地面试题汇总(3)作者:————LJS

应急响应基本思路和流程 收集信息&#xff1a;收集客户信息和中毒主机信息&#xff0c;包括样本判断类型&#xff1a;判断是否是安全事件&#xff0c;何种安全事件&#xff0c;勒索、挖矿、断网、DoS 等等抑制范围&#xff1a;隔离使受害⾯不继续扩⼤深入分析&#xff1a;日志分…

QT基础-简介,安装(6.7.1编译)

目录 QT简介 一.QT编译 国内镜像网站 1. For windows a.下载:qt-everywhere-src-6.7.1.zip b.下载Cmake c.下载python d.查看readme.md e. x64 native Tools cd 到 源码目录 f.输入 g. 然后输入 ​编辑 h.最后输入 1.2. qt-creator 1.3. 配置编译 2. For Ubu…

驱动开发(三):驱动操作寄存器

驱动开发系列文章&#xff1a; 驱动开发&#xff08;一&#xff09;&#xff1a;驱动代码的基本框架 驱动开发&#xff08;二&#xff09;&#xff1a;创建字符设备驱动 驱动开发&#xff08;三&#xff09;&#xff1a;驱动操作寄存器 ←本文 目录 驱动是如何操作…

使用Python保护或加密Excel文件的7种方法

目录 安装Python Excel库 Python 使用文档打开密码保护 Excel 文件 Python 使用文档修改密码保护 Excel 文件 Python 将 Excel 文件标记为最终版本 Python 保护 Excel 工作表 Python 在保护 Excel 工作表的同时允许编辑某些单元格 Python 锁定 Excel 工作表中的特定单元…

怕怕怕怕怕怕怕怕怕怕

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

如何获知lib cell的用途

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 除了databook可以查询cell的用途外&#xff0c;还可以通过在pr工具中获取lib cell属性的方法知晓其用途。 ICC2: report_attribute -app -class lib_cell SDFFXXX 通过看is_…

网络安全等级保护基本要求解读- 安全计算环境-应用系统和数据安全

概述 越来越多的企业用户已将核心业务系统转移到网络上&#xff0c;Web浏览器成为业 务系统的窗口&#xff0c;应用系统面临更多的安全威胁&#xff1b;并且由于各种原因使得其 存在较多的安全漏洞。 在此背景下&#xff0c;如何保障企业的应用安全&#xff0c;尤其是Web应用…

RabbitMQ实践——在管理后台测试消息收发功能

在《RabbitMQ实践——在Ubuntu上安装并启用管理后台》中&#xff0c;我们搭建完RabbitMQ服务以及管理后台。本文我们将管理后台&#xff0c;进行一次简单的消息收发实验。 赋予admin账户权限 登录到管理后台&#xff0c;进入到用户admin的管理页面 点击“set permission”&a…

ListView的使用

&#x1f4d6;ListView的使用 ✅1. 创建ListView✅2. 创建适配器Adapter✅3. 开始渲染数据 主要3步骤&#xff1a; 创建ListView 创建适配器Adapter&#xff0c;和Adapter对应的视图 开始渲染数据 效果图&#xff1a; ✅1. 创建ListView 例如现有DemoActivity页面&#xf…