接口的鉴权&响应数据解密
前言:
1、开放的接口为了避免被别人攻击,频繁刷接口,浪费服务器资源,这就涉及到签名(Signature)加密了
2、API 使用签名方法(Signature)对接口进行鉴权(Authentication)。每一次请求都需要在请求中包含签名信息, 以验证用户身份。
一、我们的接口请求:
1、登录的url + key(一段已知的字符串) + get请求带上固定参数(有一个变动的时间戳)拼接成新的请求链接
2、拼接之后的链接通过 hashlib.md5 加密
3、加密之后的数据就是鉴权ydtoken
5、再把这个ydtoken传到每个接口请求的参数里面去,请求才能成功
二、鉴权的代码操作
# -*- coding:utf-8 -*-
from common import commons
import readConfig as readConfig
import hashlib localReadConfig = readConfig.ReadConfig() class getAuthentication(object): def get_Url(self,xlse_name,name,row=0,col=1):
'''
从excel里面获取登录的url,账号和密码,然后 url+固定参数,拼接成新的请求链接URL
'''
api_v = localReadConfig.get_http('api')
local_xls = commons.get_xls(xlse_name,name)
url = local_xls[row][col]
par = self.add_par()
get_url = '/'+api_v+url + "?" + par
return get_url def add_par(self):
# 固定参数:时间戳+固定参数,拼接成 a=1&b+2&c=3 的模式
fixed_parameter= localReadConfig.get_parameters()
list_a=[]
for key in dict(fixed_parameter):
list_a.append( key+'='+fixed_parameter[key])
list_b = '&'.join(list_a)
return list_b def get_ydtoken(self,url):
# 拼接之后的链接URL + 固定字符串 就行md5 加密,生成鉴权数据
# print((md5str))
key = "固定字符串"
new_md5str = key + url
# print(new_md5str)
byte_md5str = bytes(new_md5str, encoding="utf8") #必须传byte
ydtoken =hashlib.md5(byte_md5str).hexdigest()
return ydtoken
运行后的结果:
三、fiddler抓看响应时间,是加密后的数据,需要使用base64解密
代码操作
def get(self):
try:
r = requests.get(self.url, headers=self.headers, params=self.params, timeout=float(timeout))
print(r.url)
result = decodeToBase64(r.content) #decodeToBase64封装了解密方法,每个公司都会做一些改动,就不贴出来了
response = json.loads(result)
# response.raise_for_status()
return response
except TimeoutError:
self.logger.error("Time out!")
return None
解码之后:
接口的鉴权&响应数据解密的更多相关文章
- Spring Security 接口认证鉴权入门实践指南
目录 前言 SpringBoot 示例 SpringBoot pom.xml SpringBoot application.yml SpringBoot IndexController SpringB ...
- YAPI接口自动鉴权功能部署详解
安装准备 以下操作,默认要求自己部署过yapi,最好是部署过yapi二次开发环境. 无论是选择在线安装或者是本地安装,都需要安装client工具. 1.yapi-cli:npm install yap ...
- 接口的鉴权cookie、session和token
1.HTTP是无状态协议 什么是无状态?就是说这一次的请求和上一次的请求是没有任何关系的,无法共享信息.好处就是速度快. 2.cookie.session的加入 HTTP请求是无状态的,所以解决共享信 ...
- 接口鉴权之sign签名校验与JWT验证
需求描述: 项目里的几个Webapi接口需要进行鉴权,同接口可被小程序或网页调用,小程序里没有用户登录的概念,网页里有用户登录的概念,对于调用方来源是小程序的情况下进行放权,其他情况下需要有身份验证. ...
- EasyNVR摄像机网页H5全平台无插件直播流媒体播放服务二次开发之接口鉴权示例讲解
背景需求 EasyNVR的使用者应该都清楚的了解到,EasyNVR一个强大的功能就是可以进行全平台的无插件直播.主要原因在于rtsp协议的视频流(默认是需要插件才可以播放的)经由EasyNVR处理可以 ...
- Onvif开发之客户端鉴权获取参数篇
前面一篇已经介绍了客户端如何发些设备,下面这篇简单介绍下在发现设备后,如何通过ONVIF协议来获取设备的相关参数 ONVIF中不管是客户端还是设备端,最先实现的接口都是关于能力的那个接口,在客户端实现 ...
- 【Spring Cloud & Alibaba 实战 | 总结篇】Spring Cloud Gateway + Spring Security OAuth2 + JWT 实现微服务统一认证授权和鉴权
一. 前言 hi,大家好~ 好久没更文了,期间主要致力于项目的功能升级和问题修复中,经过一年时间的打磨,[有来]终于迎来v2.0版本,相较于v1.x版本主要完善了OAuth2认证授权.鉴权的逻辑,结合 ...
- SpringCloud 2020.0.4 系列之 JWT用户鉴权
1. 概述 老话说的好:善待他人就是善待自己,虽然可能有所付出,但也能得到应有的收获. 言归正传,之前我们聊了 Gateway 组件,今天来聊一下如何使用 JWT 技术给用户授权,以及如果在 Gate ...
- 取消mod_sofia的呼叫鉴权
FreeSWITCH中默认的SIP呼叫是要鉴权的,流程如下. 终端 FreeSWITCH A -----Invite------> FS A <----Trying------ FS A ...
随机推荐
- How-to: Use HBase Bulk Loading, and Why
How-to: Use HBase Bulk Loading, and Why http://blog.cloudera.com/blog/2013/09/how-to-use-hbase-bulk- ...
- 『Github』简易使用指南
一.新建repository 新建项目从下图位置开始, 当我们完成了初始化后,找不到创建/上传文件的位置,只需如下操作, 然后, 即可,当然,按照下图提示进行命令行操作实际是一样的, 创建了READM ...
- HTML(form标签)、CSS选择器一
一.表单标签<form> 功能:表单用于向服务器传输数据,从而实现用户与Web服务器的交互. 表单能够包含input系列标签,比如文本字段.复选框.单选框.提交按钮等等. 表单还可以包含t ...
- 了解一下express中间件的意思以及next()
app.use()就是通常所说的使用中间件 一个请求发送到服务器后,它的生命周期是 先收到request(请求),然后服务端处理,处理完了以后发送response(响应)回去,而这个服务端处理的过程就 ...
- div成圆形分布
1. css3 ul{ width: 200px; height: 200px; background ...
- python中sorted和.sorted 、reversed和reverse的注意点
L=[1,2,3,4]l1=[123,123,23]if l1.sort() == L.reverse(): #这个判断式是恒等的,因为两个函数的返回值都是None(其实是无返回值) pri ...
- Zookeeper浏览器工具和Eclipse插件
公司很多产品会使用zookeeper,比如Meta消息中间件,在测试的过程中,我们经常需要查询zookeeper里面的信息来精确定位问题.目前项目中有开发团队自己写的浏览器node-zk-browse ...
- InnoDB存储引擎介绍-(3)InnoDB缓冲池配置详解
原文链接 http://www.ywnds.com/?p=9886 一.InnoDB缓冲池 InnoDB维护一个称为缓冲池的内存存储区域 ,用于缓存内存中的数据和索引.了解InnoDB缓冲池的工作原 ...
- Linux NTP服务配置 for Oracle RAC
安装Oracle 11g RAC时,我们需要配置ntp服务.在使用虚拟机的情况下对于时钟同步方式的配置有很多种方式,可以使用vmware自带的时钟同步功能,也可以直接将本地的一个节点用作时间服务器.本 ...
- ActiveMQ 集群和主从
举例说明:假设有 3 个 broker 节点,分别是61616,61618, 61620,其中 61616 和 61618 组成主.从节点,而 61616(或61618)和 61620 构成集群.61 ...