如何用selenium、requests库实现Windows认证登录?

2019年11月22日 338点热度 0人点赞 0条评论

最近在搞单位的项目,实现python自动化,结果在第一步就把我给拒之门外。


查资料问大佬,问我们开发人员,从周一折腾到周五才搞定了。


接下给大家分享一下:


项目背景:我们系统是基于Windows平台实现的,登录方式为Windows身份认证


1

Web端登录方式,selenium模块实现


原来想用selenium实现,web端可不可以用WinSpy先定位在使用pywin32实现呢,尝试一下发现,WinSpy这个工具根本定位不到我的登录窗口,整个黑色的定位框无法定位登录弹窗。


网上说的Autoit这种方式估计和这个类似,都是操作Windows窗口,咱也不会,没研究明白.


如图:


图片


中间还想过使用requests库请求,获取cookie(就是下面的第二中方法)的方式来实现.


requests库发起请求,返回请求头中的Set-Cookie,利用Set-Cookie中的sessionid以及其他的必填参数来实现Windows身份认证。


selenium中的webdriver发起请求时,将sessionid等一系列的参数带上,使用这种方法来实现Windows认证.


可是还是不行,直接报错,说是无效的cookie域,具体报错信息如下:


图片

 

web这种方式更是奇葩,一遍一遍的翻阅着百度、必应等搜索网站,期间我的同学L姐一直陪伴着我,帮助我解决问题,包括执行的步骤,截图、录像都用上了,最后的最后终于是搞定了.


接下来给大家说一下,以后有同学遇到Windows身份认证了,可以使用这种方式进行登录认证。


其实很简单的原理,也看到过有帖子再说这种方法,就是将用户名和密码写到url中,可是当时我没有成功,关键在于特殊字符。


语法为:http://username:password@url


实现代码如下,举个栗子:

图片

这里千万注意,如果你的username,password里边含有特殊字符。


如:!@#¥%……&*等等,一定要转换为UrlEncode格式,不然肯定登录不成功,一把血泪史呀


在这里特别感谢我L姐,没有她我也解决不了这个问题


提供一个转码的网址:


https://tool.chinaz.com/tools/urlencode.aspx


例如:“admin@1234”这个字符串,转码后为:


图片

2

采用Python中的requests库实现Windows身份认证登录

 

首先安装requests库,requests_ntlm库


图片


 Windows身份登录


图片


举个例子:


登录成功,并且可以得到header请求头,sessionid等等一些信息


图片

本文为柠檬班Python20期麦穗的学员笔记!希望能对你的学习之路有帮助呦~


图片

图片

关注微信公众号

领取100G测试资料

让软件测试学习变得更简单!


图片

53110如何用selenium、requests库实现Windows认证登录?

这个人很懒,什么都没留下

文章评论