当前位置: 首页 > 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;…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

VisualXML全新升级 | 新增数据库编辑功能

VisualXML是一个功能强大的网络总线设计工具&#xff0c;专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑&#xff08;如DBC、LDF、ARXML、HEX等&#xff09;&#xff0c;并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)

Name&#xff1a;3ddown Serial&#xff1a;FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名&#xff1a;Axure 序列号&#xff1a;8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...

GraphRAG优化新思路-开源的ROGRAG框架

目前的如微软开源的GraphRAG的工作流程都较为复杂&#xff0c;难以孤立地评估各个组件的贡献&#xff0c;传统的检索方法在处理复杂推理任务时可能不够有效&#xff0c;特别是在需要理解实体间关系或多跳知识的情况下。先说结论&#xff0c;看完后感觉这个框架性能上不会比Grap…...

【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架

文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理&#xff1a;检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目&#xff1a;RankRAG&#xff1a;Unifying Context Ranking…...

开疆智能Ethernet/IP转Modbus网关连接鸣志步进电机驱动器配置案例

在工业自动化控制系统中&#xff0c;常常会遇到不同品牌和通信协议的设备需要协同工作的情况。本案例中&#xff0c;客户现场采用了 罗克韦尔PLC&#xff0c;但需要控制的变频器仅支持 ModbusRTU 协议。为了实现PLC 对变频器的有效控制与监控&#xff0c;引入了开疆智能Etherne…...