Python请求身份验证

时间:2019-04-29 20:39:00

标签: python-3.x api python-requests

我正在尝试通过Python3的Requests模块与API交互,但是身份验证无效。我可以使用完全相同的网址和相同的用户名/密码,并通过Firefox浏览器使用API​​。

该设置存在一些并发症,所以让我解释一下。

  1. 我要与之交谈的设备使用https,但是我无权访问证书,因此我选择不进行验证。我可以使用仅使用http的旧模型与Requests进行交互。

  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'))进行指定,但还是没有运气。

我的问题是:

  • API的服务器是LightTPD,我缺少通过Python对此服务器进行身份验证的功能吗?
  • 我是否必须验证我的SSL证书以进行身份​​验证?没道理,但我还是要问。
  • 我是否还能从401响应中获取更多信息,这些信息可以帮助我确定如何以服务器可以接受的方式发送凭据?

0 个答案:

没有答案