NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Bypass SFL
// @namespace bypass.sfl
// @version 1.0
// @description Auto bypass SFL.GL. Skip timers, block ads, and click all buttons until the OPEN LINK page.
// @author traaa
// @license MIT
// @icon https://i.postimg.cc/P5VBTtwZ/20260913-000711.png
// @match *://sfl.gl/*
// @match *://app.khaddavi.net/*
// @run-at document-end
// @grant none
// @noframes
// @updateURL https://openuserjs.org/meta/extancs/Bypass_SFL.meta.js
// @downloadURL https://openuserjs.org/install/extancs/Bypass_SFL.user.js
// ==/UserScript==
(function () {
'use strict';
var DEBUG = true;
var CLICK_DELAY = 700;
var SCAN_INTERVAL = 500;
var scanInterval = null;
function log(message) {
if (DEBUG) console.log('[Bypass SFL] ' + message);
}
var state = window.name;
if (!state || state.indexOf('sfl_') !== 0) {
state = 'sfl_idle';
window.name = state;
}
var _hostCheck = window.location.hostname.toLowerCase();
var _urlCheck = window.location.href.toLowerCase();
var _isFinalUrl = _urlCheck.indexOf('ready/go') !== -1 || _urlCheck.indexOf('open-link') !== -1;
if (state === 'sfl_success' && (_hostCheck === 'sfl.gl' || _hostCheck === 'www.sfl.gl') && !_isFinalUrl) {
state = 'sfl_idle';
window.name = state;
}
var isEnabled = state === 'sfl_running' || state === 'sfl_success';
var isSuccess = state === 'sfl_success';
function setState(newState) {
window.name = newState;
isEnabled = newState === 'sfl_running' || newState === 'sfl_success';
isSuccess = newState === 'sfl_success';
log('State: ' + newState);
}
function isFinalPageNow() {
var url = window.location.href;
if (url.indexOf('ready/go') !== -1) return true;
if (url.indexOf('open-link') !== -1) return true;
var bodyText = (document.body && document.body.innerText || '').toLowerCase();
if (bodyText.indexOf('open link') !== -1) return true;
return false;
}
window.open = function() { return null; };
window.onbeforeunload = null;
window.addEventListener('beforeunload', function(e) {
e.stopImmediatePropagation();
}, true);
document.addEventListener('click', function(e) {
var link = e.target.closest('a[target="_blank"]');
if (link && link.href) {
e.preventDefault();
window.location.href = link.href;
}
}, true);
function skipTimer() {
if (!window.__timerPatched) {
window.__timerPatched = true;
var origSetTimeout = window.setTimeout;
var origSetInterval = window.setInterval;
window.setTimeout = function(fn, delay) {
if (delay > 100) delay = 10;
return origSetTimeout(fn, delay);
};
window.setInterval = function(fn, delay) {
if (delay > 100) delay = 10;
return origSetInterval(fn, delay);
};
var origDate = Date;
var startTime = origDate.now();
window.Date.now = function() {
return startTime + (origDate.now() - startTime) * 10;
};
}
var timers = document.querySelectorAll(
'[class*="timer"], [id*="timer"], ' +
'[class*="countdown"], [id*="countdown"], ' +
'[class*="waktu"], [id*="waktu"], ' +
'[class*="detik"], [id*="detik"]'
);
for (var i = 0; i < timers.length; i++) {
timers[i].style.display = 'none';
timers[i].innerText = '0';
}
var all = document.querySelectorAll('*');
for (var j = 0; j < all.length; j++) {
var el = all[j];
if (el.children.length === 0) {
var text = (el.innerText || '').trim();
if (/^\d+$/.test(text) && parseInt(text) <= 60) {
el.innerText = '0';
el.style.display = 'none';
}
}
}
var canvases = document.querySelectorAll('canvas');
for (var c = 0; c < canvases.length; c++) {
canvases[c].click();
}
}
function textOf(element) {
if (!element) return '';
return (
element.innerText ||
element.textContent ||
element.value ||
element.getAttribute('aria-label') ||
''
).replace(/\s+/g, ' ').trim().toLowerCase();
}
function visible(element) {
if (!element) return false;
var style = window.getComputedStyle(element);
var rect = element.getBoundingClientRect();
return (
style.display !== 'none' &&
style.visibility !== 'hidden' &&
parseFloat(style.opacity || '1') > 0 &&
rect.width > 0 &&
rect.height > 0
);
}
function disabled(element) {
return (
element.disabled === true ||
element.hasAttribute('disabled') ||
element.getAttribute('aria-disabled') === 'true' ||
element.classList.contains('disabled')
);
}
function getElements() {
var selectors = ['button', 'a', 'input[type="button"]', 'input[type="submit"]', '[role="button"]'];
var result = [];
for (var i = 0; i < selectors.length; i++) {
var nodes = document.querySelectorAll(selectors[i]);
for (var j = 0; j < nodes.length; j++) {
result.push(nodes[j]);
}
}
return result;
}
function findButton(names) {
var elements = getElements();
for (var i = 0; i < elements.length; i++) {
if (!visible(elements[i]) || disabled(elements[i])) continue;
var text = textOf(elements[i]);
for (var j = 0; j < names.length; j++) {
if (text.indexOf(names[j]) !== -1) {
return elements[i];
}
}
}
return null;
}
function safeClick(element, name) {
if (!element) return false;
if (!visible(element) || disabled(element)) return false;
log('Click: ' + name);
try {
element.scrollIntoView({ behavior: 'smooth', block: 'center' });
} catch (e) {}
setTimeout(function () {
if (!document.contains(element)) return;
if (!visible(element) || disabled(element)) return;
try {
element.click();
} catch (e) {
try {
element.dispatchEvent(new MouseEvent('click', {
bubbles: true, cancelable: true, view: window
}));
} catch (err) {
log('Click failed: ' + name);
}
}
}, CLICK_DELAY);
return true;
}
function stepOpen() {
var button = findButton(['open']);
if (button) return safeClick(button, 'Open');
return false;
}
function stepNext() {
var button = findButton(['next']);
if (button) return safeClick(button, 'Next');
return false;
}
function stepSecondOpen() {
var button = findButton(['open']);
if (button) return safeClick(button, 'Open #2');
return false;
}
function stepContinue() {
var button = findButton(['continue', 'continue to link']);
if (button) return safeClick(button, 'Continue');
return false;
}
function stepGoToLink() {
var button = findButton(['go to link', 'go to link now', 'get link']);
if (button) return safeClick(button, 'Go to Link');
return false;
}
function run() {
if (!isEnabled) return;
skipTimer();
if (isFinalPageNow()) {
if (!isSuccess) {
setState('sfl_success');
updateButtonState('success');
log('Reached final page - SUCCESS');
}
var finalBtn = findButton(['open link', 'open link now']);
if (finalBtn) {
if (!finalBtn.dataset.bypassClicked) {
finalBtn.dataset.bypassClicked = 'true';
log('Final page: waiting 2 seconds before clicking OPEN LINK');
setTimeout(function() {
if (!document.contains(finalBtn)) return;
if (!visible(finalBtn) || disabled(finalBtn)) return;
log('Click: OPEN LINK (after 2s delay)');
try {
finalBtn.click();
} catch (e) {
try {
finalBtn.dispatchEvent(new MouseEvent('click', {
bubbles: true, cancelable: true, view: window
}));
} catch (err) {
log('Click failed: OPEN LINK');
}
}
}, 2000);
}
}
return;
}
var host = window.location.hostname.toLowerCase();
if (host === 'sfl.gl' || host === 'www.sfl.gl') {
stepOpen();
return;
}
if (host === 'app.khaddavi.net' || host === 'www.app.khaddavi.net') {
if (stepGoToLink()) return;
if (stepContinue()) return;
if (stepNext()) return;
stepSecondOpen();
}
}
var buttonEl = null;
function createGUI() {
var oldGui = document.getElementById('bypass-sfl-gui');
if (oldGui) oldGui.remove();
var container = document.createElement('div');
container.id = 'bypass-sfl-gui';
container.style.cssText = [
'position: fixed !important',
'bottom: 20px !important',
'right: 20px !important',
'z-index: 2147483647 !important',
'font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
'user-select: none',
'pointer-events: auto',
'display: block !important',
'visibility: visible !important',
'opacity: 1 !important',
].join(';');
buttonEl = document.createElement('button');
buttonEl.id = 'bypass-sfl-button';
buttonEl.style.cssText = [
'padding: 12px 24px',
'border: none',
'border-radius: 8px',
'font-size: 14px',
'font-weight: 700',
'cursor: pointer',
'box-shadow: 0 4px 12px rgba(0,0,0,0.3)',
'transition: all 0.2s ease',
'display: flex',
'align-items: center',
'gap: 8px',
'letter-spacing: 0.5px',
].join(';');
buttonEl.onclick = function() {
if (isSuccess) {
setState('sfl_idle');
stopScan();
updateButtonState('off');
return;
}
if (!isEnabled) {
setState('sfl_running');
updateButtonState('starting');
startScan();
} else {
setState('sfl_idle');
updateButtonState('off');
stopScan();
}
};
container.appendChild(buttonEl);
var target = document.documentElement || document.body;
target.appendChild(container);
var guiObserver = new MutationObserver(function() {
if (!document.getElementById('bypass-sfl-gui')) {
var newTarget = document.documentElement || document.body;
if (newTarget) {
newTarget.appendChild(container);
}
}
});
guiObserver.observe(document.documentElement, { childList: true, subtree: false });
}
function updateButtonState(stateName) {
if (!buttonEl) return;
if (stateName === 'off') {
buttonEl.style.background = '#dc2626';
buttonEl.style.color = '#ffffff';
buttonEl.innerHTML = '▶️ Start';
} else if (stateName === 'starting') {
buttonEl.style.background = '#16a34a';
buttonEl.style.color = '#ffffff';
buttonEl.innerHTML = '⏳ Starting...';
} else if (stateName === 'success') {
buttonEl.style.background = '#16a34a';
buttonEl.style.color = '#ffffff';
buttonEl.innerHTML = '✅ Successful';
}
}
function startScan() {
if (scanInterval) return;
scanInterval = setInterval(run, SCAN_INTERVAL);
run();
}
function stopScan() {
if (scanInterval) {
clearInterval(scanInterval);
scanInterval = null;
}
}
function init() {
if (document.body) {
if (isEnabled && isFinalPageNow()) {
setState('sfl_success');
}
createGUI();
if (isSuccess && isFinalPageNow()) {
updateButtonState('success');
} else if (isEnabled) {
updateButtonState('starting');
startScan();
} else {
updateButtonState('off');
}
} else {
document.addEventListener('DOMContentLoaded', function() {
if (isEnabled && isFinalPageNow()) {
setState('sfl_success');
}
createGUI();
if (isSuccess && isFinalPageNow()) {
updateButtonState('success');
} else if (isEnabled) {
updateButtonState('starting');
startScan();
} else {
updateButtonState('off');
}
});
}
}
init();
})();