前言
菜某笔记总结,如有错误请指正。
requests用途
主要是用于发送网络请求
Requests库的主要方法和属性
r=requests.get()
Response Request
对象 对象
r.cookies
#打印cookie
r.content
#常用于图像视频等
以上内容来自2_哔哩哔哩_bilibili
发送get请求
requests.get(url=,headers=,params=,proxies=)
- url:请求url地址
- headers:请求头
- params:传递的参数
- proxies:设置代理,需要设置http和https的字典
返回信息的打印
他会把返回的内容以字符串的形式表现出来
编码形式的转换
encoding是根据请求头里的情况判断编码类型
apparent_encoding是根据响应的内容进行判断编码的类型
因为请求头中有时候是没有写编码的类型的,这时候就会用默认的iso-8859-1
但是这个是不能编码汉语的,但是apparent的根据内容判断,会更准确。
所以当出现了编码错误的情况可以用这个方法改变编码
之后再r.text就可以了。一般常用'utf-8'编码。
状态判断
200代表成功,如果是其他的代表失败(当然不同状态码代表了不同含义)
传递参数
get型是有传参的,传参就需要用到params。
以下为我自己搭建的sql注入靶场
标记处就是只有在传入参数的情况下才会显示的。
令我没想到的是,第一次输入我写成我文件夹的位置了,结果他把我整个靶场的文件夹里里外外包括文件内容给我干出来了。。。。(嗯很强大)
定制请求头
这是原本get型数据包的样子
我们更改他的数据包就可以。。。。。。
于是这个数据包就变成了。。。。。。
嗯,干过网络渗透的都清楚这个有啥用*v*。
这个proxies是设置代理的意思,我这个用的burp抓包去抓这个数据包,一般是可以用一些模块去看发送的数据包,这里只是为了直观,结合我的burp展示。
发送post请求
与get请求差不多
语法:requests.post(url=,headers=,data=,proxies=)
data:发送的post数据
小案例
高级用法
session会话对象维持
用requests.Session方法可以实现发送的每个请求都是用的同一个cookie
代码写法:
post文件的上传
使用files参数
思路:用open的rb二进制模式打开文件,放到字典中。然后再把字典传入files的参数中。
先看用抓包软件抓取的数据包
先随便写个文件上传的数据包看一下files这个参数的对应数据包的位置吧
写出来的数据包是这个样子的
现在每个参数对应写到数据包参数中的位置都清楚了,那么我们开始吧~
上传位置为本地自己搭建的文件上传靶场
写代码如下
写出来的post部分跟他需求一样的
可以看到上传了
文件下载
思路,就是把访问的内容写在文件中就是了
成功
啧,真俊。