다음은 로그인 자격 증명을 가져오고 저장하기위한 프레임 워크입니다. 스크립트는 가장 먼저 실행 한 정보를 묻는 메시지를 표시하고 GM_setValue()
을 사용하여 암호화하여 저장합니다.
Greasemonkey 컨텍스트 메뉴에 두 개의 항목을 추가하여 사용자 이름이나 암호를 변경할 수 있습니다.
// ==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.
스크립트의 로컬 저장소에서 자격 증명을 사용할 수없는 경우 요청하십시오. "귀하의 스크립트를위한 로컬 스토리지"에 관해서는, 나는 Greasemonkey가 제공하는 하나가 있다고 믿고 있습니다. 예를 들어 "greasemonkey 로컬 스토리지"에서이 구글 히트를보십시오 : http://stackoverflow.com/questions/13889995/local-storage-across- domains-using-a-greasemonkey-scripts –
tampermonkey에 대해서 - 아무것도 찾지 못했고'GM_setvalue'를 지원하는지 테스트를하지 못했습니다. –
tampermokey가'GM_setvalue'를 지원한다고 생각합니다. 문제없이 사용했습니다. – TheBronx