Python ❀ 使用代码实现API接口调用详解

文章目录

  • 1. 工具准备
    • 1.1. requests代码包
    • 1.2. BurpSuite抓包工具
  • 2. 操作过程
    • 2.1. 一个简单的请求
      • 2.1.1. Burp获取响应
      • 2.1.2. 转发获取响应
    • 2.2. 构造GET类型URL参数
    • 2.3. 构造请求头部
    • 2.4. 构造POST类型payload数据

本文主要讲解常用API接口如何使用python实现。
API:Application Programming Interface,是应用程序开发接口的缩写,意思是一些预设好的函数或方法,这些预设好的函数或方法允许第三方程序通过网络来调用数据或提供基于数据的服务。

1. 工具准备

Python运行环境:python3.10.2 + PyCharm

1.1. requests代码包

使用pip install requests安装此代码包,pip安装教程

1.2. BurpSuite抓包工具

BurpSuite安装教程,参考1.2章节设置http协议代理为127.0.0.1,端口8080,完成后开启Intercept劫持功能
在这里插入图片描述

在这里插入图片描述

2. 操作过程

2.1. 一个简单的请求

使用python发现一个简单的GET请求,并且通过BurpSuite抓取其请求

import requests

# URL
host = 'www.testcode.com'
port = '9201'
url = 'http://' + host + ':' + port

# 配置Burp截取配置
proxies = {'http':'http://127.0.0.1:8080'}

# 发送请求
reponse = requests.get(url=url, proxies=proxies)

print(reponse.text)

代码运行后,会在BurpSuite上回显一条http请求,即为该代码构造的http请求:
在这里插入图片描述

将此请求放入重放或者点击代理的forwafd转发即可看到其具体响应内容。

2.1.1. Burp获取响应

使用BurpSuite的Repeater重放功能就可以直接查看到Response响应。
在这里插入图片描述

2.1.2. 转发获取响应

使用Proxy代理模块中的Forward转发可以将请求发送到服务侧,即可在原软件获得Response响应。
在这里插入图片描述
在这里插入图片描述

2.2. 构造GET类型URL参数

import requests

host = 'www.testcode.com'
port = '9201'
url = 'http://' + host + ':' + port

# 构造参数
params = {
    'username' : 'test',
    'passwd' : 'aaabbbccc1234567890'
}

proxies = {'http':'http://127.0.0.1:8080'}

reponse = requests.get(url=url, proxies=proxies, params=params)

print(reponse.text)

执行结果:在这里插入图片描述

2.3. 构造请求头部

参考文章:HTTP协议头部字段梳理

import requests

host = 'www.testcode.com'
port = '9201'
url = 'http://' + host + ':' + port

params = {
    'username' : 'test',
    'passwd' : 'aaabbbccc1234567890'
}

# 构造头部字段,注意大小写!
headers = {
    'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Referer' : 'www.aaa.bbb.ccc.com'
}

proxies = {'http':'http://127.0.0.1:8080'}

reponse = requests.get(url=url, proxies=proxies, params=params, headers=headers)

print(reponse.text)

执行结果:
在这里插入图片描述

2.4. 构造POST类型payload数据

import requests

host = 'www.testcode.com'
port = '9201'
url = 'http://' + host + ':' + port

params = {
    'username' : 'test',
    'passwd' : 'aaabbbccc1234567890'
}

headers = {
    'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Referer' : 'www.aaa.bbb.ccc.com'
}

# 设置payload
payload = '''
<!--  Edited by XMLSpy®  -->
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
'''

proxies = {'http':'http://127.0.0.1:8080'}

# 修改类型为POST,设置payload对象编码为UTF-8(中文编码)
reponse = requests.post(url=url, proxies=proxies, params=params, headers=headers, data=payload.encode('utf-8'))

print(reponse.text)

执行结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/329431.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用WAF防御网络上的隐蔽威胁之扫描器

