Python HTTP 身份验证


身份验证是确定请求是否来自具有使用系统所需权限的有效用户的过程。在计算机网络的世界中,这是一个非常重要的要求,因为许多系统保持相互交互,并且需要适当的机制来确保这些程序之间只发生有效的交互。

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

安装请求


我们安装了运行身份验证程序所需的名为 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 所需的参数。正如我们所见,请求模块能够处理涉及密钥和令牌的更复杂的身份验证机制,而不仅仅是用户名和密码机制。

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 参数值,你将获得成功的响应。