我正在尝试创建一个非常基本的应用程序,它能够连接到托管我的大学作业,结果等的Web服务器,并在有新事物时通知我。目前我正在尝试获取请求模块的挂起信息,但由于服务器使用this类型的身份验证,所以我无法登录,并且它使我发现了401未经授权的错误。Python网络/服务器身份验证
我试着搜索如何验证Web服务器尝试使用套接字,没有运气。你能帮我找出如何做到这一点?
编辑:我使用Python 3.4
我正在尝试创建一个非常基本的应用程序,它能够连接到托管我的大学作业,结果等的Web服务器,并在有新事物时通知我。目前我正在尝试获取请求模块的挂起信息,但由于服务器使用this类型的身份验证,所以我无法登录,并且它使我发现了401未经授权的错误。Python网络/服务器身份验证
我试着搜索如何验证Web服务器尝试使用套接字,没有运气。你能帮我找出如何做到这一点?
编辑:我使用Python 3.4
在该URL的响应检查头之后,我认为服务器正在尝试使用NTLM authentication。
尝试(与pip install requests_ntlm
例如)安装requests-ntlm
,然后做这个:
import requests
from requests_ntlm import HttpNtlmAuth
requests.get('http://moodle.mcast.edu.mt:8085/',
auth=HttpNtlmAuth('domain\\username', 'password'))
他们可能无法提供与授权请求程序API。如果是这样,您可以尝试使用硒手动打开浏览器并为您填写详细信息。硒显然也处理警报箱,尽管我自己并没有使用它。
我查看了你发布的链接,我认为这不会起作用,因为它是“通过id搜索元素”并按f12查看网站信息不会共享除该框架外的任何元素。 –
是的,你是对的;我没有意识到这是一个弹出框类型的东西(我认为这是一个从截图HTML格式) – DaveBensonPhillips
您需要在套接字请求标头中附加一个简单的身份验证标头。
示例;
import base64
mySocket.send('GET/HTTP/1.1\r\nAuthorization: Basic %s\r\n\r\n' % base64.b64encode('user:pass'))
Python 3x;
import base64
template = 'GET/HTTP/1.1\r\nAuthorization: Basic %s\r\n\r\n'
mySocket.send(bytes(template % base64.b64encode(bytes('user:pass', 'UTF-8')), 'UTF-8'))
我试过,但我仍然得到这个错误TypeError:'str'不支持缓冲区接口。我还将最后一部分更改为base64.b64encode(bytes('u:p',encoding ='utf-8'))仍然出现该错误 –
编辑了初始解决方案并添加了python 3x方式,我刚刚测试过它在我的工作空间,它没有任何类型的错误工作正常。 – L33T
是啊即时通讯仍然在上面。试图了解BrokenPipeError:[Errno 32] Broken Pipe意味着 –
我已经试过了,它与401 –
是否请求'响应http://: @ moodle.mcast.edu.mt:8085'工作? –
Chris
仍会提示登录表单。不登录。 –