python-3.x - Python 请求身份验证
问题描述
我正在尝试通过 Python3 的 Requests 模块与 API 交互,但身份验证不起作用。我可以使用相同的用户名/密码获取完全相同的 url,并通过我的 Firefox 浏览器使用 API。
设置有一些复杂性,所以让我解释一下。
我试图与之交谈的设备使用 https,但我无权访问证书,所以我选择不验证。我能够与仅使用 http 的旧模型的请求进行交互,没问题。
该设备位于本地网络上,但我公司的网络使用的代理会干扰与本地网络上设备的通信,因此我将其关闭。
这是我的代码示例:
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 响应中获得更多信息来帮助我确定如何以服务器可以接受的方式发送凭据?
解决方案
推荐阅读
- go - 当正确显示所有内容时,范围不能迭代 true 吗?
- android - 使用 Cordova Android 项目时,出现错误 - 无法找到带有哈希字符串“android-26”的目标
- java - 检查字符串的字符
- excel - 将多个csv文件批量转换为excel文件的快速方法
- python - Python从多行不同长度的字符求和
- java - 使用 String.format 从右侧获取字符串
- vim - VSCodeVim 键重映射
- reactjs - 在屏幕之间来回切换会导致双导航栏
- javascript - 高精度html5媒体播放器
- javascript - 我正在从表单创建一个 URL 字符串。如何根据我拥有的内容对 URL 进行编码?