python中用分别用selenium、requests库实现Windows认证登录
最近在搞单位的项目,实现python自动化,结果在第一步就把我给拒之门外,查资料问大佬,问我们开发人员,从周一折腾到周五才搞定了
接下给大家分享一下
项目背景:我们系统是基于Windows平台实现的,登录方式为Windows身份认证
一、web端登录方式,selenium模块实现
1、原来想用selenium实现,web端可不可以用WinSpy先定位在使用pywin32实现呢,尝试一下发现,WinSpy这个工具根本定位不到我的登录窗口,整个黑色的定位框无法定位登录弹窗,网上说的Autoit这种方式估计和这个类似,都是操作Windows窗口,咱也不会,没研究明白,如图:

2、中间还想过使用requests库请求,获取cookie(就是下面的第二中方法)的方式来实现,requests库发起请求,返回请求头中的Set-Cookie,利用Set-Cookie中的sessionid以及其他的必填参数来实现Windows身份认证,selenium中的webdriver发起请求时,将sessionid等一系列的参数带上,使用这种方法来实现Windows认证,可是还是不行,直接报错,说是无效的cookie域,具体报错信息如下:

3、web这种方式更是奇葩,耗费了我一个半周的时间,咨询了我们的小简大佬、奔奔大佬依然还是没有搞定,这不是搞我心态嘛,自信心全部被摧毁,一遍一遍的翻阅着百度、必应等搜索网站,期间我的同学L姐一直陪伴着我,帮助我解决问题,包括执行的步骤,截图、录像都用上了,最后的最后终于是搞定了,接下来给大家说一下,以后有同学遇到Windows身份认证了,可以使用这种方式进行登录认证。
其实很简单的原理,也看到过有帖子再说这种方法,就是将用户名和密码写到url中,可是当时我没有成功,关键在于特殊字符。
语法为:http://username:password@url
实现代码如下,举个栗子:
from selenium import webdriver driver = webdriver.Chrome()
url = r"http://d%5cyuaxxx:xxx123@10.2.xx.xx/" # 用户名中含有特殊符号,这是转义后的用户名
driver.get(url)
这里千万注意,如果你的username,password里边含有特殊字符,如:!@#¥%……&*等等,一定要转换为UrlEncode格式,不然肯定登录不成功,一把血泪史呀
在这里特别感谢我L姐,没有她我也解决不了这个问题
提供一个转码的网址:https://tool.chinaz.com/tools/urlencode.aspx
例如:“admin@1234”这个字符串,转码后为:

二、采用python中的requests库实现Windows身份认证登录
首先安装requests库,requests_ntlm库
pip install requests
pip install requests_ntlm
Windows身份登录
import requests
from requests_ntlm import HttpNtlmAuth requests.get("http://xxx.com",auth=HttpNtlmAuth('domain\\username','pwd'))
举个例子:
登录成功,并且可以得到header请求头,sessionid等等一些信息

