gpt4 book ai didi

javascript - ESXi Web 客户端自动填充凭据

转载 作者:行者123 更新时间:2023-11-30 21:00:31 25 4
gpt4 key购买 nike

我正在尝试编写一个 greasemonkey 脚本,该脚本可以使用凭据自动填充 ESXi 登录网页。以下代码填充输入字段并启用提交按钮:

// ==UserScript==
// @name ESXi autofill credentials
// @namespace https://esx_address/ui/*
// @version 0.1
// @description Autofills user and password inputs
// @author Mirek
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @match https://esx_address/ui/*
// @grant none
// ==/UserScript==

try {
waitForKeyElements ("#password", function(jNode) {jNode.val("password");});
waitForKeyElements ("#username", function(jNode) {jNode.val("user");});
waitForKeyElements ("#submit", function(jNode) {jNode.prop("disabled", false);});
} catch(err) {
console.log("Something went wrong: " + err.message);
}

不幸的是,在我点击提交按钮后,我看到 Cannot complete login due to an incorrect user name or password. 即使凭证是正确的。

问题可能与启用提交按钮有关。一旦用户在用户名字段中键入内容,登录页面就会启用它。不幸的是,该脚本不会触发此行为。我发现启用脚本后,当我转到登录页面并重新输入用户名和密码字段的最后一个字母时,登录成功。

如何以触发提交按钮打开的方式填写输入字段?

最佳答案

这是一个令人讨厌的最糟糕的做法1,通常需要您欺骗用户事件。

  1. 所需内容的详细信息是特定于站点/应用程序的(而且我不会很快使用 esxi)。
    有时您只需要发送一个 change 事件。有时您需要伪造整个鼠标输入、按下/按下/向上键、鼠标移出、模糊状态机——通常在关键步骤之间有时间延迟和/或状态检查。
    请参阅下面的中级示例代码。
  2. 一些网站,例如 Patreon,特别令人费解。
  3. 理论上,网站可以完全阻止此操作,因为用户脚本无法创建可信 事件——尤其是键盘事件。
  4. 无论如何,请勿将帐户凭据放入用户脚本!
    不要相信我的话,查一下...
    至少使用 an encrypted framework .

聪明的做法是使用密码管理器。例如,KeePass '“双 channel 自动类型混淆”击败了大多数这些 cr*ppy 登录。 KeePass 是开源的。


如果您不使用好的密码管理器,则需要种类代码示例。
这适用于我本地的超市。 对于像许多银行这样的更困难的网站来说,这还不够。它可能不适用于任何其他网站。参见上面的 #1。

function loginSite () {
//--- Set username and password, from decrypted values. ---
$("div.input_box_div #userId").attr ('value', usr);
$("div.input_box_div #password").attr ('value', pword);

//--- New style login page, approx 10/28/16...
$('#keepMeSignedIn').prop ('checked', true);
$("#input-email").attr ('value', usr);
$("#password-password").attr ('value', pword);
$("#show-password-checkbox")[0].click (); //-- This is needed for blur hack!!!?!?!

setTimeout (function () {
changeAndBlur ("#input-email");
changeAndBlur ("#input-password");
}, 400);

waitForKeyElements ("#create-account-btn", clickWhenPrimed, true);
}

function changeAndBlur (jSelector) {
let node = $(jSelector);
if (node.length) {
var evChng = new Event("change");
node[0].dispatchEvent (evChng);
var evBlur = new Event("blur");
node[0].dispatchEvent (evBlur);
}
}

function clickWhenPrimed (jNode) {
if (jNode.css("background-color") == "rgb(228, 23, 32)") {
click_jNode (jNode);
}
else
return true;
}

请注意,对于所有其他网站,我个人使用密码管理器,它可以自动填充我使用的每个网页登录(到目前为止,并进行了一些调整)。


1 此类网站/应用既烦人又危险,因为它们会削弱密码管理器的功能。 NIST has recently disapproved of password manager blocking .因此,向有罪的组织大力投诉,并支持您所在辖区可能必须允许长密码短语和密码管理器的任何未决法律/法规。

关于javascript - ESXi Web 客户端自动填充凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47179900/

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