首页 > 解决方案 > Python 请求身份验证

问题描述

我正在尝试通过 Python3 的 Requests 模块与 API 交互,但身份验证不起作用。我可以使用相同的用户名/密码获取完全相同的 url,并通过我的 Firefox 浏览器使用 API。

设置有一些复杂性,所以让我解释一下。

  1. 我试图与之交谈的设备使用 https,但我无权访问证书,所以我选择不验证。我能够与仅使用 http 的旧模型的请求进行交互,没问题。

  2. 该设备位于本地网络上,但我公司的网络使用的代理会干扰与本地网络上设备的通信,因此我将其关闭。

这是我的代码示例:

session = requests.Session() 
auth = ('username', 'password')
session.auth = auth 
s.trust_env = False # remove proxies (see 2 above)
response = session.get(
      url='https://mylocalurl/api/',
      params={'apikey' : 'myapikey',
                'req' : 'generalInfo'},
      verify=False # don't verify SSL cert (see 1 above)
)

我的第一个想法是我必须指定发送的凭据的编码,因为我可以在浏览器中使用它们。我试过auth = (b'username', b'password')没有运气。我查看response.content并在第一行找到b'<?xml version="1.0" encoding="iso-8859-1"?>\n了,所以我尝试指定它,auth = ('username'.encode('iso-8859-1'), 'password'.encode('iso-8859-1'))但仍然没有运气。

我的问题是:

标签: python-3.xapipython-requests

解决方案


推荐阅读