requests中的认证机制
用户可以通过Session.request
接口传入auth
参数指定用户名和密码。auth
参数可以是(username, password)
的数组;也可以是HTTPBaiscAuth
类似的实例,只要支持调用即可。
|
|
认证信息主要从多个方面来获取
- 通过auth参数指定
- 否则,从URI中获取。(http://username:passwd@www.sina.com)
- 否则,从Session.auth中获取。( 通过session.auth=(username,passwd)设置 )
- 否则,从.netrc中获取
.netrc
requests也支持.netrc
,.netrc
用于记录访问的认证信息,具体的语法可以参考这里,大致语法如下。
machine definitions
认证信息
|
|
macro definitions
定义ftp bash登录后的执行命令
|
|
requests中的redirect机制
当访问www.sina.com
时,会发现requests中缓存了两个地址www.sina.com
与www.sina.com.cn
,因为前一个地址会被重定向到后一个地址上。当我们用curl工具直接访问会发现,该地址返回了301 Moved Permanently
以及Location: http://www.sina.com.cn
。于是requests
会自动对重定向地址再次发起请求。
|
|
重定向后的访问逻辑主要在SessionRedirectMixin
中(具体的请求过程分析参见这里)
|
|
|
|
一般情况下只有指定的方法能够重定向
|
|
根据重定向返回的状态码和访问方法,对重定向地址的访问需要修改访问方法
|
|