NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Universal Link Bypasser // @namespace https://openuserjs.org/users/mYbiib // @version 2.5.2 // @description Bypassador universal de links encurtados e sistemas anti-adblock // @author mYbiib // @match *://*/* // @grant GM_getValue // @grant GM_setValue // @grant GM_xmlhttpRequest // @grant GM_registerMenuCommand // @license MIT // @noframes // ==/UserScript== /* jshint esversion: 6 */ /* globals GM_registerMenuCommand */ (function() { 'use strict'; var config = { blockFocusChecks: true, enableRightClick: false, autoDownload: true, bypassDelay: 5 }; var services = { 'gplinks|linkvertise|ouo|shortcm': { selectors: ['#skip_button', '.btn-primary'], action: 'click' }, 'adfly|linkshrink|bcvc': { selectors: ['.content > div:nth-child(5)'], action: 'waitThenRedirect' } }; function Bypasser() { this.init(); } Bypasser.prototype = { init: function() { this.setupMenu(); this.applyConfig(); this.startEngine(); }, setupMenu: function() { if (typeof GM_registerMenuCommand === 'function') { GM_registerMenuCommand('⚙️ Configurar', this.showPanel.bind(this)); } }, applyConfig: function() { if(config.blockFocusChecks) this.enableFocusBypass(); if(config.enableRightClick) this.enableContextMenu(); }, startEngine: function() { var self = this; setInterval(function() { self.scanPage(); }, 2000); }, scanPage: function() { var patterns = Object.keys(services); for(var i = 0; i < patterns.length; i++) { if(new RegExp(patterns[i]).test(location.hostname)) { this.processService(services[patterns[i]]); break; } } }, processService: function(service) { var elements = this.findElements(service.selectors); elements.forEach(function(el) { this.executeAction(el, service.action); }, this); }, findElements: function(selectors) { return selectors.reduce(function(acc, selector) { var el = document.querySelector(selector); return el ? acc.concat(el) : acc; }, []); }, executeAction: function(element, action) { if(typeof this[action] === 'function') { this[action](element); } }, click: function(element) { element.click(); this.log('Element clicked: ' + element.tagName); }, waitThenRedirect: function(element) { setTimeout(function() { window.location.href = element.href; }, config.bypassDelay * 1000); }, enableFocusBypass: function() { window.onblur = window.onfocus = null; Object.defineProperty(document, 'hasFocus', { value: function() { return true; } }); }, enableContextMenu: function() { var events = ['contextmenu', 'copy', 'paste']; events.forEach(function(event) { document.addEventListener(event, function(e) { e.stopPropagation(); }, true); }); }, log: function(message) { console.log('[Bypasser]', message); }, showPanel: function() { var panel = document.createElement('div'); panel.style.cssText = [ 'position:fixed;top:20px;right:20px;', 'background:#fff;padding:20px;z-index:9999;', 'box-shadow:0 2px 10px rgba(0,0,0,0.1);font-family:Arial,sans-serif;' ].join(''); panel.innerHTML = [ '<h3 style="margin:0 0 15px 0;font-size:16px;">Configurações</h3>', '<label style="display:block;margin-bottom:10px;">', '<input type="checkbox"', config.blockFocusChecks ? ' checked' : '', '> ', 'Bloquear verificações de foco</label>', '<label style="display:block;margin-bottom:15px;">', '<input type="checkbox"', config.enableRightClick ? ' checked' : '', '> ', 'Ativar clique direito</label>', '<button style="padding:5px 15px;cursor:pointer;" onclick="this.parentNode.remove()">', 'Fechar</button>' ].join(''); document.body.appendChild(panel); } }; // Inicialização new Bypasser(); })();