Python和Selenium的解决方法:根据activedirectory进行身份验证

2024-05-15 20:42:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python(2.7)和Selenium(3.4.3)通过geckodriver(0.19.0)驱动Firefox(52.2.0 ESR),在CentOS 7机器上自动执行一个过程。
我需要完全无人值守的自动化操作,通过用户凭据;不允许存储和非法侵入。
其中一个戏剧性的现象是,进程所需的内部网站位于活动目录域内,而运行“我的自动化”的计算机却不在。我不需要验证用户,只需以不需要人与人交互的方式将凭据传递到网站,也不需要让人在机器上成为本地用户。在

我试过各种组合:

  • [协议]:/[用户,通过]@[url]
  • 在driver.switch_到\u alert()+发送密钥

其中一些似乎只在IE上工作,我无法访问。
我查过图书馆来处理这些,但都没有用。在

我可以将库添加到python中,并且我有sudo访问机器的权限-不能接触身份验证,所以广告集成是不可能的。在

我如何给这个广告网站一个任意用户的凭据,使他们的凭据不发生本地存储,而无需用户交互?在

谢谢你

编辑

我认为类似于一个代理,它可以对用户进行身份验证,然后保留对selenium的身份验证来完成它的工作。。。 是否有一个简单的LDAP/AD代理?在

编辑2

也许有一个非常简单的方法来说明这一点,我希望传递用户凭据并防止身份验证弹出窗口发生。在


Tags: 用户机器身份验证编辑代理网站过程selenium
1条回答
网友
1楼 · 发布于 2024-05-15 20:42:19

找到的解决方案:

我需要使用浏览器扩展。 我的解决方案是为chromium构建的,但是对于Firefox和也许是edge,它的端口应该几乎没有变化。在

首先,首先,您需要2个API可用于您的浏览器:

虽然这两个浏览器API非常相似,但它们确实有一些显著的区别——比如Chrome的实现缺少Promises。在

如果将本机消息传递主机设置为发送格式正确的JSON字符串,则只需轮询一次。这意味着您可以使用对runtime.sendNativeMessage()的单个调用,并确保您的凭据是可削减的。双关语。在

接下来,我们需要看看我们应该如何处理webRequest.onAuthRequired事件。在

因为我在Chromium工作,所以我需要使用promise-less-chromeapi。在

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

变化:

我将调用我的函数provideCredentials,因为我是一个大的stealy窃取者,并使用了来自this源代码的示例。寻找异步版本。在

示例代码从storage.local获取凭据。。。在

^{pr2}$

我们不想那样。不。在

我们希望从对sendNativeMessage的单个调用中获取凭据,因此我们将更改这一行。在

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

这就够了。说真的。只要你的主人表现得很好,这就是最大的秘密。我甚至不会告诉你我花了多长时间才找到它!在

链接:

我的问题和有用的链接:

  • Here-针对Active Directory进行身份验证的解决方法
  • Here-还有一些功能性NM主机的工作代码
  • ^{a9-一些有启发性的承诺

所以这是一个非常重要的问题。在

我还没有实现这个解决方案,但我知道如何实现。。。在

向扩展传递值是第一步-这可以在Chrome和Firefox中完成。查看版本以确保所需的API nativeMessaging在您的版本中确实存在。因为这个原因,我不得不改用铬。在

或者,可以使用存储API将值首先放入浏览器存储中。[编辑:我走这条路不是出于安全考虑]

下一步是使用WebRequestAPI中的onAuthRequired事件。在事件上设置一个侦听器并传入所需的值。在


注意事项:我已经为nativeMessaging API解决方案构建了扩展本身的所有内容,但是让脚本识别数据仍然存在问题。这几乎可以肯定,我的JavaScript技能与使这些api更有意义所需的神秘知识相冲突。。。 我还没有尝试过存储方法,因为它不太安全(在我看来),但它似乎更简单。在

相关问题 更多 >