首页 > 编程语言 >Python+requests测试接口、关联接口

Python+requests测试接口、关联接口

时间:2024-09-25 11:50:55浏览次数:9  
标签:__ www http Python self 接口 headers url requests

一个通过筛选,一个提取cookie(有两种写法)

一、依赖接口

(1)第一种方法:requests.session 

准备两个接口:一个登录接口,一个用户查询接口

登录接口:http://cms.duoceshi.cn/manage/loginJump.do

请求体:

userAccount:admin

loginPwd:123456

用户查询接口:http://cms.duoceshi.cn/manage/queryUserList.do

请求体:

startCreateDate:

endCreateDate:

searchValue:

page:1

import   requests
s=requests.Session()
url="http://cms.duoceshi.cn/manage/loginJump.do"
data={'userAccount':'admin','loginPwd':'123456'}
headers={"Content-Type":"application/x-www-form-urlencoded"}
dx=s.request("post",url=url,data=data,headers=headers,)
print(dx.text) #{"code":"200","msg":"登录成功!","model":{}} 响应体
url2="http://cms.duoceshi.cn/manage/queryUserList.do"
data2={'startCreateDate':'','endCreateDate':'','searchValue':'','page':1}
headers2={"Content-Type":"application/x-www-form-urlencoded"}
dx2=s.request("post",url=url2,data=data2,headers=headers2)

print(dx2.text)

(2)通过cookies保持会话

请求头有一个cookie值

将登录接口的cookie值提取(复制)出来,作为下一个接口的请求头

import  requests
class Cms(object):
    def  __init__(self):
        pass
    def  dl(self):
        url="http://cms.duoceshi.cn/manage/loginJump.do"
        data={'userAccount':'admin','loginPwd':'123456'}
        headers={"Content-Type":"application/x-www-form-urlencoded"}
        dx=requests.request("post",url=url,data=data,headers=headers,)
        print(dx.text) #{"code":"200","msg":"登录成功!","model":{}} 响应体
        # print(dx.cookies)
        c=str(dx.cookies) # 将cookie和转换成字符串
        self.s=c.split(" ")[1]
    def yhgl(self):
        url2="http://cms.duoceshi.cn/manage/queryUserList.do"
        data2={'startCreateDate':'','endCreateDate':'','searchValue':'','page':1}
        headers2={"Content-Type":"application/x-www-form-urlencoded","Cookie":self.s}
        dx2=requests.request("post",url=url2,data=data2,headers=headers2)
        print(dx2.text)
if __name__ == '__main__':
    d=Cms()
    d.dl()
    d.yhgl()

(2)通过提取登录接口的cooike ,作为一个返回值return

(1)

import  requests
class Cms(object):
    def  __init__(self):
        pass
    def  dl(self):
        url="http://cms.duoceshi.cn/manage/loginJump.do"
        data={'userAccount':'admin','loginPwd':'123456'}
        headers={"Content-Type":"application/x-www-form-urlencoded"}
        dx=requests.request("post",url=url,data=data,headers=headers,)
        print(dx.text) #{"code":"200","msg":"登录成功!","model":{}} 响应体
        # print(dx.cookies)
        c=str(dx.cookies) # 将cookie和转换成字符串
        s=c.split(" ")[1]
        return s
    def yhgl(self):
        f=self.dl()
        url2="http://cms.duoceshi.cn/manage/queryUserList.do"
        data2={'startCreateDate':'','endCreateDate':'','searchValue':'','page':1}
        headers2={"Content-Type":"application/x-www-form-urlencoded","Cookie":f}
        dx2=requests.request("post",url=url2,data=data2,headers=headers2)
        print(dx2.text)
if __name__ == '__main__':
    d=Cms()
    d.dl()
    d.yhgl()

关联接口:省份接口,关连接口

上一个接口的响应体,作为下一个接口的请求体

案例:

准备省份接口

城市接口:

http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince

城市接口:

http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity

入参:

byProvinceName:城市名称

案例1:管理接口单独调通

import  requests
s=requests.Session()
class Gl(object):
    def __init__(self):
        pass
    def  sf(self):
        url="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince"
        headers = {"Content-Type": "application/x-www-form-urlencoded"}
        dx=s.request("get",url=url,headers=headers)
        print(dx.text)
    def  cs(self):
        url2="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity"
        data2={"byProvinceName":"浙江"}
        headers2 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx2=s.request("post",url=url2,data=data2,headers=headers2)
        print(dx2.text)

if __name__ == '__main__':
    d=Gl()
    d.sf()
    d.cs()

管理接口:

将省份的响应体提取出来,用到re正则提取,

在存放在城市的请求体中

提取汉字:

<string>(.+?)</string>   内容匹配0次或1次或n次,

. 匹配任意字符   +  匹配1次或n次   ?是匹配0次或1次

(1)管理接口中 通过self.实例变量

import re
import  requests
s=requests.Session()
class Gl(object):
    def __init__(self):
        pass
    def  sf(self):
        url="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince"
        headers = {"Content-Type": "application/x-www-form-urlencoded"}
        dx=s.request("get",url=url,headers=headers)
        nr=dx.text
        self.tq=re.findall("<string>(.+?)</string>",nr)[3]
        print(self.tq)
    def  cs(self):
        url2="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity"
        data2={"byProvinceName":self.tq}
        headers2 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx2=s.request("post",url=url2,data=data2,headers=headers2)
        print(dx2.text)

if __name__ == '__main__':
    d=Gl()
    d.sf()
    d.cs()

(2)通过return 来进行传递

import  requests
import  re
s=requests.Session()
class Gl(object):
    def __init__(self):
        pass
    def  sf(self):
        url="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince"
        headers = {"Content-Type": "application/x-www-form-urlencoded"}
        dx=s.request("get",url=url,headers=headers)
        nr=dx.text
        tq=re.findall("<string>(.+?)</string>",nr)[3]
        return tq
    def  cs(self):
        c=self.sf()
        url2="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity"
        data2={"byProvinceName":c}
        headers2 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx2=s.request("post",url=url2,data=data2,headers=headers2)
        print(dx2.text)

if __name__ == '__main__':
    d=Gl()
    d.sf()

d.cs()

重点是提取:所有的省份    tq=re.findall("<string>(.+?)</string>",nr)

(3)随机获取省份

import  requests
import  re
import  random
s=requests.Session()
class Gl(object):
    def __init__(self):
        pass
    def  sf(self):
        url="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince"
        headers = {"Content-Type": "application/x-www-form-urlencoded"}
        dx=s.request("get",url=url,headers=headers)
        nr=dx.text
        tq=re.findall("<string>(.+?)</string>",nr)
        self.b=random.choice(tq)  #调用随机模块

    def  cs(self):
        c=self.sf()
        url2="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity"
        data2={"byProvinceName":self.b}
        headers2 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx2=s.request("post",url=url2,data=data2,headers=headers2)
        print(dx2.text)

if __name__ == '__main__':
    d=Gl()
    d.sf()
    d.cs()

token案例:

案例:

网站:http://shop.duoceshi.com/login?redirect=%2Fdashboard

code接口:http://manage.duoceshi.com/auth/code

登录接口:http://manage.duoceshi.com/auth/login

登录接口参数:{"username":"admin","password":"e6WGOz+g/FuR646O7IF8JrlC6qH/anCI9/0UCsVDnUxN2aBdGKtRffNb1W7i87dRavZCNyP9yqvAcXLgdKtsRA==","code":"8888","uuid":"{{uuid}}"}

链接类型:Content-Type:application/json

搜索商品接口:http://manage.duoceshi.com/api/yxStoreCategory?page=0&size=10&sort=sort%2Cdesc

Authorization:
Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6MTY4MDE0OTgwNX0.fmlEdR5Xh1BF2al6crfPMjG8dd-M6TOKux3wni5ejvGFLce4Zk0tvKsCobj7WEaXvXI-N-21AIj2HH5LFlFMNw

一、如何提取tonken值token案例: 案例: 网站:http://shop.duoceshi.com/login?redirect=%2Fdashboard  验证码(固定):8888二、抓取接口code接口:http://manage.duoceshi.com/auth/code登录接口:http://manage.duoceshi.com/auth/login 登录接口参数:{"username":"admin","password":"e6WGOz+g/FuR646O7IF8JrlC6qH/anCI9/0UCsVDnUxN2aBdGKtRffNb1W7i87dRavZCNyP9yqvAcXLgdKtsRA==","code":"8888","uuid":"{{uuid}}"}入参类型:Content-Type:application/json搜索商品接口:http://manage.duoceshi.com/api/yxStoreCategory?page=0&size=10&sort=sort%2Cdesc Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6MTY4MDE0OTgwNX0.fmlEdR5Xh1BF2al6crfPMjG8dd-M6TOKux3wni5ejvGFLce4Zk0tvKsCobj7WEaXvXI-N-21AIj2HH5LFlFMNw三、实战​

