python 实现 windows 身份验证登录
最近在打算写个工具去获取车辆的停车信息,以提醒自己及时地挪车。
常规地讲,需要先登录内网系统查看,内网在域里,使用了单点登录和 winodws 身份验证机制。Python 里大家使用的比较多的是 requests 库,但是它不支持这样的登录。
我们就需要别的库来帮忙了,经过一番搜索,发现 requests_ntlm 满足要求。
import requests
from requests_ntlm import HttpNtlmAuth
response = requests.get(url, auth=HttpNtlmAuth(“name”, “password”))
经过实际验证,这个库会有2次的401错误请求。
顺便也搜索了下如何使用 .Net 来获取,看起来更简单:
string url = “http://adm.xxxx.com/Biz/ParkingCarOverTime/List_Employee.aspx”;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.PreAuthenticate = true;
NetworkCredential credential = new NetworkCredential(“name”, “password”);
request.Credentials = credential;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Console.WriteLine($”Authentication successful {response.StatusCode}”);
StreamReader sr = new StreamReader(response.GetResponseStream());
Console.WriteLine(sr.ReadToEnd());
不要问细节,问就是使用 PreAuthenticate 属性