当前位置: 首页 > news >正文

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数据
      • 2.4.1. urlencoded格式
      • 2.4.2. json格式

本文主要讲解常用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 requestshost = '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)

执行结果:在这里插入图片描述
像这种/username=test&passwd=aaabbbccc1234567890的参数格式称之为 urlencoded 格式,主要是以键值对key=value和拼接字符&组合成http请求参数。

2.3. 构造请求头部

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

import requestshost = 'www.testcode.com'
port = '9201'
url = 'http://' + host + ':' + portparams = {'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 requestshost = 'www.testcode.com'
port = '9201'
url = 'http://' + host + ':' + portparams = {'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)

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

2.4.1. urlencoded格式

urlencoded格式解释详见本文2.2章节内容

import requestshost = 'www.testcode.com'
port = '9201'
url = 'http://' + host + ':' + portparams = {'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 = {'key1' : 'value1','key2' : 'value2'
}proxies = {'http':'http://127.0.0.1:8080'}reponse = requests.post(url=url, proxies=proxies, params=params, headers=headers, data=payload)print(reponse.text)

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

2.4.2. json格式

参考文章:JSON数据格式与格式化操作详解

import json
import requestshost = 'www.testcode.com'
port = '9201'
url = 'http://' + host + ':' + portparams = {'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 = {'key1' : 'value1','key2' : {'key3' : 'value3','key4' : {'key5' : '测试'}}
}proxies = {'http':'http://127.0.0.1:8080'}# payload数据使用json.dumps转化为str,ensure_ascii=False代表关闭非ASCII字符转义
# 若不关闭非ASCII字符转义,则"测试"回显为转义后的ASCII字符"\u6d4b\u8bd5",两者意思一致
reponse = requests.post(url=url, proxies=proxies, params=params, headers=headers, data=json.dumps(payload, ensure_ascii=False).encode())print(reponse.text)

在这里插入图片描述

相关文章:

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数据2.4.1. urlencoded格式2.4.2. json格式 本文主要讲解常用API接…...

关于KT6368A双模蓝牙芯片的BLE在ios的lightblue大数量数据测试

测试简介 关于KT6368A双模蓝牙芯片的BLE在ios的lightblue app大数量数据测试 测试环境&#xff1a;iphone7 。KT6368A双模程序96B6 App&#xff1a;lightblue ios端 可以打开log日志查看通讯流程 测试数据&#xff1a;长度是1224个字节&#xff0c;单次直接发给KT6368A&a…...

云边协同的 RTC 如何助力即构全球实时互动业务实践

作者&#xff1a;即构科技 由 51 CTO 主办的“WOT 全球技术创新大会 2023深圳站”于 11 月 24 日 - 25 日召开&#xff0c;即构科技后台技术总监肖潇以“边缘容器在全球音视频场景的探索与实践”为主题进行分享。 边缘计算作为中心云计算的补充&#xff0c;通过边缘容器架构和…...

使用python连接elasticsearch

有一个困惑了好久的问题&#xff0c;那就是从python里面连接elasticsearch总是报错。大致长这样 一开始我是看网上把es的安全功能关闭&#xff0c;也就是下面的内容&#xff0c;这个要进入到es的docker中去改config/elasticsearch.yml配置文件&#xff0c;但是这样改了以后kib…...

使用elasticsearchdump迁移elasticsearch数据实战

目录 1.安装nodejs 2.安装elasticsearchdump 3.迁移 4.核对数据 5.注意事项 1.安装nodejs https://ascendking.blog.csdn.net/article/details/135509838 2.安装elasticsearchdump npm install elasticdump -g 3.迁移 elasticdump --inputhttp://用户:密码源ES地址/源…...

指向未来: 量子纠缠的本质是一个指针

指向未来: 量子纠缠的本质是一个指针 概述基本概念理解量子纠缠PythonJavaC 理解波粒二象性PythonJavaC 理解量子隧穿理解宇宙常量PythonJavaC 概述 量子纠缠 (Quantum Entanglement) 是量子系统重两个或多个粒子间的一种特殊连接, 这种连接使得即使相隔很远, 这些粒子的状态也…...

Zookeeper启动报错常见问题以及常用zk命令

Zk常规启动的命令如下 sh bin/zkServer.sh start 启动过程如果存在失败&#xff0c;是没办法直接看出什么问题&#xff0c;只会报出来 Starting zookeeper … FAILED TO START 可以用如下命令启动&#xff0c;便于查看zk启动过程中的详细错误 sh bin/zkServer.sh start-for…...

【数据结构 】哈夫曼编译码器

数据结构-----哈夫曼编译码器 题目题目描述基本要求算法分析 代码实现初始化编码解码打印代码打印哈夫曼树 总结 题目 题目描述 利用哈夫曼编码进行信息通信可大大提高信道利用率&#xff0c;缩短信息传输时间&#xff0c;降低传输成本。 要求&#xff1a;在发送端通过一个编…...

大屏项目:react中实现3d效果的环形图包括指引线

参考链接3d环形图 3d效果的环形图 项目需求实现方式指引线&#xff08;线的样式字体颜色&#xff09; 项目需求 需要在大屏上实现一个3d的环形图&#xff0c;并且自带指引线&#xff0c;指引线的颜色和每段数据的颜色一样&#xff0c;文本内容变成白色&#xff0c;数字内容变…...

【STM32】STM32学习笔记-FlyMCU串口下载和STLINK Utility(30)

00. 目录 文章目录 00. 目录01. 串口简介02. 串口连接电路图03. FlyMCU软件下载程序04. 串口下载原理05. FlyMCU软件其它操作06. STLINK Utility软件07. 软件下载08. 附录 01. 串口简介 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式&#xff0c;因为它简…...

oracle rac 12.2.0.1CPU使用率100%

oracle rac 12.2.0.1 CPU使用率100% 查看是集群的java进程"oracle.ops.opsctl.OPSCTLDriver config database"占用cpu 根据进程号查找父进程,发现是/oracle/GRID/122/perl/bin/perl /oracle/GRID/122/tfa/gcmproddb01/tfa_home/bin/tfactl.pl rediscover -mode full …...

LeetCode、2542. 最大子序列的分数【中等,排序+小顶堆】

文章目录 前言LeetCode、2542. 最大子序列的分数【中等&#xff0c;排序小顶堆】题目及类型思路及代码实现 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者、专注于Java后端技术领…...

Linux_Docker图形化工具Portainer如何安装并结合内网穿透实现远程访问

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 前言 本文主要介绍如何本地安装Portainer并结合内网穿透工具实现任意浏览器远程访问管理界面。Portainer 是一个轻量级…...

【Spring Boot 3】【Redis】集成Jedis

【Spring Boot 3】【Redis】集成Jedis 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花费…...

C++设计模式(李建忠)笔记3

C设计模式&#xff08;李建忠&#xff09; 本文是学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。 参考链接 Youtube: C设计模式 Gtihub源码与PPT&#xff1a;https://github.com/ZachL1/Bilibili-plus 豆瓣: 设计模式–可复用面向对象软件的基础 文章目录 C设计模…...

计算机考研408的准备

计算机考研408的准备 一&#xff1a;专硕和学硕 计算机的学硕叫做计算机科学与技术&#xff0c;而计算机的专硕叫计算机技术。这么区分的意义就在于我们的就业形势和科研形式。 二&#xff1a;就业形势 由于本科的严重扩招以及课程设置的问题&#xff0c;相当大量的人在毕业…...

2.【Linux】(进程的状态||深入理解fork||底层剖析||task_struct||进程优先级||并行和并发||详解环境变量)

一.进程 1.进程调度 Linux把所有进程通过双向链表的方式连接起来组成任务队列&#xff0c;操作系统和cpu通过选择一个task_struct执行其代码来调度进程。 2.进程的状态 1.运行态&#xff1a;pcb结构体在运行或在运行队列中排队。 2.阻塞态&#xff1a;等待非cpu资源就绪&am…...

【管理篇 / 升级】❀ 13. FortiOS 7.4固件升级新规则 ❀ FortiGate 防火墙

【简介】飞塔防火墙的固件升级一直是所有厂家中最好的。只要有注册官方帐号&#xff0c;有注册设备&#xff0c;并且只要有一台设备在服务期内&#xff0c;即可下载所有型号的所有版本的固件。即使其它设备服务期已过&#xff0c;也可以通过固件文件手动升级&#xff0c;避免防…...

【前端】vue.js从入门到项目实战笔记

文章目录 第三章3.1 插值绑定&#xff08;{{}}&#xff0c; v-html&#xff09;3.1.1 文本插值3.1.2 HTML插值 3.2 属性绑定 v-bind3.2.1 指令v-bind3.2.3 类名和样式绑定 【前端目录贴】 第三章 3.1 插值绑定&#xff08;{{}}&#xff0c; v-html&#xff09; 文本插值中的代…...

flex布局(3)

九、骰子 *{margin:0;padding: 0;box-sizing: border-box; } .flex{display: flex;flex-flow: row wrap;justify-content: space-between;align-items: center;align-content: space-between;padding:20px; } .touzi{width: 120px;height: 120px;background-color: aliceblue;…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...