使用Chrome 60和Selenium处理所需的身份验证

时间:2017-09-07 18:57:12

标签: python google-chrome selenium selenium-webdriver selenium-chromedriver

我的问题:

目前我需要打开一个网站,我需要在Chrome验证窗口中放置用户和密码,但我尝试了我在互联网上找到的唯一替代方案,但没有成功

enter image description here

我试过了:

https://myuser:mypassword@mysite.com

但这并没有解决,因为在这种格式下网站没有打开,更不用使用网址中的凭据进行身份验证

我的筹码:

Python 3 + Selenium 3.3.3 + Chrome 60

2 个答案:

答案 0 :(得分:0)

关于python的Idk但是在c#中你可以按如下方式处理它;

var alert = driver.SwitchTo().Alert();
alert.SetAuthenticationCredentials("username", "password");
alert.Accept();

答案 1 :(得分:-1)

您可能需要使用插件,就像我必须这样。 这个question/answer详细介绍了我如何解决Chromium / Chrome中的问题...

解决方案:

这是在python 2.7 中实现的 但是在3.X

中使它起作用不应该有太大的区别

您将需要使用浏览器扩展程序。 我的解决方案是针对铬构建的,但对于Firefox和可能边缘,它应该几乎没有变化。

首先,您需要为您的浏览器提供2个API:

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

如果您将Native Messaging Host设置为发送格式正确的JSON字符串,则只需轮询一次。这意味着您可以使用runtime.sendNativeMessage()一次通话,并确保您的凭据可以使用。双关语。

下一步,我们需要了解我们应该如何处理webRequest.onAuthRequired事件。

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

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

变更:

我将调用我的函数provideCredentials,因为我是一个很大的盗窃者并且使用了this来源的示例。寻找异步版本。

示例代码从storage.local ...

获取凭据
chrome.storage.local.get(null, gotCredentials);

我们不希望这样。不。

我们希望通过一次调用sendNativeMessage获取凭据,以便我们更改该行。

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

这就是全部。认真。只要你的主人玩得好,这就是最大的秘密。我甚至不会告诉你我需要多长时间才能找到它!

链接:

我的问题与有用的链接:

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