文章目录
- 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 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 = '''
Tove Jani Reminder Don't forget me this weekend!执行结果:
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)
猜你喜欢
- 4小时前51单片机四位数码管计算器 Proteus仿真程序
- 4小时前在探索创意中进一步了解生成式人工智能:PartyRock —— re:Invent 2023 产品测评
- 4小时前Excel数据透视表从入门到精通
- 4小时前Deno 下一代JavaScript运行时
- 4小时前PHP反序列化漏洞-魔术方法绕过
- 4小时前「Python-PDF 专栏」PyPDF2详解教程、依赖库安装、导入及主要功能函数介绍
- 4小时前Python神器:psutil库使用详解
- 4小时前python——matplotlib的用法详解
- 4小时前深度强化学习-DDPG算法原理与代码
- 47分钟前科一预约一直在受理中(科一预约一直在受理中怎么回事)
网友评论
- 搜索
- 最新文章
- 热门文章