Loading

requests库的初级学习

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则是请求查询数据,就像在数据库中查询表

参考文章
Requests 2.10.0文档
浅谈HTTP中Get与Post的区别

posted @ 2017-04-12 22:07  bay1  阅读(136)  评论(0编辑  收藏  举报