参考文章:https://www.cnblogs.com/xbzhu/p/7743584.html
python中用分别用selenium、requests库实现Windows认证登录的更多相关文章
- python爬虫学习,使用requests库来实现模拟登录4399小游戏网站。
1.首先分析请求,打开4399网站. 右键检查元素或者F12打开开发者工具.然后找到network选项, 这里最好勾选perserve log 选项,用来保存请求日志.这时我们来先用我们的账号密码登陆 ...
- (转)Python爬虫利器一之Requests库的用法
官方文档 以下内容大多来自于官方文档,本文进行了一些修改和总结.要了解更多可以参考 官方文档 安装 利用 pip 安装 $ pip install requests 或者利用 easy_install ...
- Python爬虫利器一之Requests库的用法
前言 之前我们用了 urllib 库,这个作为入门的工具还是不错的,对了解一些爬虫的基本理念,掌握爬虫爬取的流程有所帮助.入门之后,我们就需要学习一些更加高级的内容和工具来方便我们的爬取.那么这一节来 ...
- python WEB接口自动化测试之requests库详解
由于web接口自动化测试需要用到python的第三方库--requests库,运用requests库可以模拟发送http请求,再结合unittest测试框架,就能完成web接口自动化测试. 所以笔者今 ...
- Python nose单元测试框架结合requests库进行web接口测试
[本文出自天外归云的博客园] 之前写过一篇关于nose使用方法的博客.最近在做一元乐购产品的接口测试,结合着python的requests库可以很方便的进行web接口测试并生成测试结果.接口测试脚本示 ...
- python爬虫入门三:requests库
urllib库在很多时候都比较繁琐,比如处理Cookies.因此,我们选择学习另一个更为简单易用的HTTP库:Requests. requests官方文档 1. 什么是Requests Request ...
- 【python接口自动化】- 使用requests库发送http请求
前言:什么是Requests ?Requests 是⽤Python语⾔编写,基于urllib,采⽤Apache2 Licensed开源协议的 HTTP 库.它⽐ urllib 更加⽅便,可以节约我们⼤ ...
- 【Python爬虫】爬虫利器 requests 库小结
requests库 Requests 是一个 Python 的 HTTP 客户端库. 支持许多 HTTP 特性,可以非常方便地进行网页请求.网页分析和处理网页资源,拥有许多强大的功能. 本文主要介绍 ...
- python爬虫(6)--Requests库的用法
1.安装 利用pip来安装reques库,进入pip的下载位置,打开cmd,默认地址为 C:\Python27\Scripts 可以看到文件中有pip.exe,直接在上面输入cmd回车,进入命令行界面 ...
随机推荐
- c++ c的拓展
C++对c的拓展之, 引用和const关键字 bool类型关键字 C++中的布尔类型 C++在C语言的基本类型系统之上增加了bool C++中的bool可取的值只有true和false 理论上bool ...
- 查看ISTIO-CITADEL的证书信息
进行任何一个POD,查看/etc/certs目录,即可知道证书信息. kubectl exec -it reviews-v1-fd6c96c74-wptxg -c istio-proxy bash l ...
- python测试开发django-72.删除表后如何重新生成表
前言 在使用ORM建表的时候,由于需要对数据库表的重新设计,需要删除原表,并通过Django的ORM功能重新同步表. 删除表之后,发现用 makemigrations 和 migrate 无法生成新的 ...
- linux虚拟机获取不到ip的解决方法 --
问题描述: 在win10操作系统上,安装了centos7 虚拟机,安装后,用wifi网络可以获取ip,但是切换到手机热点或有线网络就获取不到ip 解决办法: 按照一般的修改ONBOOT =yes, 然 ...
- Linux下使用cx_Oracle的一些配置
在安装完成cx_Oracle后,import cx_Oracle时报错,首先查看.bash_profile文件中环境变量配置 # .bash_profile # Get the aliases an ...
- 什么是rpc及应用场景?
你编过程序吧?你程序里有函数或方法间的调用吧? 比如你写了两个函数fa和fb,在fa里肯定可以调用fb,这个可以理解吧?好了,铺垫完了.接下来入正题: 别人写了个程序,程序里有个函数rf,而且这个程序 ...
- ToDoList--HttpMediaTypeNotSupportedException
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-url ...
- Anaconda3(2)Anaconda3中安装TensorFlow
https://zhuanlan.zhihu.com/p/34730661 1. 安装anaconda3:自行下载.安装[注意版本] (可参考引用链接) 2. 搭建TensorFlow环境 cuda1 ...
- Pandas | 05 基本功能
到目前为止,我们了解了三种Pandas数据结构以及如何创建它们.接下来将主要关注数据帧(DataFrame)对象,因为它在实时数据处理中非常重要,并且还讨论其他数据结构. 一.系列基本功能 编号 属性 ...
- 用!htrace调试句柄泄漏的一般步骤
Windbg调试器的!htrace扩展对于调试泄漏处理非常方便.该过程基本上可归结为以下简单步骤: 启用跟踪 拍张快照 情景分析 显示差异 在第四步!htrace将在最后一个快照之后显示所有额外打开的 ...