在工作中,我有一个流程需要我根据在内部网网站上找到的信息构建一个表格。到目前为止,我都是手动完成的:我使用网站上的表单获取信息,然后将其输入到访问表中,再上传到我们公司的数据库。我想尝试使用请求库中的 Python get 命令自动执行此过程。但是,get 请求返回了 401 状态代码。显然我需要身份验证才能访问该信息。Google Chrome 和 Internet Explorer 似乎都会自动执行该身份验证。但我不太清楚该怎么做。get Response 的 headers 变量表明正在使用的身份验证是“Negotiate, NLTM”。我的问题是,有没有一种简单的方法可以确定 Chrome/Explorer 向服务器提供的凭据?
谢谢
答案1
提供的凭据是登录用户的凭据。密码未被传递。传递的是一个“令牌”,它是根据您登录计算机时获得的信息计算出来的。
https://docs.microsoft.com/en-us/windows/desktop/secauthn/microsoft-ntlm
您说得对,如果您访问的网站位于“受信任”的服务器列表中,IE 和 Chrome 将传递 NTLM 令牌。
如果您希望向服务器进行身份验证,则需要让 python 参与相同的 NTLM 进程。
Google 返回了大量有关 Python 和 NTLM 身份验证的信息。
我建议你考虑去信息来源处寻找更好的解决方案。网站上的信息来自某个地方。你应该尽可能地消除复杂性,直接找到信息来源。也许是文件共享、ftp 站点或类似的东西。如果有人更新网站的布局,你的解决方案可能会失效。去信息来源处寻找可以避免这样的事情。
您可能还会考虑采用不同的身份验证方法,例如评论中所建议的证书、共享密钥或 IP 白名单。