您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allows you to retrieve your user token for reference.
// ==UserScript== // @name Get Discord Token // @namespace http://tampermonkey.net/ // @version 0.3 // @description Allows you to retrieve your user token for reference. // @author iHavoc101#6156 // @match https://discordapp.com/activ* // @match https://discordapp.com/channel* // @grant none // @run-at document-start // ==/UserScript== (function () { 'use strict'; // impliment localstorage behavior using cookie //--------------------------------------------- if(!window.localStorage) { Object.defineProperty(window, "localStorage", new(function () { var aKeys = [], oStorage = {}; Object.defineProperty(oStorage, "getItem", { value: function (sKey) { return this[sKey] ? this[sKey] : null; }, writable: false, configurable: false, enumerable: false }); Object.defineProperty(oStorage, "key", { value: function (nKeyId) { return aKeys[nKeyId]; }, writable: false, configurable: false, enumerable: false }); Object.defineProperty(oStorage, "setItem", { value: function (sKey, sValue) { if(!sKey) { return; } document.cookie = escape(sKey) + "=" + escape(sValue) + "; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"; }, writable: false, configurable: false, enumerable: false }); Object.defineProperty(oStorage, "length", { get: function () { return aKeys.length; }, configurable: false, enumerable: false }); Object.defineProperty(oStorage, "removeItem", { value: function (sKey) { if(!sKey) { return; } document.cookie = escape(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; }, writable: false, configurable: false, enumerable: false }); Object.defineProperty(oStorage, "clear", { value: function () { if(!aKeys.length) { return; } for(var sKey in aKeys) { document.cookie = escape(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; } }, writable: false, configurable: false, enumerable: false }); this.get = function () { var iThisIndx; for(var sKey in oStorage) { iThisIndx = aKeys.indexOf(sKey); if(iThisIndx === -1) { oStorage.setItem(sKey, oStorage[sKey]); } else { aKeys.splice(iThisIndx, 1); } delete oStorage[sKey]; } for(aKeys; aKeys.length > 0; aKeys.splice(0, 1)) { oStorage.removeItem(aKeys[0]); } for(var aCouple, iKey, nIdx = 0, aCouples = document.cookie.split(/\s*;\s*/); nIdx < aCouples.length; nIdx++) { aCouple = aCouples[nIdx].split(/\s*=\s*/); if(aCouple.length > 1) { oStorage[iKey = unescape(aCouple[0])] = unescape(aCouple[1]); aKeys.push(iKey); } } return oStorage; }; this.configurable = false; this.enumerable = true; })()); } //--------------------------------------------------- var userToken = localStorage.getItem('token'); var warn = "Allowing anyone to see your token can result in them gaining access to your in-game usernames, do not post this to someone you who you do not trust to handle your game usernames.\n\n\n\n If you do not understand this, press 'Cancel'." // show warning, if accepted show token document.addEventListener('readystatechange', event => { if(event.target.readyState === "interactive") {} else if(event.target.readyState === "complete") { setTimeout(function () { if(confirm(warn)) { prompt("Your token:", userToken) } }, 3000); } }); // prevent pasting token into discord document.addEventListener('paste', function (e) { if(e.clipboardData.getData('text/plain') == userToken) { // clear clipboard e.clipboardData.setData('text/plain', 'do not post your token here'); // prevent the default paste action e.preventDefault(); // prevent pasting token, paste warning instead var pasteToken = new ClipboardEvent('paste'); pasteToken.clipboardData.items.add('do not post your token here', 'text/plain'); document.dispatchEvent(pasteToken); // put token back into clipboard to allow pasting outside discord e.clipboardData.setData('text/plain', userToken); } }); })();