Python安全 requests库应用详解

Python安全(一)

学习Python安全过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流。

—— requests库应用详解 ——

一.安装requests库

可以直接使用pip安装,如果电脑上没安装pip,可以到以下网址教程中安装。
Linux:安装教程
Windows:安装教程
MAC OS:直接在终端输入代码:sudo easy_install pip

安装好pip后,我们就可以安装requests库了。
直接输入代码:pip install requests

二.导入requests库

我们首先在Python中导入requests库:

import requests

对于新手来说,我们需要知道requests库有什么功能方法,我们可以dir一下:

printdir(requests))

requests库
在这里我们可以看到requests库的各种方法。
接下来我们就使用几种。

import requests

url="http://www.baidu.com"

r=requests.get(url)

这里使用的是requests库的get方法,相当于我们在浏览器里输入“http://www.baidu.com”这个网址所能获得的的信息。

三.requests库的代理功能

requests库支持代理,支持两种协议,http和https。

proxies = {
	"http":"http://127.0.0.1:8080",
	"https":"http://127.0.0.1:8080"	,	
}

我是直接在本地的8080端口进行测试,并且可以利用burpsuite在8080端口进行监听。
若需要输入账户密码,则可以:

proxies = {
    "http": "http://user:[email protected]:3128/",
}

当进行代理的时候,需要修改原本的代码:

import requests

url="http://www.baidu.com"

proxies = {
	"http":"http://127.0.0.1:8080",
	"https":"http://127.0.0.1:8080"	,	
}

r=requests.get(url,proxies = proxies,verify = false)

这里我们在get方法中添加了参数,proxies参数和verify参数,如果使用的是https认证而本地证书又没有认证,那么需要将verify参数设置为false。当然,如果不进行修改verify,那么代码指令依然可以运行,但是会报错。

四.requests库的方法

import requests

url="http://www.baidu.com"

r=requests.get(url)

print(r)
print(r.status_code)
print(r.text)
print(r.content)
print(r.history)
print(r.request.headers)
print(r.headers)
print(r.request.body)
  1. status_code:返回http状态码。具体状态码含义点击链接查看。
  2. text/content:返回请求网站的源代码和结果,比较推荐使用content,因为text在显示中文的时候,容易显示乱码,而content返回的数据格式其实是二进制格式,然后通过decode()转换为utf-8,这样就解决了乱码的问题.。
  3. history:当请求地网站进行跳转的时候,显示跳转信息,比如跳转次数。若使用content,会显示跳转后的网页的源码或信息。
    如果不想使网页进行跳转,那么可以直接加入参数:
    r=requests.get(url,allow_redirects=False)

allow_redirects参数是询问是否自动跳转。
4. sys.setdefaultencoding:由于linux和windows的基础设置有一些不同,所以有时候需要更改一些设置,比如编码,是为了防止乱码。这个过程需要引入sys,更改系统设置。完整代码如下:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')
  1. encoding:返回当前编码。
    更改编码的代码:
r.encoding = "utf-8"
  1. request.headers:查看请求包的头。
  2. headers:查看响应包的头。
    修改头的代码:
headers = {'user-agent': 'my-aasdasdaspp/0.0.1', 'asd':'hello world!'}
  1. request.body:查看请求参数。
  2. cookies:查看cookies信息。
    修改cookies信息的代码:
cookies = dict(cookies_are='working')
  1. (参数)timeout:设置超时。
    具体代码:
r = requests.get(url, timeout=5)
r = requests.get(url, timeout=None)
  1. (方法)session:使用session。(进行关联请求,自动添加cookies)session的具体原理点击链接查看。
    具体代码(注意conn):
conn = requests.session()
r = conn.get(url)
print r.request.headers
r = conn.get(url)
print r.request.headers
  1. json:将返回值以json的形式展示。json库的具体介绍点击链接查看。
    具体代码:
import requests
import json
 
r = requests.get("http://www.baidu.com/get")
print(type(r.text))
print(r.json())
print(json.loads(r.text))
print(type(r.json()))
  1. (参数)file:文件操作,文件上传。
    具体文件上传的代码:
files = {'file': open('cookie.txt', 'rb')}
response = requests.post("http://httpbin.org/post", files=files)
  1. 请求方法
  • GET: 请求指定的页面信息,并返回实体主体。GET请求将提交的数据放置在HTTP请求协议头中。
    进行get请求的代码:
 url="http://www.baidu.com"
 r=requests.get(url)
  • HEAD: 只请求页面的首部。
  • POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。POST提交的数据则放在实体数据中。
    发送post请求的代码:
 payload = {'name': 'loop', 'age': '12'}
 r = requests.post("http://httpbin.org/post", data=payload)
  • PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
  • DELETE: 请求服务器删除指定的页面。

完整相关代码请点击链接查看。

发布了37 篇原创文章 · 获赞 10 · 访问量 5974

猜你喜欢

转载自blog.csdn.net/qq_44867435/article/details/104350231