10

我正在尝试使用 urllib3 连接到网页。下面提供了代码。

import urllib3
http=urllib3.PoolManager()
fields={'username':'abc','password':'xyz'}
r=http.request('GET',url,fields)

如果我们假设 url 是一些需要使用用户名和密码进行身份验证的网页,我是否使用正确的代码进行身份验证?

我已经很舒服地使用 urllib2 做到了这一点,但我无法使用 urllib3 做同样的事情。

非常感谢

4

2 回答 2

28

假设您正在尝试执行Basic Authentication,那么您需要将编码的用户名和密码放入Authorization标头中。这是使用urllib3.make_headers帮助器的一种方法:

import urllib3

http = urllib3.PoolManager()
url = '...'
headers = urllib3.make_headers(basic_auth='abc:xyz')
r = http.request('GET', url, headers=headers)
于 2012-07-09T02:56:43.993 回答
-1

下面是一个使用请求库(带有 python 3.6 的 ubuntu)对 API 进行身份验证的工作示例。希望能帮助到你!

import json
import requests
from requests.auth import HTTPBasicAuth

def __init__(self):
    header = {"Content-Type": "application/json"}
    access_url = "https://your.login.url/context_path"
    data = {
    "key_to_send":"value_to_send"
    }

def get_token(self):
    self.data = json.dumps(self.data)
    encoded_data = json.dumps(self.data).encode('utf-8')
    self.response = requests.post(self.access_url, auth=HTTPBasicAuth(self.username, self.password), headers=self.header, data=self.data)
    # Show me what you found
    print(self.response.text)
于 2020-08-17T18:04:30.700 回答