gpt4 book ai didi

javascript - 如何通过 native 消息传递 API 将用户凭据传递给 chrome

转载 作者:行者123 更新时间:2023-11-29 23:30:17 24 4
gpt4 key购买 nike

这是一个非常具体的问题...但是如果您从一台不属于 Active Directory 的机器上使用 Selenium 等,并且您被浏览器弹出窗口所挫败,我有一个解决方案你。

我将解释问题并链接到一些资源(以及我的其他问题,其中包含更多链接),这些资源提供了解决方案,然后我将发布我对“编写的”扩展示例所做的更改。


问题:

您正在通过 selenium 或类似的东西进行自动化或测试……突然出现一个授权弹出窗口!但是这个弹出窗口不是 JavaScript,并且您不需要在您正在测试的机器上保存任何凭据。

如何将身份验证凭据传递给浏览器并防止出现弹出窗口...但不使用 keystore 、浏览器存储或 ghasp 文件?

一旦您知道如何传递该数据,您将如何以允许免提身份验证的方式将这些值输入浏览器?

最佳答案

解决方案:

您将需要使用浏览器扩展程序。我的解决方案是为 chromium 构建的,但它应该几乎不变地移植到 Firefox 和 可能 edge。

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

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

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

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

由于我在 Chromium 中工作,我需要使用无 promise 的 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);

这就是全部。严重地。只要您的 Host 表现出色,这就是大 secret 。我什至不会告诉你我花了多长时间才找到它!

链接:

我的问题和有用的链接:

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

关于javascript - 如何通过 native 消息传递 API 将用户凭据传递给 chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47629531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com