Hier ist ein Framework zum Abrufen und Speichern von Anmeldedaten. Das Skript fordert beim ersten Durchlauf zur Eingabe der Informationen auf und speichert sie verschlüsselt unter Verwendung von GM_setValue()
.
Es fügt auch zwei Einträge zum Greasemonkey-Kontextmenü hinzu, um den Benutzernamen oder das Passwort ändern zu können.
// ==UserScript==
// @name _Autologin, sensitive info framework
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require http://crypto.stanford.edu/sjcl/sjcl.js
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_registerMenuCommand
// ==/UserScript==
var encKey = GM_getValue ("encKey", "");
var usr = GM_getValue ("lognUsr", "");
var pword = GM_getValue ("lognPwd", "");
if (! encKey) {
encKey = prompt (
'Script key not set for ' + location.hostname + '. Please enter a random string:',
''
);
GM_setValue ("encKey", encKey);
usr = pword = ""; // New key makes prev stored values (if any) unable to decode.
}
usr = decodeOrPrompt (usr, "U-name", "lognUsr");
pword = decodeOrPrompt (pword, "P-word", "lognPwd");
function decodeOrPrompt (targVar, userPrompt, setValVarName) {
if (targVar) {
targVar = unStoreAndDecrypt (targVar);
}
else {
targVar = prompt (
userPrompt + ' not set for ' + location.hostname + '. Please enter it now:',
''
);
GM_setValue (setValVarName, encryptAndStore (targVar));
}
return targVar;
}
function encryptAndStore (clearText) {
return JSON.stringify (sjcl.encrypt (encKey, clearText));
}
function unStoreAndDecrypt (jsonObj) {
return sjcl.decrypt (encKey, JSON.parse (jsonObj));
}
//-- Add menu commands that will allow U and P to be changed.
GM_registerMenuCommand ("Change Username", changeUsername);
GM_registerMenuCommand ("Change Password", changePassword);
function changeUsername() {
promptAndChangeStoredValue (usr, "U-name", "lognUsr");
}
function changePassword() {
promptAndChangeStoredValue (pword, "P-word", "lognPwd");
}
function promptAndChangeStoredValue (targVar, userPrompt, setValVarName) {
targVar = prompt (
'Change ' + userPrompt + ' for ' + location.hostname + ':',
targVar
);
GM_setValue (setValVarName, encryptAndStore (targVar));
}
// ADD YOUR CODE TO SET THE USERNAME AND PASSWORD ON THE LOGIN PAGE, HERE.
Wenn die Anmeldeinformationen nicht im lokalen Speicher für Ihr Skript verfügbar sind, fragen Sie danach. Was den "lokalen Speicher für dein Skript" betrifft, glaube ich, dass es einen von Greasemonkey gibt, siehe zum Beispiel diesen Google-Hit auf "Local Storage": http://stackoverflow.com/questions/13889995/local-storage-across- domains-using-a-fettmonkey-script –
Betreffs tampermonkey - Ich habe nichts gefunden, noch habe ich getestet, ob es 'GM_setvalue' unterstützt –
Ich denke, tampermokey unterstützt' GM_setvalue', ich habe es vorher ohne Probleme verwendet. – TheBronx