requests是一个神奇的库,前天一个校级ctf中也遇到了,可惜那时候还没看。。。
以下是搜索学习的一些记录
最简单的获取某个网页全部内容
import requests
r=requests.get("https://bayi87.github.io")
print (r.text) #打印返回数据
其他HTTP请求类型,都是统一的接口样式
requests.post(“http://httpbin.org/post”) #POST请求
requests.put(“http://httpbin.org/put”) #PUT请求
requests.delete(“http://httpbin.org/delete”) #DELETE请求
requests.head(“http://httpbin.org/get”) #HEAD请求
requests.options(“http://httpbin.org/get”) #OPTIONS请求
传递参数
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://httpbin.org/get", params=payload)
print(r.url)
#r.url=http://httpbin.org/get?key2=value2&key1=value1
PS:假如value1是中文,会被URL编码
定制请求头
# coding:utf-8
import requests
url="http://web.bxsteam.xyz/fast/"
b=requests.get(url)
gain=b.headers['flag']
payload={'key':gain}
r=requests.post(url,data=payload)
print(r.text)
这里用一道简单的ctf为例子,很明显就是将消息头做成dict形式
POST给网址,当然如果你想POST更多东西,可以这样做
payload = {'key1': 'value1', 'key2': 'value2'}
这在发出时会自动生成表单的形式
获取响应头
在上段代码中我们已经使用了这个方法,即:gain=b.headers['flag']|gain=b.headers.get('flag')
这里的字段是不区分大小写的
PS:COOKIES的使用方式和请求头类似
这里简单说一下POST和GET的区别,首先这两个方式都是请求
POST是请求提交数据,表示可能修改了服务器资源
而GET则是请求查询数据,就像在数据库中查询表