md5 加密

登录接口的数据中,密码需要进行md5 加密。
md5 加密: 将明文加密为 密文,登录的时候使用密文进行登录。


前提条件
使用 账号已经注册
用户名:13388899999
密码:123456


登录接口
请求方式:Post
请求路径:http://49.233.108.117:28019/api/v1/user/login
请求参数:

  1. {
  2. "loginName": "手机号",
  3. "passwordMd5": "密码进行md5加密"
  4. }

python 加密md5

md5 可以在线进行加密: https://md5.hwcha.com/
Python参考官网:
https://docs.python.org/zh-cn/3/library/hashlib.html

  1. import hashlib
  2. # 使用 hashlib 的md5 方法进行加密
  3. # '123456'.encode() 将字符串进行编码
  4. a = hashlib.md5('123456'.encode())
  5. # 打印密文
  6. print(a.hexdigest()) # e10adc3949ba59abbe56e057f20f883e

登录接口

根据文档,编写代码

  1. import hashlib
  2. import requests
  3. # 对密码进行md5 加密
  4. passwd = hashlib.md5('123456'.encode()).hexdigest()
  5. url = "http://49.233.108.117:28019/api/v1/user/login"
  6. body_data = {
  7. "loginName": "13388899999",
  8. "passwordMd5": passwd # 使用md5 加密之后的密文进行登录
  9. }
  10. r = requests.post(url,json=body_data)
  11. print(r.status_code)
  12. print(r.json())

post 请求中 data参数和json参数的区别

做post接口的时候,post请求的参数格式主要分为两种

  1. x-www-formurlencoded
  2. application/json

具体使用哪种请求参数的格式,一般接口文档中都会有说明。

查看requests 库中的 post 方法的参数
image.png
当参数值传给 data 时,requests发送请求的时候 会自动在请求头中添加 x-www-formurlencoded 表单格式数据的声明

data 参数

  1. import hashlib
  2. import requests
  3. # 对密码进行md5 加密
  4. passwd = hashlib.md5('123456'.encode()).hexdigest()
  5. url = "http://49.233.108.117:28019/api/v1/user/login"
  6. body_data = {
  7. "loginName": "13388899999",
  8. "passwordMd5": passwd
  9. }
  10. r = requests.post(url,data=body_data)
  11. print(r.status_code)
  12. print(r.request.headers) # 'Content-Type': 'application/x-www-form-urlencoded'
  13. print(r.json())

image.png
这里将请求传给data 数据格式使用的是 x-www-formurlencoded 格式, 而服务器需要json格式的数据,所以会看到返回结果报错。

json参数

  1. import hashlib
  2. import requests
  3. # 对密码进行md5 加密
  4. passwd = hashlib.md5('123456'.encode()).hexdigest()
  5. url = "http://49.233.108.117:28019/api/v1/user/login"
  6. body_data = {
  7. "loginName": "13388899999",
  8. "passwordMd5": passwd
  9. }
  10. r = requests.post(url,json=body_data)
  11. print(r.status_code)
  12. print(r.request.headers) # 'Content-Type': 'application/x-www-form-urlencoded'
  13. print(r.json())

image.png


总结

在做接口测试用的时候,如果接口文档中已经说明接口发送参数的类型,

  1. x-www-formurlencoded 格式 —- data 参数
  2. json 格式 —- json 参数

    面试问题

  3. 接口加密是怎么处理的?

我们之前做的接口使用的是md5 方式进行加密。所以主要调用 python 中的 hashlib 模块,使用里面的md5 方法对参数进行加密之后 传入密文。