资讯专栏INFORMATION COLUMN

selenium中BasicAuth认证弹框处理

89542767 / 740人阅读

 小编写这篇文章的主要目的,是给大家做一个介绍,介绍关于在python selenium中,如果出现了BasicAuth认证弹框,那么,我们后续应该要怎么进场处理呢?下面就给大家详细解答下。

 

  一、什么是BasicAuth

 

  两个不认识的见面:

 

  假如说张三和李四见面了,于是张三向李四发出了诚挚的邀请:李四,国庆来上海玩吧,我请你吃小龙虾!本来李四想先视频一下到时候好认人,但张三说那样就没有惊喜感了。于是两人就采取了最原始的认证方式:对暗号。

 

  没错,这种方式就是HTTP基本认证。

 

  映射到互联网为:

 

  1、客户端:服务器,请把logo.jpg图片返回给我

 

   GET/logo.jpg HTTP/1.1

 

  2、服务器:客户端你好,这个资源在安全区Authorization里,是受限资源,需要基本认证,请带上你的用户名和密码再来

 

   HTTP/1.1 401 Authorization Required
  www-Authenticate:Basic realm="Authorization"

01.png 

  服务器会返回401,告知客户端这个资源需要使用基本认证的方式访问。

 

  我们可以看到在

  www-Authenticate

 

  这个Header里面有两个值,

 

  Basic:说明需要基本认证,

 

  realm:说明客户端需要输入这个安全区的用户名和密码,而不是其他区的。

 

  3、客户端:服务器,我已经按照你的要求,携带了相应的用户名和密码信息了,你看一下。如果客户端是浏览器,那么此时就会弹出一个弹窗,让用户输入用户名和密码。

02.png

  Basic内容为:用户名:密码的base64形式。

 

  例如我的用户名为Shusheng007,密码为ss007。那么我的Basic的内容为Shusheng007:ss007对应的base64编码内容U2h1c2hlbmcwMDcldUZGMUFzczAwNw==,如下所示

 

  GET/logo.jpg HTTP/1.1
  Authorization:Basic U2h1c2hlbmcwMDcldUZGMUFzczAwNw==

04.png

  4、服务器:客户端你好,我已经校验了你的用户名和密码,是正确的,这是你要的资源。

 

 HTTP/1.1 200 OK Content-type:image/jpg...

 

  至此这个HTTP事务就结束了,非常简单的一个认证机制。

 

  二、selenium处理思路

 

  因为非常像弹出框,首先我们想到的思路是alert处理模块。

 

   from selenium import webdriver
  driver=webdriver.Chrome()
  driver.get("http://ip:port/admin.php/index/index")
  driver.switch_to.alert.send_keys("hello")
  input("...")
  driver.quit()

 

  但是代码会报错,提示找不到alert警告框

 

  接下来考虑是不是UI自动化的诟病,要加延迟,安排!

 

  from selenium import webdriver
  import time
  driver=webdriver.Chrome()
  driver.get("http://ip:port/admin.php/index/index")
  time.sleep(5)
  driver.switch_to.alert.send_keys("hello")
  input("...")
  driver.quit()

 

  问题依旧~

 

  接下来思考,当前这个弹框出现后是不能够元素定位的,确定不是HTML,是浏览器的弹框。

 

  接下来就想入非非了,Keys?pyautogui?最后想到HTTP协议是可以携带账号和密码的,但是通常不会这么做。

 

  格式为:http://username:password host:port/path/query parameter

 

  代码试验如下:

 

  from selenium import webdriver
  driver=webdriver.Chrome()
  driver.get("http://username:password ip:port/admin.php")
  input("...")
  driver.quit()

 

  的确跳过授权框,进入到网页登录页面。

06.png


  到此为止,这篇文章,小编就为大家介绍到这里了了,希望可以给各位读者带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/127991.html

相关文章

  • python-eve 认证和授权

    摘要:要使用验证,需要通过一些外部技术例如,向客户发送包含用户和秘密密钥的电子邮件向客户端提供用户和密钥。客户端将使用提供的密钥来签署所有请求。 验证类型 全局验证 要实现安全认证,只需要在Eve实例化的时候传入验证类即可,这样就创建了一个全局的验证类 from eve.auth import BasicAuth class MybasicAuth(BasicAuth): ...

    edagarli 评论0 收藏0
  • 使用Node在服务端调用HTTP-Basic认证的API

    摘要:即便是使用为主作为服务端开发在项目中也会经常用到要去其他的系统调用服务的场景。对于服务端调用的场景加上这个基本认证也会比在前端直接使用这种比较空的更加合适。本文将介绍使用在服务端调用时面对最基本的认证认证的处理方式。 前言 Node作为前后端分离的利器由于它使用JS语法的特殊性,可以使得前端更好的利用Node来作为中间层十分方便得调用后台提供的黑盒API。即便是使用Node为主作为服务...

    lwx12525 评论0 收藏0
  • Python3+selenium3的web端UI测试:控制窗口大小、弹窗、多窗口切换处理方法(3)

    摘要:自己犯下的低级错误后面不可加括号,因为是属性,不是方法方法才用调用。 1、测试的时候一般调用的浏览器窗口都不是全屏的,为了不影响体验我们需要将窗口最大化 解决的方案: showImg(https://segmentfault.com/img/bV7p2M?w=448&h=270); 按照自己的意愿设置窗口大小(注意:其中数字大小为像素点) showImg(https://segment...

    aisuhua 评论0 收藏0
  • Pyramid内建基础认证

    摘要:原文地址在中实际上是提供了基础认证的我们可以通过如下的方式进行导入而在中将安全系统拆分为认证和权限。这里我们来看下最简单的基础认证。如果是自定义认证类我们是可以在失败的时候返回的对于系统内建的基础认证类我们在回调时只能返回。 原文地址: http://52sox.com/pyramid-basi... 在Pyramid中实际上是提供了基础认证的,我们可以通过如下的方式进行导入: fro...

    LeanCloud 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<