HTTP协议(9)Python requests模块的使用
发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,通过Python中的requests模块也可以来发送HTTP请求,接收HTTP响应,从而实现一些更加灵活的操作。requests是第三方库,不过在Kali中已经自带了该模块。Python3和Pytho
千家信息网最后更新 2025年02月07日HTTP协议(9)Python requests模块的使用
通过Python中的requests模块也可以来发送HTTP请求,接收HTTP响应,从而实现一些更加灵活的操作。
requests是第三方库,不过在Kali中已经自带了该模块。Python3和Python2的用法稍微有些差别,这里先以Python2为例。
root@kali:~# python
Python 2.7.15 (default, Jul 28 2018, 11:29:29) [GCC 8.1.0] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> >>> import requests
下面以之前做过的Bugku中的Get和Post方法两道题目为例,来介绍requests模块的用法。
1.Get请求
利用requests模块中的get方法,向目标url发送Get请求,将结果赋值给变量r1,直接查看r1的值,将显示状态码。查看text属性可以获得HTTP响应正文。通过print()函数输出,可以解析其中的换行符。
>>> r1=requests.get(url='http://123.206.87.240:8002/get/')>>> r1>>> r1.textu"$what=$_GET['what'];
\r\necho $what;
\r\nif($what=='flag')
\r\necho 'flag{****}';
\r\n\r\n\r\n">>> print(r1.text)$what=$_GET['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';
下面发送带参数的Get请求,参数要以字典的形式表示:
>>> r1=requests.get(url='http://123.206.87.240:8002/get/',params={'what':'flag'})>>> print(r1.text)$what=$_GET['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';
flagflag{bugku_get_su8kej2en}
2.Post请求
仍是向目标url发送Post请求,并将结果存储在变量r2中:
>>> r2=requests.post(url='http://123.206.87.240:8002/post/')>>> print(r2.text)$what=$_POST['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';
发送带参数的Post请求:
>>> r2=requests.post(url='http://123.206.87.240:8002/post/',data={'what':'flag'})>>> print(r2.text)$what=$_POST['what'];
echo $what;
if($what=='flag')
echo 'flag{****}';
flagflag{bugku_get_ssseint67se}
3.查看报文头
查看headers属性可以获得响应头,可以看到响应头中的信息是以字典的形式存放:
>>> r1.headers{'Content-Encoding': 'gzip', 'Transfer-Encoding': 'chunked', 'Keep-Alive': 'timeout=60', 'Server': 'nginx', 'Connection': 'keep-alive', 'Date': 'Tue, 04 Dec 2018 23:12:33 GMT', 'Content-Type': 'text/html'}
通过for循环对字典中的键进行遍历:
>>> for key in r1.headers:... print(key)... ServerDateContent-TypeTransfer-EncodingConnectionKeep-AliveContent-Encoding
遍历键和值:
>>> for key in r1.headers:... print(key,r1.headers[key])... ('Server', 'nginx')('Date', 'Tue, 04 Dec 2018 23:12:33 GMT')('Content-Type', 'text/html')('Transfer-Encoding', 'chunked')('Connection', 'keep-alive')('Keep-Alive', 'timeout=60')('Content-Encoding', 'gzip')
查看指定的键值:
>>> r1.headers['Server']'nginx'
查看request.headers属性可以获得请求头:
>>> r1.request.headers{'Connection': 'keep-alive', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': 'python-requests/2.18.4'}
模块
参数
字典
属性
变量
形式
方法
目标
结果
信息
函数
差别
报文
换行符
正文
状态
第三方
题目
并将
存储
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
渝中区企业网络技术服务订制价格
安徽同徽网络技术有限公司
软件开发的著作权归属
服务器安全防护页面
计算机网络技术ip地址知识
区块链服务器怎么建立
dna打拐数据库保存多久
网络安全和心理健康黑板报
数据库 封装成api
残联网络安全宣传
网络安全产业发展助推器
想定数据库
筑牢网络安全新闻
关闭诺基亚备份服务器
阿里软件开发校招面试
腾讯云3个服务器管理
网络锁服务器错误什么意思
ft2000服务器配置管理
网络安全系统等级怎么定级
黄石多功能软件开发口碑推荐
网络安全工程师 教程
网络安全宣传概念股
学习通计算机网络技术答案
收费打印服务器
软件开发企业劳务成本核算
南京飞铭哲网络技术
黄浦区系统软件开发定做价格
数据库er图实验总结
数据库执行函数吗
申通数据库启动