在网络安全领域&#xff0c;扫描器是用于侦察和识别网络系统漏洞的工具。 它们可以帮助网络管理员识别安全漏洞&#xff0c;也可能被攻击者用来寻找攻击目标。 扫描器的基本概念 定义&#xff1a;扫描器是一种自动化工具&#xff0c;用于探测网络和服务器中的漏洞、开放端口、…

图解渠道网关:不只是对接渠道的接口(一)

这是《百图解码支付系统设计与实现》专栏系列文章中的第&#xff08;20&#xff09;篇。点击上方关注&#xff0c;深入了解支付系统的方方面面。 主要讲清楚什么是渠道&#xff0c;有哪些类型的渠道&#xff0c;什么是渠道网关&#xff0c;渠道网关在支付系统中定位、核心功能…

springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码...

多线程创建方式一&#xff1a;继承Thread类多线程创建方式二&#xff1a;实现Runnable接口jdk5.0新增两种创建多线程的方式 image.png image.png image.png image.png image.png new Thread(new Runnable() {public void run() {for (int i 1; i < 100; i) {if (i % 2 0) …

基于LabVIEW的声音信号采集分析系统开发

摘要&#xff1a;以美国国家仪器(NI)公司开发的LabVIEW虚拟仪器为软件开发平台&#xff0c;设计了一个可以同步实现声音信号采集和分析的多功能模块化软件系统&#xff0e;借助LabVIEW图形化软件相应的声音读取、写入和存储函数实现对声音信号的采集、存储、时域分析和频域分析…

五、基础篇 vue列表渲染

在v-for里使用对象用 v-for 把一个数组对应为一组元素 我们可以用 v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in list形式的特殊语法&#xff0c;其中 list是源数据数组&#xff0c;而 item 则是被迭代的数组元素的别名。 <template><div clas…

C++大学教程(第九版)5.15修改GradeBook

目录 题目 代码 运行命令&#xff08;在控制台输入&#xff09; 运行截图 题目 &#xff08;修改GradeBook&#xff09;修改图5.9~图5.11所示的 GradeBook 程序&#xff0c;使它计算一组成绩的平均成绩。 成绩A为4分&#xff0c;成绩B为3分&#xff0c;依次类推。 A:4 B:3…

【数据库】聊聊数据库中的 fetchsize 参数

聊聊数据库中的 fetchsize 参数 1.介绍2.案例3.MySQL 中的 fetchsize4.Oracle 中的 fetchsize 1.介绍 在使用查询语句的时候&#xff0c;经常需要根据条件来进行查询得到最终的总记录条数&#xff0c;然后得到结果之后需要来进行处理。 场景&#xff1a;Java 端从数据库读取 …

【数据库】聊聊MVCC机制与BufferPool缓存机制

上一篇文章&#xff0c;介绍了隔离级别&#xff0c;MySQL默认是使用可重复读&#xff0c;但是在可重复读的级别下&#xff0c;可能会出现幻读&#xff0c;也就是读取到另一个session添加的数据&#xff0c;那么除了配合使用间隙锁的方式&#xff0c;还使用了MVCC机制解决&#…

Vue3响应式系统(二)

Vue3响应式系统(一)https://blog.csdn.net/qq_55806761/article/details/135587077 六、嵌套的effect与effect栈。 什么场景会用到effect嵌套呢&#xff1f;听我娓娓道来。 就用Vue.js来说吧&#xff0c;Vue.js的渲染函数就是在effect中执行的&#xff1a; /*Foo组件*/ const…

香港服务器托管:你对服务器托管了解多少?

在当今数字化的时代&#xff0c;服务器托管已成为企业和网站运营的关键一环。对于许多企业来说&#xff0c;如何选择一个安全、稳定、高效的服务器托管方案&#xff0c;成为了确保业务连续性和数据安全的重要课题。那么&#xff0c;究竟什么是服务器托管&#xff0c;它又有哪些…

SpringBoot多环境配置与添加logback日志

1、多环境配置 一个项目会有多个运行环境 所以SpringBoot提供了可以适应多个环境的配置文件 每个文件对应一个端口号 application-dev.yml 开发环境 端口8090 application-test.yml 测试环境 端口8091 application-prod.yml 生产环境 端口8092 在application中选择使用哪个…

