您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
10/19/2021, 3:22:51 PM
// ==UserScript== // @name automatic_insert_totp_code // @namespace Violentmonkey Scripts // @match https://access.ynu.edu.cn/shterm/login?tokenRequest // @grant none // @version 0.2.2 // @author liudonghua123 // @license MIT // @description 10/19/2021, 3:22:51 PM // ==/UserScript== // https://stackoverflow.com/questions/5132488/how-can-i-insert-a-script-into-html-head-dynamically-using-javascript const dynamicAddScript = (url) => { return new Promise(function(resolve, reject){ const script = document.createElement('script'); script.onload = resolve; script.onerror = reject; script.src = url; document.head.appendChild(script); }); } function sleep(time){ return new Promise(function(resolve){ setTimeout(resolve, time); }); } // https://github.com/yeojz/otplib //dynamicAddScript('https://unpkg.com/@otplib/preset-browser@^12.0.0/buffer.js'); //dynamicAddScript('https://unpkg.com/@otplib/preset-browser@^12.0.0/index.js'); //window.otplib.totp.generate('EXGVVAJJ4SI2AEEX') // // https://github.com/LanceGin/jsotp // no browser support ? // const totp_secret = 'REPLACE_YOUR_TOTP_SECRET_HERE' // Execute the following js code to config the totp secret // localStorage.secret = 'REPLACE_YOUR_TOTP_SECRET_HERE' (async function process(secret) { // https://github.com/hectorm/otpauth // // ERR_CONNECTION_RESET // await dynamicAddScript('https://cdn.jsdelivr.net/npm/otpauth/dist/otpauth.umd.min.js'); // // https://unpkg.com/ // You may also use a semver range or a tag instead of a fixed version number, or omit the version/tag entirely to use the latest tag. // await dynamicAddScript('https://unpkg.com/otpauth/dist/otpauth.umd.min.js'); await dynamicAddScript('https://cdnjs.cloudflare.com/ajax/libs/otpauth/9.2.1/otpauth.umd.min.js'); // await sleep(1000); const totp = new OTPAuth.TOTP({ // issuer: 'access.ynu.edu.cn', // label: 'access.ynu.edu.cn', // algorithm: 'SHA1', // digits: 6, // period: 30, secret, // or "OTPAuth.Secret.fromBase32('NB2W45DFOIZA')" }); // Generate a token. let token = totp.generate(); console.info(`totp.generate code ${token}`); document.querySelector('#loginDiv > div > section.login_dynamic_code_wrap > form > div.form-group.form-control.dynamic_code > input[type=password]').value = token; })(localStorage.secret);