【Python接口自动化测试】(11)带安全认证的请求

带安全认证的请求

1、需要登录的请求(Cookie认证)

1.1 抓取cookies

1. 使用Chrome浏览器访问https://demo.fastadmin.net/admin.php/index/login,登录
2. 打开开发者工具刷新当前页面(https://demo.fastadmin.net/admin.php/dashboard?ref=addtabs
3. Network面包查看当前请求,将cookie后面的值复制出来,组装成字典格式

import requests

url = "https://demo.fastadmin.net/admin.php/dashboard?ref=addtabs"
cookies = {"PHPSESSID": "krdui80fa0tmjmg2199mosjh0j"}
res = requests.get(url=url, cookies=cookies)  # 携带cookies发送请求
print(res.text)
使用携带cookies方式:需要手动抓包,提取组装,cookies有一定有效期,过期之后要重新抓取和更换cookies

2、appid或token方式

  • appid: 系统为合法用户赋予的访问id,固定的字符串,一般经过加密以确保HTTP传输中的安全
  • token: 即令牌,固定或需要动态申请(有一定有效期),一般由用户信息及申请时间计算加密而成,用于验证接口访问的权限

2.1 token与session的区别

  • session是存在服务器的,服务端通过验证客户端的请求所携带的session值在服务会话中是否存在,来验证用户是否合法
  • token: 是按一定算法加密计算出来的,服务端通过解密客户端所携带的token值来验证用户是否合法 **示例: **
  • 访问百度AI开发者平台:http://ai.baidu.com/,注册并登录,成为开发者,选择文字识别
  • 文字识别开发者文档:http://ai.baidu.com/docs#/OCR-API/top
  • 根据文档新建应用,查看自己的App Key和Secret Key

 

具体接口文档请参考如下位置,或http://ai.baidu.com/docs#/Auth/top

参考通用文字接口文档: http://ai.baidu.com/docs#/OCR-API/top

使用App Key和Secret Key获取token :

3、开放协议授权 

reqeusts支持Basic Auth(基本授权)和Digist Auth(摘要授权)
import requests 
import json 
# 基本授权可以直接在请求方法中使用`auth = (user,password)` 
res = requests.get("https://api.github.com/user", auth=("hanzhichao", "hanzhichao123")) 
print(json.dumps(res.json(), indent=2, ensure_ascii=False)) # 格式化输出

4、数字签名

无论是cookie/session还是appid/token方式,只用来验证请求者身份而不验证参数,因此无法防止请求参数被抓包拦截后篡改(仍携带合法的cookie或token) 数字签名(sign或sig)是用来对原始参数整体进行加密后生成的一个字符串,请求时参数和签名一期发送,服务器收到请求后对参数再次计算签名核对和所携带的签名是否一致。 例如: 原始签名{}

posted on 2021-11-10 10:46  hello_殷  阅读(402)  评论(0)    收藏  举报

导航

作者:hello.殷
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。