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数据和下标取值:"+jresult0)

(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 = result20

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)

相关推荐
Sakura_j_h_23 分钟前
从零写一个 MCP stdio Server:用 Python 校验博客文章格式
开发语言·python·自动化·ai工具·mcp·json-rpc
大草原的小灰灰31 分钟前
LLM应用的标准开发框架LangChain(八)- 中间件
python·中间件·langchain
卷无止境42 分钟前
百万 token 时代的真相:主流大模型上下文窗口与最大输出的横向对比分析
人工智能·python
用户298698530141 小时前
Python 实战:将 HTML 批量转换为 Markdown
python·html·markdown
hhcgchpspk1 小时前
flask服务端页面预防被爬措施
后端·python·flask·网络爬虫·防爬
Oll Correct1 小时前
Adobe illustrator 案例十二:视频播放(Media & Video)图标绘制
笔记·ui·adobe·illustrator
小小张说故事1 小时前
Python 里 copy.copy() 和 deepcopy() 到底差在哪:拆开 __copy__、__deepcopy__ 和那个防止无限递归的 memo 字典
python
vipxieliang1 小时前
Python collections:高效容器与实战案例
后端·python
青少儿编程课堂2 小时前
蓝桥杯青少组图形化 STEMA 省考(报名倒计时·11/22开考)+ 全国青少年信息素养大赛 2026—2027赛季 + 电子学会图形化考级:校园华容道大闯关
c++·python·算法·bfs·信息学竞赛
特创数字科技2 小时前
写了个 Windows 下载器:一键拉 GitHub / Gitee 源码,带 SHA256 校验
python·github