Python - HTTP 身份验证

身份验证是识别客户端身份的过程,通常用于确定客户端是否有资格访问资源。 HTTP 协议支持将身份验证作为协商访问安全资源的一种方式。

来自客户端的初始请求通常是匿名请求,不包含任何身份验证信息。 HTTP 服务器应用可以拒绝匿名请求,而同时指示必须进行身份验证。

python 模块名称 requests 具有内置功能,可以调用服务网络应用程序提供的各种 API 以及用户凭据。 这些凭据必须嵌入到调用程序中。 如果 API 验证成功,则发生有效登录。


安装 requests

我们安装名为 requests 的所需 python 模块以运行身份验证程序。

pip install requests

Github 认证

下面我们看到一个简单的身份验证机制,只涉及用户名和密码。 成功响应表示有效登录。

import requests 
r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
print r

当运行上面的程序时,得到以下输出 −



向 Twitter 验证

我们也可以运行一个程序来使用twitter的api,使用下面的代码就可以成功登录。 使用 requests 模块中提供的 OAuth1 方法来处理 Twitter API 所需的参数。 正如我们所看到的,requests 模块能够处理更复杂的身份验证机制,涉及密钥和令牌,而不仅仅是用户名和密码机制。

import requests
from requests_oauthlib import OAuth1

url = 'https://api.twitter.com/1.1/account/verify_credentials.json'
auth = OAuth1('YOUR_APP_KEY', 'YOUR_APP_SECRET',
              'USER_OAUTH_TOKEN', 'USER_OAUTH_TOKEN_SECRET')

requests.get(url, auth=auth)

当运行上面的程序时,得到以下输出 −

{
  "errors": [
    {
      "code": 215,
      "message": "Bad Authentication data."
    }
  ]
}

但是,如果为 OAuth1 参数使用正确的值,您将获得成功的响应。