技术文章

Requests的基础操作(2)

目录:

1. 3 .2.1 文件/流式上传

2. 3 .2.2 会话维持

3. 3 .2.3 SSL证书验证

4. 3 .2.4 代理设置

5. 3 .2.5 用户身份认证

 

3.2.1 文件/流式上传

 

Requests支持流式上传,这允许你发送大的数据流或文件而无需先把它们读入内存。要使用流式上传,  仅需为你的请求体提供一个类文件对象即可:

 
Requests的基础操作(2)

 

3.2.2 会话维持

 

什么是会话

 

http协议本身是无状态的,为了让请求之间保持状态,有了session和cookie机制。requests也提供了相  应的方法去操纵它们。

 

cookie保存在浏览器端,session保存在服务器端

 

requests中的session对象能够让我们跨http请求保持某些参数,即让同一个session对象发送的请求头  携带某个指定的参数。当然,最常见的应用是它可以让cookie保持在后续的一串请求中。

 

会话的使用方式

 
Requests的基础操作(2)

 

从结果中我们可以看出,第二次请求已经携带上了第一次请求所设置的cookie,即通过session达到了保  持cookie的目的。示例中创建了一个requests.Session()对象,通过该对象来进行http请求操作,该操作 基本类似于requests.request(),可查看python之requests模块-request api进行了解。

 

如何跨请求共用数据

 

由于session让请求之间具有了连贯性,那么,就有了跨请求参数和非跨请求参数的区别。即有时我想让  所有请求均带有某个参数,而有时我只是想让单独的一条请求带上临时的参数。通过下面的例子来了解如何使用

 
Requests的基础操作(2)
 

 

可以得出两条结论:

 

1、session可以为请求方法提供缺省数据,比如第一次请求中的{'x-test':  'true'}就是缺省数据,此时的缺省数据就是跨请求参数。

 

2、方法级别的参数不会被跨请求保持,比如第二次请求时,没有携带headers={'x-test2':  'true'},返回的结果中也没有{'x-test2': 'true'},说明该参数没有在第一次请求后被保持住。

 

3.2.3 SSL证书验证

 

什么是SSL

 

SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为  服务器证书。

 

SSL  证书就是遵守SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。

 

主要作用:

Requests的基础操作(2)

 

如何判定某网站是否安装SSL证书?

如果您能使用https://  来访问某个网站,就表示此网站是部署了SSL证书。一般来讲,如果此网站部署了SSL证书,则在需要加密的页面会自动从 http:// 变为 https://

 

访问SSL证书的网站

Requests的基础操作(2)

 

正常的运行结果:

Requests的基础操作(2)

 

错误的运行结果:

Requests的基础操作(2)

 

关闭证书验证

 

当遇到网站证书错误时,可以通过参数verify=False关闭证书验证

 
Requests的基础操作(2)

 

消除证书警告

 
Requests的基础操作(2)

 

3.2.4代理设置

 

某些时候,比如在进行爬虫爬取时,有时候爬虫会被服务器给屏蔽掉,这时采用的方法主要有降低访问  时间,通过代理ip访问

 
Requests的基础操作(2)

 

3.2.5 用户身份认证

 

许多 web 服务都需要身份认证,并且也有多种不同的认证类型。

许多要求身份认证的web服务都接受 HTTP Basic Auth。这是最简单的一种身份认证,并且 Requests 对这种认证方式的支持是直接开箱即可用。

 

基本用户认证

Requests的基础操作(2)

 

Requests 就提供了一种简写的使用方式

Requests的基础操作(2)

如果认证方法没有收到 auth 参数,Requests 将试图从用户的 netrc 文件中获取 URL 的hostname 需要的认证身份。The netrc file overrides raw HTTP authentication headers set with headers=.

如果找到了 hostname 对应的身份,就会以 HTTP Basic Auth 的形式发送请求。