首页 > Python资料 博客日记
Python ❀ 使用代码实现API接口调用详解
2024-09-06 08:00:06Python资料围观109次
Python资料网推荐Python ❀ 使用代码实现API接口调用详解这篇文章给大家,欢迎收藏Python资料网享受知识的乐趣
文章目录
本文主要讲解常用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)
执行结果:
像这种/username=test&passwd=aaabbbccc1234567890
的参数格式称之为 urlencoded 格式,主要是以键值对key=value
和拼接字符&
组合成http请求参数。
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)
执行结果:
2.4.1. urlencoded格式
urlencoded格式解释详见本文2.2章节内容
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 = {
'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 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 = {
'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)
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj