// ==UserScript== // @name Universal Bypass // @namespace https://github.com/x3ric // @version 1.0 // @description Bypass common web restrictions: right-click, copy-paste, text selection, drag/drop, scrolling, video controls, console, debugger, and more. // @author x3ric // @license MIT // @match *://*/* // @run-at document-start // @grant unsafeWindow // @grant GM_registerMenuCommand // @downloadURL none // ==/UserScript== (function () { 'use strict'; // Bypass settings, less intrusive features disabled by default const settings = { rightClick: true, // Enable right-click by default copyPaste: true, // Enable copy/paste by default textSelection: true, // Enable text selection by default dragDrop: false, // Disabled by default to avoid drag/drop interference keyboardShortcuts: false, // Disabled by default to prevent keyboard shortcut issues pointerEvents: false, // Disabled by default, avoid pointer event conflicts scrolling: true, // Enable scrolling by default unlockInputs: false, // Disabled by default to avoid form issues stopAutoPlay: false, // Disabled by default, less intrusive enableVideoControls: false, // Disabled by default, less intrusive removeOverlays: false, // Disabled by default, can be disruptive on some sites removeNoCopy: true, // Enable removal of "no-copy" restrictions by default allowPasteInPassword: false, // Disabled by default, avoid input interference consoleBypass: false, // Disabled by default, activate when needed debuggerBypass: false // Disabled by default, activate when needed }; // Apply essential bypasses const applyBypasses = () => { const unblockEvents = () => { const eventsToUnblock = []; if (settings.rightClick) eventsToUnblock.push('contextmenu'); if (settings.copyPaste) eventsToUnblock.push('copy', 'paste', 'cut'); if (settings.textSelection) eventsToUnblock.push('selectstart'); if (settings.dragDrop) eventsToUnblock.push('dragstart', 'drop'); if (settings.keyboardShortcuts) eventsToUnblock.push('keydown', 'keypress', 'keyup'); if (settings.pointerEvents) eventsToUnblock.push('pointerdown', 'pointerup', 'mousedown', 'mouseup', 'click'); if (settings.scrolling) eventsToUnblock.push('wheel', 'touchmove', 'scroll'); eventsToUnblock.forEach(eventType => { document.addEventListener(eventType, e => e.stopPropagation(), true); }); }; // Remove blocking attributes const removeBlockingAttributes = () => { const attrsToRemove = ['oncontextmenu', 'oncopy', 'onpaste', 'oncut', 'onselectstart', 'ondragstart', 'ondrop', 'onkeydown', 'onkeypress', 'onkeyup', 'onpointerdown', 'onpointerup', 'onclick', 'onscroll']; attrsToRemove.forEach(attr => { document.querySelectorAll(`[${attr}]`).forEach(el => el.removeAttribute(attr)); }); if (settings.removeNoCopy) { document.querySelectorAll('[class*="no-copy"], [class*="unselectable"]').forEach(el => { el.classList.remove('no-copy', 'unselectable'); }); } if (settings.allowPasteInPassword) { document.querySelectorAll('input[type="password"]').forEach(input => { input.onpaste = null; }); } }; // Remove overlays and modals if (settings.removeOverlays) { document.querySelectorAll('.overlay, .modal, .popup, .lightbox, [role="dialog"]').forEach(el => { el.style.display = 'none'; }); } // Unlock disabled or readonly inputs if (settings.unlockInputs) { document.querySelectorAll('input[disabled], textarea[disabled], select[disabled], input[readonly], textarea[readonly]').forEach(input => { input.disabled = false; input.readOnly = false; }); } // Stop auto-playing media if (settings.stopAutoPlay) { document.querySelectorAll('video, audio').forEach(media => { media.autoplay = false; media.pause(); }); } // Enable video controls if (settings.enableVideoControls) { document.querySelectorAll('video').forEach(video => { video.controls = true; }); } // Console Bypass (prevents websites from clearing the console) if (settings.consoleBypass) { console.clear = () => console.log("Console clear has been blocked."); } // Debugger Bypass (injects `debugger` into eval and Function) if (settings.debuggerBypass) { const injectDebugger = `debugger;`; unsafeWindow.eval = new Proxy(unsafeWindow.eval, { apply: (target, thisArg, args) => { if (typeof args[0] === 'string') { args[0] = `${injectDebugger} ${args[0]}`; } return Reflect.apply(target, thisArg, args); } }); unsafeWindow.Function = new Proxy(unsafeWindow.Function, { construct: (target, args) => { if (typeof args[args.length - 1] === 'string') { args[args.length - 1] = `${injectDebugger} ${args[args.length - 1]}`; } return Reflect.construct(target, args); } }); } // Re-apply unblocking functions unblockEvents(); removeBlockingAttributes(); }; // Observe DOM changes to re-apply bypasses const observeDOMChanges = () => { const observer = new MutationObserver(() => { applyBypasses(); }); observer.observe(document.documentElement, { attributes: true, childList: true, subtree: true }); }; // Initialize script const init = () => { applyBypasses(); observeDOMChanges(); }; // Helper function for toggling settings const toggleSetting = (settingKey, settingName) => { settings[settingKey] = !settings[settingKey]; applyBypasses(); alert(`${settingName} has been ${settings[settingKey] ? 'enabled' : 'disabled'}.`); }; // Register menu commands GM_registerMenuCommand('Toggle Right-Click', () => toggleSetting('rightClick', 'Right-Click')); GM_registerMenuCommand('Toggle Copy-Paste', () => toggleSetting('copyPaste', 'Copy-Paste')); GM_registerMenuCommand('Toggle Text Selection', () => toggleSetting('textSelection', 'Text Selection')); GM_registerMenuCommand('Toggle Drag-and-Drop', () => toggleSetting('dragDrop', 'Drag-and-Drop')); GM_registerMenuCommand('Toggle Keyboard Shortcuts', () => toggleSetting('keyboardShortcuts', 'Keyboard Shortcuts')); GM_registerMenuCommand('Toggle Pointer Events', () => toggleSetting('pointerEvents', 'Pointer Events')); GM_registerMenuCommand('Toggle Scrolling', () => toggleSetting('scrolling', 'Scrolling')); GM_registerMenuCommand('Toggle Unlock Inputs', () => toggleSetting('unlockInputs', 'Unlock Inputs')); GM_registerMenuCommand('Toggle Stop Auto-Play', () => toggleSetting('stopAutoPlay', 'Stop Auto-Play')); GM_registerMenuCommand('Toggle Enable Video Controls', () => toggleSetting('enableVideoControls', 'Enable Video Controls')); GM_registerMenuCommand('Toggle Remove Overlays', () => toggleSetting('removeOverlays', 'Remove Overlays')); GM_registerMenuCommand('Toggle Remove No-Copy Classes', () => toggleSetting('removeNoCopy', 'Remove No-Copy Classes')); GM_registerMenuCommand('Toggle Allow Paste in Password Fields', () => toggleSetting('allowPasteInPassword', 'Allow Paste in Password Fields')); GM_registerMenuCommand('Toggle Console Bypass', () => toggleSetting('consoleBypass', 'Console Bypass')); GM_registerMenuCommand('Toggle Debugger Bypass', () => toggleSetting('debuggerBypass', 'Debugger Bypass')); // Initialize the script init(); })();