栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python和Selenium的变通办法:针对Active Directory进行身份验证

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python和Selenium的变通办法:针对Active Directory进行身份验证

找到解决方案:

我需要使用浏览器扩展。我的解决方案是针对铬制成的,但对于Firefox甚至 可能是 edge,它的端口应几乎保持不变。

首先 ,您需要2个API可供浏览器使用:

  • webRequest.onAuthRequired
    - 谷歌和火狐
  • runtime.nativeMessaging
    - 谷歌和火狐

虽然两种浏览器API都非常相似,但它们确实有一些显着差异-
例如Chrome的实现缺少Promises。

如果将本机消息传递主机设置为发送格式正确的JSON字符串,则只需轮询一次即可。这意味着您可以使用一次调用,

runtime.sendNativeMessage()
并确保您的凭据是可解析的。双关语意。

接下来 ,我们需要查看如何处理

webRequest.onAuthRequired
事件。

由于我在Chromium中工作,因此需要使用无承诺的Chrome API。

chrome.webRequest.onAuthRequired.addListener(  callbackFunctionHere,  {urls:[targetUrls]},  ['asyncBlocking'] // --> this line is important, too. Very.

改变:

provideCredentials
之所以称呼我的函数,是因为我是个大偷窃者,并使用了此示例中的示例。寻找异步版本。

该示例代码从

storage.local
… 获取凭据。

chrome.storage.local.get(null, gotCredentials);

我们不想要那个。不。

我们希望通过一次调用获得凭据,

sendNativeMessage
因此我们将更改这一行。

chrome.runtime.sendNativeMessage(hostName, { text: "Ready" }, gotCredentials);

这就是全部。说真的 只要主持人表现出色,这就是大秘密。我什至不告诉你我花了多长时间找到它!

因此,事实证明这是一个不小的问题。

我还没有实现该解决方案,但是我知道如何到达那里。

将值传递给扩展程序是第一步-可以在Chrome和Firefox中完成。观察版本,以确保所需的API
nativeMessaging实际上存在于您的版本中。因此,我不得不改用铬。

或者,可以使用存储API首先将值放入浏览器存储。[编辑:出于安全考虑,我没有采取这种方式]

接下来是使用webRequest API中的onAuthRequired事件。在事件上设置侦听器,然后传递所需的值。


注意事项: 我已经为nativeMessaging
API解决方案构建了直到扩展本身的所有内容,但是让脚本识别数据仍然存在问题。几乎可以肯定,这是我的Javascript技能与使这些API变得不可思议的奥秘知识发生冲突……我尚未尝试使用存储方法,因为它的安全性较差(在我看来),但它似乎更简单。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/413019.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号