Qt6入门教程 8:信号和槽机制(连接方式)

目录 一.一个信号与槽连接的例子 二.第五个参数 1.Qt::AutoConnection 2.Qt::DirectConnection 3.Qt::QueuedConnection 4.Qt::BlockingQueuedConnection 5.Qt::UniqueConnection 三.信号 四.connect函数原型 五.信号与槽的多种用法 六.槽的属性 一.一个信号与槽连接…

MetaGPT入门(一)

本文在Win11操作系统下进行&#xff0c;工具pycharm 一、环境准备 1.建议使用conda虚拟环境 安装anaconda参考&#xff1a;Windows10下Anaconda的安装_windows anaconda 路径-CSDN博客 打开Anaconda Powershell Prompt命令窗口&#xff0c;输入下面命令&#xff0c;创建3.1…

MyBatisPlus学习笔记三-核心功能

接上篇&#xff1a; MyBatisPlus学习笔记二-CSDN博客 1、核心功能-IService开发基础业务接口 1.1、介绍 1.2、引用依赖 1.3、配置文件 1.4、用例-新增 1.5、用例-删除 1.6、用例-根据id查询 1.7、用例-根据ids查询 2、核心功能-IService开发复杂业务接口 2.1、实例-更新 3、…

Spring高手之路-Spring在业务中常见的使用方式

目录 通过IOC实现策略模式 通过AOP实现拦截增强 1.参数检验 2.缓存逻辑 3.日志记录 通过Event异步解耦 通过Spring管理事务 1.声明式事务 2.编程式事务 3.需要注意的问题 不能在事务中处理分布式缓存 不能在事务中执行 RPC 操作 不过度使用声明式事务 通过IOC实现…

软件工程应用题汇总

绘制数据流图(L0/L1/L2) DFD/L0&#xff08;基本系统模型&#xff09; 只包含源点终点和一个处理(XXX系统) DFD/L1&#xff08;功能级数据流图&#xff09;在L0基础上进一步划分处理(XXX系统) 个人理解 DFD/L2&#xff08;在L1基础上进一步分解后的数据流图&#xff09; 数据…

蓝桥杯备赛 day 3 —— 高精度(C/C++,零基础,配图)

目录 &#x1f308;前言&#xff1a; &#x1f4c1; 高精度的概念 &#x1f4c1; 高精度加法和其模板 &#x1f4c1; 高精度减法和其模板 &#x1f4c1; 高精度乘法和其模板 &#x1f4c1; 高精度除法和其模板 &#x1f4c1; 总结 &#x1f308;前言&#xff1a; 这篇文…

C#中对浮点数NaN,PositiveInfinity,NegativeInfinity的特殊处理

NAN NAN 整体意思为Not a Number 不是一个数&#xff0c; NaN&#xff08;Not a Number&#xff0c;非数&#xff09;是计算机科学中数值数据类型的一类值&#xff0c;表示未定义或不可表示的值。常在浮点数运算中使用。首次引入NaN的是1985年的IEEE 754浮点数标准。 EEE 75…

Linux Mii management/mdio子系统分析之六 fixed-mii_bus分析(mac2mac分析)

&#xff08;转载&#xff09;原文链接&#xff1a;[https://blog.csdn.net/u014044624/article/details/130674908] (https://blog.csdn.net/u014044624/article/details/130674908) 前面几章我们介绍了MDIO模块的大部分内容&#xff0c;针对mii_bus、mdio_bus、phy_device、p…

学习鸿蒙先解决这几个是关键问题~

HarmonyOS 是最近最火的操作系统&#xff0c;HarmonyOS 宣布删除 Android 代码之后&#xff0c;正式向世界上第三大操作系统有迈进了一步&#xff0c;HarmonyOS 前期为了完成从 Android 到 HarmonyOS 的过渡&#xff0c;在设计之初 HarmonyOS 采用了双框架架构设计。 从图中可以…