文章目录
- 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)
猜你喜欢
- 8天前(三亚海棠湾君悦度假酒店)三亚海棠湾君悦酒店暑期夏令营悦趣海岛游招募中
- 8天前(上海文旅产业发展高峰论坛)《上海打造文旅元宇宙新赛道行动方案》发布
- 8天前(福朋喜来登酒店宴会厅)福朋喜来登品牌亮相北部湾城市群 阳江中心福朋喜来登酒店开业
- 8天前(云南滇陇工程咨询有限公司)陇滇携手谋发展 文旅合作谱新篇
- 8天前(武隆旅游门票)炸了!519中国旅游日武隆甩出王炸福利,59.9元通玩6大景点?!
- 8天前(安岚度假村及酒店推出"山海之约"目的地婚礼计划)安岚度假村及酒店推出"山海之约"目的地婚礼计划
- 8天前(上海迪士尼 夏天)酷爽夏日,奇妙相伴!来上海迪士尼度假区清凉入夏
- 8天前(锦州新增两家国家aaa级旅游景区有哪些)锦州新增两家国家AAA级旅游景区
- 8天前(筑格集团有限公司)洲际酒店集团旗下筑格酒店品牌正式亮相大中华区
- 8天前(第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章