Selenium 如何处理 Basic Auth 的输入框的问题?

2020-10-30 17:57:43 +08:00
 black11black

如题,目前有一个比较复杂的登录验证系统,简单来说分为两步,先经过一个比较正常的 web 登录验证( jwt 实现),验证成功后跳转到另外一个域下的网址,弹出一个 Basic Auth 验证。

不论顺序,网页需要经过双重认证之后才能显示内容。

用 Python3 + selenium 搞模拟的话遇到问题就是 Basic Auth 不知道怎么过。

根据网上查找到的内容,只需要将网址改为https://用户名:密码 @www.baidu.com(假设网址是百度)就能自动通过验证而不用弹出框,实测无效。

而后根据网上查找信息说,需要单独设置浏览器的 Preference 才能让上述方法有效,于是我添加了下面的代码

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_experimental_option("prefs" , {'network.http.phishy-userpass-length':255})
driver = webdriver.Chrome(options = options)
driver.get("https://username:pass@www.domain.com")
# ...

结果仍然无效。

有没有带佬看出来啥原因了

820 次点击
所在节点    问与答
3 条回复
royzheng
2020-10-30 20:11:18 +08:00
请在 http headet 里添加 basic auth 信息,具体你用 chrome basic auth 后访问那些页面看头部
elfive
2020-10-30 20:14:28 +08:00
加一个请求头:
WWW-Authenticate: Basic {(username:password)的 Base64 编码值}

https://tools.ietf.org/html/rfc7235
elfive
2020-10-30 20:17:31 +08:00
@elfive #2 写错了,请求头的 key 应该是 Authorization

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/720281

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX