4.18 学习笔记

一.微信小程序接口测试


'''
import requests
import jsonpath
import re #python自带的库,可以基于正则表达式提取数据

requests 的常用方法:


# requests.get() # 发送get请求
# def get(url, params=None, **kwargs):
# return request("get", url, params=params, **kwargs)
# # requests.post() # 发送post请求
# def post(url, data=None, json=None, **kwargs):
# return request("post", url, data=data, json=json, **kwargs)
# requests.put() # 发送put请求
# requests.delete() # 发送delete请求


如何接收相应信息


# res.text 返回一个字符串类型的数据
# res.json() 返回一个字典类型数据
# res.status_code 响应状态码
# res.content 返回bytes字节类型数据,一般取图片或者文件
# res.headers 响应头信息
# res.cookies 响应的cookies信息
# res.encoding = "utf-8" # 修改响应数据的编码格式,如果要设置编码,应该在获取响应后设置。


#1.获取鉴权码access_token接口 (get)
#https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
urls = "https://api.weixin.qq.com/cgi-bin/token"
parm = {"grant_type":"client_credential","appid":"wx753d3a89ef23ea52","secret":"97a3a1ddf40b558d2219ec7c44d72e3c"}
res = requests.get(url=urls,params=parm)
result = res.json()
print(res.json())

# # json数据是一个字典,获取数据用key
# token = result["access_token"]
# print("1.获取鉴权码access_token接口 (get)",token)



获取某个关联接口的数据

(1).通过jsonpath获取json数据


# def jsonpath(obj(对象), expr(表达式), result_type='VALUE', debug=0, use_eval=True):
# return p #返回的数据是一个列表,通过索引(下标)获取数据,没有找到返回 None

jresult = jsonpath.jsonpath(result,'$.access_token')
# print("通过jsonpath获取json数据",jresult)
#通过jsonpath获取json数据 ['103_7H49HcyIGGoizKQwRvq-frZE7sNpFyZ_YmgGzxbta9r9fJzkjkGoPxx6xRMz0tQpgtqzwrI66TE3OSF4lfnMLCGyoJ5NmFxHlBXDH-xPD7vuBd-LHDyny7T_SREFKQhAHAPUA']
print("1.获取鉴权码access_token接口,通过jsonpath获取json数据和下标取值:"+jresult[0])

 

(2).通过re正则表达式获取数据


# 正则表达式只能对字符串进行操作,不能直接对字典操作!
#而 result 是一个字典(由 res.json() 返回)

#所以 result 不能用jsonpath获取数据,使用 res.text(推荐用于正则提取)
#re.search() #只匹配一个值,通过下标[1]获取值,如果没有匹配到,返回None
#def search(pattern(表达式), string(对象), flags=0):
# return _compile(pattern, flags).search(string)


#re.findall() #匹配所有值,返回一个列表,通过索引[0]获取值,如果没有匹配到,返回None
# def findall(pattern, string, flags=0):
# return _compile(pattern, flags).findall(string)
print(res.text)
# result1 = re.search('"access_token":"(.*?)","expires_in"',res.text)[1]
# print("2.获取鉴权码access_token接口,通过正则表达式获取数据:"+result1)
result2 = re.findall('"access_token":"(.*?)","expires_in"',res.text)
# ❌print("2.获取鉴权码access_token接口,通过正则表达式获取数据:"+result2
# 第 65 行使用 re.findall() 返回的是一个列表(list),而第 66 行试图用 + 将字符串和列表拼接,这是不允许的
print("2.获取鉴权码access_token接口,通过正则表达式获取数据:",result2)
result2 = result2[0]
print("2.获取鉴权码access_token接口,通过正则表达式获取数据:",result2)


 

二.访问 phpwind 论坛首页

import requests
import json
import jsonpath
import re


包含请求头和cokie,session 鉴权


session = requests.session() #创建session对象


# 1. 访问 phpwind 论坛首页接口
url4 = "http://47.107.116.139/phpwind/"
# res4 = requests.get(url = url4)
res4 = session.request(method = "get",url = url4)
result4 = res4.text
# print("4.包含请求头和cokie,session 鉴权",result4)

csrf_token = re.search('"csrf_token" value="(.*?)"/><input type="hidden"',result4)[1]
print("csrf_token",csrf_token)

# 2. 登录接口
url5 = "http://47.107.116.139/phpwind/index.php"
data2 = {"username":"admin",
"password":"msjy123",
"backurl":"http://47.107.116.139/phpwind/",
"csrf_token":csrf_token,
"invite":""}
header = {"Accept":"application/json, text/javascript, /; q=0.01",
"X-Requested-With":"XMLHttpRequest"}
# res5 = requests.post(url = url5,data = data2,headers = header)
res5 = session.request(method = "post",url = url5,data = data2,headers = header)
result5 = res5.text
print("2. 登录接口",result5)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值