Python web/server 认证

Python web/server authentication

我正在尝试创建一个非常基本的应用程序,它能够连接到托管我的大学作业、成绩等的网络服务器,并在有新内容时通知我。目前我正在尝试掌握请求模块的窍门,但我无法登录,因为服务器使用 this 类型的身份验证,它给我错误 401 unauthorized.

我尝试搜索如何向尝试使用套接字的 Web 服务器进行身份验证,但没有成功。你能帮我看看怎么做吗?

编辑:我正在使用 python 3.4

检查 URL 的响应中的 headers 后,我认为服务器正在尝试使用 NTLM authentication

尝试安装 requests-ntlm(例如使用 pip install requests_ntlm)然后执行此操作:

import requests
from requests_ntlm import HttpNtlmAuth

requests.get('http://moodle.mcast.edu.mt:8085/',
    auth=HttpNtlmAuth('domain\username', 'password'))

他们可能不提供用于授权请求的程序化 API。如果是这种情况,您可以尝试使用 selenium 手动打开浏览器并为您填写详细信息。 Selenium 显然也有处理警告框的功能,虽然我自己没用过。

您需要在套接字请求 header 中附加一个简单的身份验证 header。

示例;

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'))