【问题标题】:How to handle authentication popup in Firefox with Selenium WebDriver using Java如何使用 Java 处理带有 Selenium WebDriver 的 Firefox 中的身份验证弹出窗口
【发布时间】:2020-03-16 03:21:30
【问题描述】:

我正在尝试创建用于绕过服务器身份验证的扩展,将其安装在 Firefox 浏览器上并在创建驱动程序时传递 .xpi 文件,以便在登录时调用它并绕过服务器身份验证。 在 Firefox 上安装 .xpi 文件时遇到错误。 错误:“无法安装此插件,因为它似乎已损坏”

步骤 1.创建manifest.json文件(代码如下)

{
“name”: “Webrequest API”,
“version”: “1.0”,
“description”: “Extension to handle Authentication window”,
“permissions”: [
“webRequest”,
“webRequestBlocking”,
“”
],
“background”: {
“scripts”: [“webrequest.js”]
},
“manifest_version”: 2
}
  1. 创建 webrequest.js 文件。下面提到的代码。

    var 目标 = “https://sso.viacomcloud.com/”;

    var myCredentials = {
    username: “getestone”,
    password: “V*******”
    }
    
    var pendingRequests = [];
    
    // A request has completed.
    // We can stop worrying about it.
    function completed(requestDetails) {
    console.log(“completed: ” + requestDetails.requestId);
    var index = pendingRequests.indexOf(requestDetails.requestId);
    if (index > -1) {
    pendingRequests.splice(index, 1);
    }
    }
    
    function provideCredentialsSync(requestDetails) {
    // If we have seen this request before, then
    // assume our credentials were bad, and give up.
    if (pendingRequests.indexOf(requestDetails.requestId) != -1) {
    console.log(“bad credentials for: ” + requestDetails.requestId);
    return {cancel:true};
    }
    pendingRequests.push(requestDetails.requestId);
    console.log(“providing credentials for: ” + requestDetails.requestId);
    return {authCredentials: myCredentials};
    }
    
    browser.webRequest.onAuthRequired.addListener(
    provideCredentialsSync,
    {urls: [target]},
    [“blocking”]
    );
    
    browser.webRequest.onCompleted.addListener(
    completed,
    {urls: [target]}
    );
    
  2. 使用 7-zip 文件管理器创建了一个 zip 文件并将该 zip 文件重命名为 Ext.xpi

  3. 在 firefox(版本 70)上打开 about:config 并将 xpiextensionsignrequired 更改为“False”

  4. 在 Firefox 上打开 about:addons。选择“从文件安装扩展”。选择上面第 4 步中创建的 Ext.xpi。

  5. 我收到以下错误:“无法安装此插件,因为它似乎已损坏。”而不是在 Firefox 浏览器上获得安装选项。

请帮忙 @SubjectiveReality

【问题讨论】:

  • 通过服务器认证可以实现非常简单的方法。使用 Firefox 配置文件管理器创建新的浏览器配置文件。使用这个新配置文件启动 Firefox。转到该页面,手动进行服务器身份验证并保存您的凭据。使用来自stackoverflow.com/questions/58609201/… 的代码使用现有浏览器配置文件和保存的凭据加载您的测试。这样,您甚至可以通过导入的证书文件进行证书身份验证,并在 Firefox 选项中设置“始终使用一个证书”。
  • 你能给出正确的 manifest.json 和 webreques.js 文件吗?

标签: javascript authentication firefox firefox-addon add-on


【解决方案1】:

如果您正在寻找快速解决方案,请尝试使用“机器人”类并发送密钥。

机器人 rb= new Robot(); rb.Keypress().....

【讨论】:

  • 欢迎来到 Stackoverflow!我认为这可能不是一个明确的解决方案。请确保您使用 cmets 共享不能为问题提供明确解决方案的信息。这有助于保持 SO 的质量。如果你没有足够的声望,别担心,你会及时赚到的!此外,我们通常希望得到一些解释,说明为什么解决方案会起作用,以便 OP 可以从中学习。也许编辑您的答案以包含它?
猜你喜欢
  • 2014-08-09
  • 1970-01-01
  • 2017-06-26
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多