您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Admin panel & hack client for google classroom
// ==UserScript== // @name Classroom Client++ // @namespace StateFarmClient // @version 1.10.457 // @description Admin panel & hack client for google classroom // @author hydroflame521 // @icon https://upload.wikimedia.org/wikipedia/commons/5/59/Google_Classroom_Logo.png // @match *.google.com/* // @license StateFarmTeam // @grant none // @require https://cdnjs.cloudflare.com/ajax/libs/dat-gui/0.6.5/dat.gui.min.js // ==/UserScript== (function() { const addScript = () => { document.title = 'ClassroomClient++'; }; document.body ? addScript() : document.addEventListener("DOMContentLoaded", e => addScript()); })(); (function() { let ping = document.getElementById('ping'); const getPing = ()=>{ try{return parseInt(ping.innerText.toLowerCase().replace('ms', ''))}catch(e){ document.getElementById('ping'); return 40}}; let lastShotSpread = 0; 'use strict'; const oldDefine = Object.defineProperty; Object.defineProperty = function(a,b,c){ if(arguments[1]=="collisionMask" || b == "collisionMask"){ } return oldDefine.apply(this,arguments); } window.players = new Map(); window.myPlayer = null; var push = Array.prototype.push; window.settings = { Version: "v1.10.457", Mail: function() { window.location='https://mail.google.com'; }, Slides: function() { window.location='https://docs.google.com/presentation'; }, Drawings: function() { window.location='https://docs.google.com/drawings'; }, Docs: function () { window.location='https://docs.google.com'; }, YouTube: function() { window.location='https://www.youtube.com'; }, Drive: function() { window.location='https://drive.google.com'; }, Sheets: function() { window.location='https://docs.google.com/spreadsheets'; }, Translate: function() { window.location='https://translate.google.com'; }, Classroom: function() { window.location='https://classroom.google.com'; }, } datgui(); function datgui(){ let gui = new dat.GUI({ autoplace: false, width: 400, height: 12 * 32 - 1 }); // Settings let guiSettings = gui.addFolder('ClassroomClient++ v1'); guiSettings.add(window.settings, 'Version').onChange(); guiSettings.open(); guiSettings = gui.addFolder('Google Links'); guiSettings.add(window.settings, 'Mail').onChange((e)=>{}); guiSettings.add(window.settings, 'Slides').onChange((e)=>{}); guiSettings.add(window.settings, 'YouTube').onChange((e)=>{}); guiSettings.add(window.settings, 'Drawings').onChange((e)=>{}); guiSettings.add(window.settings, 'Docs').onChange((e)=>{}); guiSettings.add(window.settings, 'Drive').onChange((e)=>{}); guiSettings.add(window.settings, 'Sheets').onChange((e)=>{}); guiSettings.add(window.settings, 'Translate').onChange((e)=>{}); guiSettings.add(window.settings, 'Classroom').onChange((e)=>{}); guiSettings.open(); document.getElementsByClassName("dg ac")[0].style.zIndex=9999; return gui; } })(); 'use strict'; (function(window, e) { if ("object" === typeof exports && "undefined" !== typeof module) { module.exports = e(); } else { if ("function" === typeof define && define.amd) { define(e); } else { window.Stats = e(); } } })(this, function() { var init = function() { function addPanel(panel) { container.appendChild(panel.dom); return panel; } function showPanel(id) { var i = 0; for (; i < container.children.length; i++) { container.children[i].style.display = i === id ? "block" : "none"; } p = id; } var p = 0; var container = document.createElement("div"); container.style.cssText = "position:fixed;bottom:0;left:0;cursor:pointer;opacity:1.0;z-index:10000"; container.addEventListener("click", function(event) { event.preventDefault(); showPanel(++p % container.children.length); }, false); var beginTime = (performance || Date).now(); var prevTime = beginTime; var value = 0; var fpsPanel = addPanel(new init.Panel("FPS", "#0ff", "#002")); var msPanel = addPanel(new init.Panel("PING", "#0f0", "#020")); if (self.performance && self.performance.memory) { var memPanel = addPanel(new init.Panel("MB", "#f08", "#201")); } showPanel(0); return { REVISION : 16, dom : container, addPanel : addPanel, showPanel : showPanel, begin : function() { beginTime = (performance || Date).now(); }, end : function() { value++; var time = (performance || Date).now(); msPanel.update(time - beginTime, 200); if (time > prevTime + 1E3 && (fpsPanel.update(1E3 * value / (time - prevTime), 100), prevTime = time, value = 0, memPanel)) { var m = performance.memory; memPanel.update(m.usedJSHeapSize / 1048576, m.jsHeapSizeLimit / 1048576); } return time; }, update : function() { beginTime = this.end(); }, domElement : container, setMode : showPanel }; }; init.Panel = function(label, container, position) { var t = Infinity; var val = 0; var round = Math.round; var r = round(window.devicePixelRatio || 1); var w = 80 * r; var h = 48 * r; var right = 3 * r; var padding = 2 * r; var x = 3 * r; var y = 15 * r; var width = 74 * r; var height = 30 * r; var elem = document.createElement("canvas"); elem.width = w; elem.height = h; elem.style.cssText = "width:130px;height:68px"; var context = elem.getContext("2d"); context.font = "bold " + 11 * r + "px Helvetica,Arial,sans-serif"; context.textBaseline = "top"; context.fillStyle = position; context.fillRect(0, 0, w, h); context.fillStyle = container; context.fillText(label, right, padding); context.fillRect(x, y, width, height); context.fillStyle = position; context.globalAlpha = .9; context.fillRect(x, y, width, height); return { dom : elem, update : function(i, radius) { t = Math.min(t, i); val = Math.max(val, i); context.fillStyle = position; context.globalAlpha = 1; context.fillRect(0, 0, w, y); context.fillStyle = container; context.fillText(round(i) + " " + label + " (" + round(t) + "-" + round(val) + ")", right, padding); context.drawImage(elem, x + r, y, width - r, height, x, y, width - r, height); context.fillRect(x + width - r, y, r, height); context.fillStyle = position; context.globalAlpha = .9; context.fillRect(x + width - r, y, r, round((1 - i / radius) * height)); } }; }; return init; }); (function() { 'use strict'; const stats = new Stats(); const statsParentNode = document.body; statsParentNode.appendChild(stats.dom); requestAnimationFrame(function loop() { stats.update(); requestAnimationFrame(loop); }); })(); //dark mode theme made by ThaCheeseBun (function() { 'use strict'; var style = ` body { background: #2c2c2c; color: #fff; } /* help btn */ .K2mXPb { color: #fff; fill: #fff; } /* links */ a { color: dodgerblue; } a:visited { color: mediumorchid; } /* top bar */ .joJglb { background: #3c3c3c; border-bottom: none; } .joJglb, .joJglb.kLHn3 { box-shadow: 0px 0px 6px 4px rgba(28, 28, 28, .4); } /* google apps */ .gb_qa svg, .gb_C[aria-expanded="true"] .gb_Ve { fill: #fff; } /* icons */ .IqJTee, .ViCi4, .xSP5ic, .cjq2Db { color: #fff; } /* classroom elems */ .Aopndd { background: #3c3c3c; border-color: #5c5c5c; } .SZ0kZe { border-top: none !important; } .apFsO.onkcGd, .apFsO.onkcGd:visited { color: #fff; } .oBSRLe { color: #fff; } .JPdR6b { background: #3c3c3c; box-shadow: 0px 0px 2px 1px rgba(28, 28, 28, .4); } /* nav menu */ .asQXV { color: #fff; } .dDKhVc, .iLjzDc { color: #afafaf; } .kCtYwe { border-color: #4c4c4c !important; } .ETRkCe { background-color: #3c3c3c !important; } .DShyMc-AaTFfe .Xi8cpb.qs41qe .LlcfK, .bFjUmb-Ysl7Fe, .VUoKZ { background-color: #4c4c4c !important; } .Xi8cpb:hover .LlcfK { background-color: rgba(76, 76, 76, .5) !important; } /* calendar */ .Evt7cb, .Evt7cb:visited, .fKz7Od .TpQm9d { color: #fff !important; } .BOW64 { border-color: #5c5c5c !important; } .wQuPk .JsqLM.N4XV7d { color: #afafaf !important; } .ybOdnf .OA0qNb .LMgvRb[aria-selected="true"] { background-color: rgba(76, 76, 76, .5) !important; } .ncFHed .MocG8c.KKjvXb { background-color: #4c4c4c !important; } /* todo page */ .Xp0OCe, .ncFHed { background-color: #3c3c3c !important; } .Xp0OCe { border: none !important; } .HZ3kWc, .WOPwXe, .gJk24c, .asQXV-FGzYL { color: #fff; } .MHxtic:not(:last-child), .LKqFXc { border-color: #4c4c4c !important; } .MHxtic:hover { box-shadow: none !important; background-color: #4c4c4c; } /* class page */ .d4Fe0d { background-color: #3c3c3c !important; border-color: #4c4c4c !important; } .EZrbnd, .A6dC2c, .O98Lj, .rpo4wf, .tLDEHd, .cSyPgb, .wZTANe .J1raN:hover, .udxSmc, .lziZub, .lziZub:visited { color: #fff !important; } .sdDCme, .K6Ovqd, .T8rTjd, .Lzdwhd-BrZSOd, .onkcGd, .onkcGd:visited, .wZTANe .J1raN { color: #ccc; } .VnOHwf-Tvm9db, .BEAGS:not(.RDPZE), .VnOHwf-Wvd9Cc, .CJXzee a:active, .CJXzee a:focus, .CJXzee a:hover, .sdDCme, .K6Ovqd, .vnnr5e .snByac, .vnnr5e .Aworge, .XpxsVb .Aworge, .UQuaGc, .wCDkmf, .ksaOtd { color: #fff !important; } .MymH0d:hover .VBEdtc-Wvd9Cc, .l3F1ye:not(.RDPZE), .IMvYId, .IMvYId:visited, .nRLOzd:hover, .nRLOzd:hover *, .O98Lj, .Lzdwhd-BrZSOd { color: #ccc !important; } .GWZ7yf, .hgjBDc, .vnnr5e .CIy9F, .qk0lee:focus::after { background-color: #3c3c3c !important; box-shadow: none !important; } .vnnr5e .I9OJHe { background-color: #3c3c3c !important; } .ndcsBf.cjzpkc-Wvd9Cc { border-color: #5c5c5c; } .Y5FYJe.RDPZE { fill: #ccc; color: #ccc; } .OZ6W0d:not(.RDPZE), .l3F1ye:not(.RDPZE) .TpQm9d, .wwnMtb:not(.RDPZE) { fill: #fff !important; color: #fff !important; } .ZoT1D:hover.idtp4e, .tUJKGd:not(.xp2dJ):not(.rZXyy):hover .idtp4e, .tUJKGd:not(.xp2dJ).ndcsBf .idtp4e, .V8apv, .P3W0Dd-Ysl7Fe:focus { background-color: #4c4c4c !important; } .Niache, .QTD2uf { border-color: #3c3c3c !important; } .UISY8d-Ysl7Fe:hover { background-color: #3c3c3c !important; color: #ccc; } .eumXzf:after { border-color: #fff !important; } .tUJKGd:not(:first-child), .ySjuvd .eqqrO, .s2g3Xd, .oleV8d, .ZNE4y, .PeGHgb.Q8U8uc .Ono85c+.oh9CFb, .O9YpHb, .u73Apc, .d6CWTd { border-color: #4c4c4c !important; } .lXuxY { -webkit-box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.75); -moz-box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.75); box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.75) } .BEAGS, .P02DYb, .ycbm1d { border-color: #4c4c4c !important; } .Y5sE8d:not(.RDPZE) { background-color: #2c2c2c !important; } .Y5sE8d:not(.RDPZE):hover { box-shadow: none !important; } .ksaOtd { color: #1e8e3e; } .uO32ac { border-color: #5c5c5c !important; } .uQ3ESd { background-color: #3c3c3c !important; } /* dialog */ .iph-dialog { background-color: #4c4c4c !important; } .iph-dialog-title, .iph-dialog-content { color: #fff !important; } /* join classroom */ .gKkZCe, .D3oBEe .n9IS1:before, .AeAAkf { border-color: #4c4c4c; } .D3oBEe .qTs5Xc { background-color: #3c3c3c; } .qTs5Xc, .poFWNe { color: #fff; } .I7OXgf.ZEeHrd, .NZ9wdc, .i5sehe, .kox42c { background-color: #2c2c2c !important; }`; var elem = document.createElement('style'); elem.innerText = style; document.head.appendChild(elem); })();