A few tutorials for things that have helped me with my public school education for the last twelve years.
Tutorial 1: How to host your own proxy
To begin, you need a Replit account. If you don't have one already, go to Replit.com and click on the "Sign up" button at the top right corner of the webpage. You'll be prompted to provide an email address, username, and password. After you've signed up and verified your email, log in to your new account. Next, navigate to the Supernova Proxy Repl that you will be using as your base proxy server. Once on the Supernova page, click on the "Fork" button at the right of the page. This will create a copy of the codebase into your Replit account. "Forking" is a term used in software development which essentially means creating a copy of a particular software project, allowing you to experiment and make changes without affecting the original project. In this case, you're making a copy of the Supernova proxy server so that you can host it yourself. Here's a tutorial on how to fork! In your forked version of the Supernova Repl, click on the 'Run' button at the top of the page. This will initialize the Repl and start your proxy server. Once the Repl has been run, you should see a small window on the right side of the page displaying the output of your Repl. There will be a button at the top of this window that says "Open in a new tab". Click this button to open your proxy server in a new browser tab. That's it! You've set up your own proxy server. You can now go on any website blocked by the school's network or blocked by the spyware extensions they put on your device (GoGuardian, Lanschool, etc).
Tutorial 2: Create a custom bookmarklet
Demo Video here.
Creating a custom bookmarklet is a straightforward process. Here's how you can do it: Copy the code from the bookmarklet you want from the bookmarklets section. Right-click on your browser's bookmarks bar and select "Add Page" or "Add Bookmark." In the "Name" field, enter a name for your bookmarklet. In the "URL" or "Location" field, paste the JavaScript code you copied earlier. Make sure it begins with the "javascript:" protocol. Click "Save" or "Add" to create the bookmarklet. That's it! Your custom bookmarklet is now ready to use. Simply click on it in your bookmarks bar to execute the associated JavaScript code on the current page.
Tutorial 3: Use experimental Chrome features
Demo Video here.
To preface this, this tutorial probably isn't useful for anyone that isn't slightly obsessive about customizing their technology. For those of you that are, tutorial is below: In the address bar of the Chrome browser, type "chrome://flags" (without the quotes) and press Enter. This will take you to the Chrome Flags page. The Chrome Flags page contains various experimental features and settings that are not enabled by default in the stable version of Chrome. These flags allow you to customize and tweak different aspects of Chrome's functionality. I'm obsessed with customizing any piece of technology I get my hands on, and Chromebooks are no exception. Play around with the flags and see what works for you - read the descriptions! I was able to customize my Chromebook to force dark mode, use an experimental new UI design, and changed the color of all blue UI highlighting to pink. See what you can come up with if you're as obsessive with customization as me.
Tutorial 4: Use (Chat)GPT-4 for free at school
To begin, you need a Replit account. If you don't have one already, go to Replit.com and click on the "Sign up" button at the top right corner of the webpage. You'll be prompted to provide an email address, username, and password. After you've signed up and verified your email, log in to your new account. Next, navigate to the GPT4FREE Repl. Once on the GPT4FREE page, click on the "Fork" button at the right of the page. This will create a copy of the codebase into your Replit account. "Forking" is a term used in software development which essentially means creating a copy of a particular software project, allowing you to experiment and make changes without affecting the original project. In this case, you're making a copy of the GPT4FREE server so that you can host it yourself. Here's a tutorial on how to fork! In your forked version of the GPT4FREE Repl, click on the 'Run' button at the top of the page. This will initialize the Repl and start your GPT server. Once the Repl has been run, you should see a small window on the right side of the page displaying the output of your Repl. There will be a button at the top of this window that says "Open in a new tab". Click this button to open your website in a new browser tab. That's it! You've set up your GPT4FREE server. You can now use the premium version of ChatGPT (GPT-4) for free, including at school. Been a game-changer for me with quickly asking questions to ChatGPT without needing to use my phone or disconnect from school WiFi.
Tutorial 5: How to get access to the school account of any/every senior
To preface this, this is basically only possible near the end of the year (when seniors are preparing for graduation). This is actually something I (the primary author of Trojanware) did my senior year. Funny enough, it wasn't actually that difficult and really (really) anyone can do it themselves as long as they know what to look out for. The first thing you'll need to do is wait for the Students --> Seniors page to look like this. Once that is the case, you'll be able to see the following information: Student Seat Row/Column Student ID (which, in most cases, is their email password). This is fantastic and all, but given that it doesn't say who anyone is, this information is actually kind of useless on it's own. So, we have to wait a little bit for these passwords to become viable. Once the school hosts graduation prep for the seniors, they put up a few papers on the wall of the blacktop that borders the pool (which I would take a picture of if you plan to do anything with them). These papers contain the following information: Student First Name/Last Name Student Seat Row/Column With that information, we can now complete the puzzle! Match up the seat to the first name and last name and the corresponding student ID. A student's email format is: (graduating year)(lastname)(firstname)@iusd.org. Just fill in the name blanks, and sign in with the password. Just like that, you have access to any senior's Google account (although it doesn't really matter, since they're graduating shortly after and their Google accounts get permanently deleted ~14 days after gradutation). This was something fun I did that was going to end up as my senior prank (but I didn't go through with it), so maybe take some inspiration and try it yourself!
Tutorial 6: Transcribe all Audio from Assignments
Demo Video here.
To begin, you need a Replit account. If you don't have one already, go to Replit.com and click on the "Sign up" button at the top right corner of the webpage. You'll be prompted to provide an email address, username, and password. After you've signed up and verified your email, log in to your new account. Next, navigate to the OpenAI Whisper Transcriber that you will be using as your base file. Once on the OpenAI Whisper Transcriber page, click on the "Fork" button at the right of the page. This will create a copy of the codebase into your Replit account. "Forking" is a term used in software development which essentially means creating a copy of a particular software project, allowing you to experiment and make changes without affecting the original project. In this case, you're making a copy of the transcriber file so that you can host it yourself. Here's a tutorial on how to fork! In your forked version of the OpenAI Whisper Transcriber Repl, add any audio/video files you want to the "input" folder. When you click the "Run" button at the top of your repl, the program will begin to transcribe your file. This process can take a little while because it uses advanced AI technology (and Replit has poor server resources for free users). Just keep the tab open (make sure it does not refresh/close) and it will eventually finish and create a new file in the "output" folder. That file will have a full transcription of the audio, and you can use it however you want (ie. pasting it into ChatGPT and getting answers to whatever questions you were assigned). That's it! You've set up your own audio transcription tool. You can now transcribe any assignment given to you (ie. podcast, TedTalk, documentary, instructional video). I personally hated listening to podcasts for class, and would simply transcribe all the content. Then I'd feed it into ChatGPT with all the questions I was assigned, and finish what would be a 45 minute long assignment in less than five minutes (excluding how long it took for the transcription tool to work, which could take a little while). That being said, don't be dumb about using AI tools for assignment completion. Make sure to tweak the text that something like ChatGPT gives you to ensure that it really looks like a human/you wrote it.
Tutorial 7: Bypass News Paywalls
To preface this, you can't do this on school-managed devices since they have Chrome Developer Mode blocked. On a personal device this'll work perfectly. First, in Chrome (including Chromium browsers like Opera GX and Brave)/Edge go to the extensions page by typing their extensions URL in your search bar (chrome://extensions or edge://extensions). Enable Developer Mode in the top right. Then, install it from the download options (CRX or ZIP). Method 1: CRX (Easier Method) Download the below file https://github.com/iamadamdev/bypass-paywalls-chrome/releases/download/v1.8.1/bypass-paywalls-chrome.crx Then, double click it in your downloads folder. It should automatically choose your default browser, but if it doesn't then it'll ask you where to open the file - open it in your default browser, it'll show as an option. That's it! You're done. It'll be installed as an extension, and you can disable/remove it from your extensions page if ever needed. Method 2: ZIP Download the below file https://github.com/iamadamdev/bypass-paywalls-chrome/archive/refs/tags/v1.8.1.zip Then, unzip the file. If you don't use a ZIP/RAR software like WinRAR, just double click the zip file. If you do, right click "Extract" and extract it to wherever you want. Go to your extensions page. Click the button that says "Load Unpacked". Select the folder that you extracted. After that, you should be done! It'll be installed as an extension, and you can disable/remove it from your extensions page if ever needed. Notes - Every time you open Chrome it may warn you about running extensions in developer mode, just click ✕ to keep the extension enabled. - You will be logged out for any site you have checked. I personally always used this extension to easily complete research assignments for school that required me to access news sites that had paywalls or a limited number of free articles. The full repository for the extension can be found here, with all code open sourced and additional information about the extension: https://github.com/iamadamdev/bypass-paywalls-chrome Alternatively, you can use 12ft.io.
Tutorial 8: Bypass Chegg Paywall
This tutorial is one that essentially just requires clicking a link and pasting your Chegg question link. First, go to https://homeworkify.eu/mirror-1/ Paste in your link, and press Search. Click "I'm not a robot.", and complete the captcha. If needed, provide your email (I recommend using a spam that you have access to). Press "View Step-by-step" solution. That's it! It'll either email you your answer or redirect you to a URL where the answer will be displayed (I've seen it happen both ways).
Tutorial 9: Bypass Numerade Video Paywall
This tutorial is one that essentially just requires clicking a link and pasting your Numerade video link. First, go to https://free-numerade-videos.vercel.app Paste in your Numerade video link and press Submit. Wait for it to be done loading, and you're done! The video will be displayed on the page and you can even download it. I made this project myself for fun, and I wanted to distrubute it for others to use.
Tutorial 10: Prevent Chromebook (ChromeOS) Updates
Super simple! Just follow the follow the instructions on the CAUB instructions website.
Tutorial 11: Jailbreak School Chromebook
This tutorial revolves around using the SKIOVOX exploit. A detailed instructions slideshow can be found here.
Hover over the description button to see the descriptions.
Notice: As of Chrome v114, bookmarklets will no longer work on school devices (with devtools blocked).
Canvas Anti-log
javascript:(function() {Object.defineProperty(document, 'visibilityState', {value: 'visible', writable: true});Object.defineProperty(document, 'hidden', {value: false, writable: true});Object.defineProperty(document, 'webkitVisibilityState', {value: 'visible', writable: true});Object.defineProperty(document, 'webkitHidden', {value: false, writable: true});Window.prototype.realEventListener = Window.prototype.addEventListener;Window.prototype.addEventListener = (a,b,c) => {if (a == 'focus' || a == 'blur' || a == 'visibilitychange')console.log(`[AD] '${a}' event subscription prevented.`);elserealEventListener(a,b,c);};})();
Change tab header and image to G-Drive
javascript:function gcloak() { var link = document.querySelector("link[rel*='icon']") || document.createElement('link');link.type = 'image/x-icon';link.rel = 'shortcut icon';link.href = 'https://cdn-icons-png.flaticon.com/512/5968/5968523.png';document.title = 'My Drive - Google Drive';console.log(document.title);document.getElementsByTagName('head')[0].appendChild(link) };gcloak();setInterval(gcloak, 1000);
Inspect Element Clone
javascript:(function () { var script = document.createElement('script'); script.src="//cdn.jsdelivr.net/npm/eruda"; document.body.appendChild(script); script.onload = function () { eruda.init() } })();
Site In-Tab
javascript:(function(){var a=document.getElementById("rusic-modal")||document.createElement("iframe");a.setAttribute("allow","fullscreen");a.src=prompt("Enter URL:","example.com");a.id="rusic-modal";a.style="position:fixed;width:100vw;height:100vh;top:0px;left:0px;right:0px;bottom:0px;z-index:2147483647;background-color:white;border:none;";document.body.appendChild(a);}());
Flood Browsing History
javascript:var num=prompt("History flood amount:");done=false;x=window.location.href;for (var i=1; i<=num; i++){history.pushState(0, 0, i==num?x:i.toString());if(i==num){done=true}}if(done===true){alert(%22History%20flood%20successful!%20%22+window.location.href+%22%20now%20appears%20in%20your%20history%20%22+num+(num==1?%22%20time.%22:%22%20times.%22))}
Prevent Tab Closing
javascript:window.onbeforeunload = function() { return "Do you want to close"; }; alert("Tab Secured");
EdPuzzle Auto-Complete
javascript: fetch("https://cdn.jsdelivr.net/gh/ading2210/edpuzzle-answers@latest/script.js").then(r => r.text()).then(r => eval(r))
Speed Up Video
javascript:setInterval(() => document.querySelector("video").playbackRate = (window.speed || (window.speed = +prompt("New speed", 10))), 50)
Autoclicker
javascript: var DELAY = 1;var autoClickerStyleElement = document.createElement('style');autoClickerStyleElement.innerHTML='*{cursor: crosshair !important;}';document.body.appendChild(autoClickerStyleElement);function addClicker(e) {if(!e.isTrusted) {return;}if(e.target.classList.contains('auto-clicker-target')) {e.target.classList.remove('auto-clicker-target');} else {e.target.classList.add('auto-clicker-target');}document.body.removeChild(autoClickerStyleElement);document.body.removeEventListener('click', addClicker);e.preventDefault();autoClick(e.target);}function autoClick(element) {if(element.classList.contains('auto-clicker-target')) {element.click();setTimeout(function(){ autoClick(element); }, DELAY);}}document.body.addEventListener('click', addClicker, 99999999999);
Open an "about:blank" Tab
javascript: (function () {var url = prompt("Paste the link you want to be embedded into an about:blank page.\n(INCLUDE https://)", "https://example.com"); var urlObj = new window.URL(window.location.href); win = window.open(); win.document.body.style.margin = "0"; win.document.body.style.height = "100vh"; var iframe = win.document.createElement("iframe"); iframe.style.border = "none"; iframe.style.width = "100%"; iframe.style.height = "100%"; iframe.style.margin = "0"; iframe.referrerpolicy = "no-referrer"; iframe.src = url; win.document.body.appendChild(iframe); })();
Dark Mode
javascript:(function() { var darkReaderScript = document.createElement('script'); darkReaderScript.type = 'text/javascript'; darkReaderScript.src = 'https://cdn.jsdelivr.net/npm/darkreader@4.9.58/darkreader.min.js'; darkReaderScript.onload = function() { DarkReader.setFetchMethod(window.fetch); DarkReader.enable({ brightness: 100, contrast: 90, sepia: 10 }); }; document.head.appendChild(darkReaderScript);})();
Auto-Complete Google Form Responses
javascript:(function(){if (location.href.indexOf("?entry.") > 0) return;var inputAreas = document.querySelectorAll("div[data-params]");var urlPrefillParams = new URLSearchParams();inputAreas.forEach((inputArea) => {try {var areaParams = inputArea.getAttribute("data-params");var decodedAreaParams = JSON.parse("[" + areaParams.substr(areaParams.indexOf("["), areaParams.length));if (Array.isArray(decodedAreaParams) && decodedAreaParams.length > 0) {var questionParams = decodedAreaParams[0][4][0];if (Array.isArray(questionParams) && questionParams.length > 4) {var questionEntryId = questionParams[0];var validationParams = questionParams[4];if (Array.isArray(validationParams) && validationParams.length > 0) {var validationRule = validationParams[0];var valueToFill = null;if (validationRule[0] === 1 && validationRule[1] === 5) {valueToFill = validationRule[2][0];}if (validationRule[0] === 2 && validationRule[1] === 100) {valueToFill = validationRule[2][0];}if (valueToFill !== null) {urlPrefillParams.set("entry." + questionEntryId, valueToFill);}}}}} catch (ex) {console.error("Param decoding failed", ex, inputArea);}});if (Array.from(urlPrefillParams).length > 0) {if (confirm("Found " + Array.from(urlPrefillParams).length + " exact values in form validation. Prefill form?")) {location.search = urlPrefillParams;}}})();
Timed Page Refresh
javascript:setTimeout(()=>location.reload(), prompt('Reload the page in how many seconds:')*1000)