实践:抓取三个接口

标签:__,www,http,Python,self,接口,headers,url,requests
From: https://blog.csdn.net/AgostoDu/article/details/142515847

相关文章

  • Python模拟鼠标轨迹
    一.鼠标轨迹模拟简介传统的鼠标轨迹模拟依赖于简单的数学模型,如直线或曲线路径。然而,这种方法难以捕捉到人类操作的复杂性和多样性。AI大模型的出现,能够通过深度学习技术,学习并模拟更自然的鼠标移动行为。二.鼠标轨迹算法实现AI大模型通过学习大量的人类鼠标操作数据,能够识别......
  • Python-通过Wind获取股票收盘价并绘制收盘价曲线图及均价水平参考线
    注意事项:需要安装Wind金融客户端并且用windPy权限代码如下:importnumpyasnpimportmatplotlib.pyplotaspltimportmatplotlibasmplimportpandasaspdfromWindPyimport*#设置属性防止中文乱码mpl.rcParams['font.family']='SimHei' #设置字体为黑体mpl.rcPar......
  • cameralink卡设计原理图:287-基于FMC接口的1路Base cameralink输入1路Base cameralink
    基于FMC接口的1路Basecameralink输入1路Basecameralink输出子卡  一、板卡概述      该板卡是我公司自主研发的1路Basecameralink输入,1路Basecameralink输出的FMC子卡,LPC-FMC连接器。FMC连接器是一种高速多pin的互连器件,广泛应用于板卡对接的设......
  • [Python手撕]实现哈希映射
    classNode:def__init__(self,key,value,next=None):self.key=keyself.value=valueself.next=nextclassMyHashMap:def__init__(self):self.array=[None]*(10**3)defput(self,key:int,value:int)->......
  • 监控下抽烟检测系统 Python
    监控下抽烟检测系统具有以下优势:监控下抽烟检测系统通过视频监控设备对工地和工厂的作业区域进行实时监测,准确捕捉人员抽烟的行为。监控下抽烟检测系统采用先进的图像识别技术,能够准确识别人员抽烟的动作和烟雾。监控下抽烟检测系统一旦系统发现有人员在禁烟区域内抽烟,将立即触发预......
  • 面向企业应用程序的 Python 配置管理
    配置管理的重要性    在企业应用程序中,配置管理是最被低估的运算符,它使所有内容保持集成并平稳运行。它充当后台经理,确保所有灯光都就位,剧院队列准备就绪,演出可以顺利进行。特别是,在处理多环境部署时,使用紧密的 CI/CD 流程,一个错误的配置可能会带来应用程序范围的关闭风险。......
  • 使用python创建一个微信聊天机器人
    使用python创建一个微信聊天机器人实现的功能如下笑话天气歇后语历史上的今天核心代码:#-*-coding:utf-8-*-fromrandomimportrandintimportitchatimportreimportrequestsemojis_love=["❤️","......
  • 非煤矿山风险监测预警系统 Python
    非煤矿山风险监测预警系统具有以下优势:非煤矿山风险监测预警系统通过在煤矿关键地点安装摄像机等设备利用智能化视频识别技术,能够实时分析人员出入井口的情况,监测矿井人数变化并检测煤矿生产作业状态,在矿井出入口、各作业区域等重要位置进行全方位监测,确保覆盖矿山操作过程中的关键......
  • 视频汇聚EasyCVR视频监控平台调取接口提示“认证过期”是什么原因?
    视频汇聚EasyCVR视频监控平台,作为一款智能视频监控综合管理平台,凭借其强大的视频融合汇聚能力和灵活的视频能力,在各行各业的应用中发挥着越来越重要的作用。EasyCVR平台具备强大的拓展性和灵活性,支持多种视频流的外部分发,如RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、WebRTC、WS-......
  • 金口诀排盘 api接口
    ​金口诀排盘,金口诀是中国古代的一种高级预测学,它融合了太乙、奇门、六壬、三式绝学的精华。学会金口诀,凡事不用问。金口诀以干支体系为基础,与现代的时间、空间、人体五脏六腑、十二经络完全吻合,所以能够更好地运用于现代生活,解读人事与健康。请求方式接口名称:流盘-金口诀排盘......