// ==UserScript==
// @name Age Verification bypass 🍑SPANKBANG🍑 + Control Center [UPDATE]
// @namespace https://greasyfork.org/en/scripts/
// @version 2
// @description Age restriction bypass + Control Center with panic shortcut
// @author Me
// @match *://*.spankbang.com/*
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
function removeExistingPopup() {
let existingPopup = document.getElementById('av-wrapper');
if (existingPopup) existingPopup.remove();
}
const observer = new MutationObserver(() => {
document.querySelectorAll('img.strong-blur').forEach(img => {
img.style.filter = 'none';
});
document.querySelectorAll('div.flex.items-center.justify-center.rounded-full.bg-surface-brand-primary.w-10.h-10')
.forEach(div => div.remove());
});
observer.observe(document.body, { childList: true, subtree: true });
document.querySelectorAll('img.strong-blur').forEach(img => {
img.style.filter = 'none';
});
document.querySelectorAll('div.flex.items-center.justify-center.rounded-full.bg-surface-brand-primary.w-10.h-10')
.forEach(div => div.remove());
function showBypassInfoPopup() {
if(localStorage.getItem('hideBypassPopup') === 'true') return;
if(document.getElementById('bypassInfoPopup')) return;
let popup = document.createElement('div');
popup.id = 'bypassInfoPopup';
popup.className = 'bypassPopupContainer';
popup.innerHTML = `
<div class="bypassPopup">
<button class="closeButton" title="Close">×</button>
<h2>Script Bypass Active</h2>
<p>This script bypasses the age verification and keeps the preview images visible but if you can't play the videos, disable your AdBlock.</p>
<p>To watch videos, it is recommended to use a VPN or the Tor Browser, which includes a free VPN.</p>
<label style="display:block; margin-top:20px; font-size:14px; cursor:pointer;">
<input type="checkbox" id="dontShowAgain" style="margin-right:8px;">
Don't show again
</label>
</div>
`;
document.body.appendChild(popup);
popup.querySelector('.closeButton').onclick = () => {
popup.remove();
};
const checkbox = popup.querySelector('#dontShowAgain');
checkbox.onchange = () => {
if(checkbox.checked) {
localStorage.setItem('hideBypassPopup', 'true');
} else {
localStorage.removeItem('hideBypassPopup');
}
};
}
function addToolbar() {
const toolbar = document.createElement('div');
toolbar.id = 'gadgetToolbar';
toolbar.innerHTML = `
<button id="settingsBtn" title="Open Gadget Control Center ⚙️">⚙️</button>
`;
document.body.appendChild(toolbar);
document.getElementById('settingsBtn').addEventListener('click', toggleControlCenter);
}
function createControlCenter() {
if(document.getElementById('gadgetControlCenter')) return;
const overlay = document.createElement('div');
overlay.id = 'gadgetOverlay';
const panel = document.createElement('div');
panel.id = 'gadgetControlCenter';
panel.innerHTML = `
<button id="closeControlCenter" title="Close">×</button>
<h2>Gadget Control Center</h2>
<p>Open this panel anytime with <b>Ctrl + Alt + O</b></p>
<label style="display:block; margin-top:15px;">
<input type="checkbox" id="panicShortcutToggle" />
Enable “panic shortcut”
</label>
<label for="shortcutInput" style="display:block; margin-top:12px;">
Choose your panic shortcut (e.g. Ctrl+Shift+G):
<input type="text" id="shortcutInput" placeholder="e.g. Ctrl+Shift+G" style="width:100%; padding:6px; border-radius:4px; border:1px solid #ccc; margin-top:4px;" />
</label>
<label for="redirectURL" style="display:block; margin-top:12px;">
URL to redirect instantly:
<input type="url" id="redirectURL" placeholder="https://example.com" style="width:100%; padding:6px; border-radius:4px; border:1px solid #ccc; margin-top:4px;" />
</label>
<hr style="margin:20px 0;" />
<h3>Send Feedback</h3>
<label for="pseudoInput" style="display:block; margin-top:12px;">
Enter your pseudo (for feedback):
<input type="text" id="pseudoInput" placeholder="Your name or nickname" style="width:100%; padding:6px; border-radius:4px; border:1px solid #ccc; margin-top:4px;" />
</label>
<label for="feedbackInput" style="display:block; margin-top:12px;">
Your message:
<textarea id="feedbackInput" rows="4" placeholder="Write your feedback here..." style="width:100%; padding:6px; border-radius:4px; border:1px solid #ccc; margin-top:4px; resize:none;"></textarea>
</label>
<button id="sendFeedbackBtn" style="margin-top:15px; padding:8px 15px; border:none; border-radius:6px; background:#3498db; color:white; cursor:pointer; font-weight:bold;">
Send Feedback
</button>
`;
document.body.appendChild(overlay);
document.body.appendChild(panel);
document.getElementById('closeControlCenter').onclick = toggleControlCenter;
const panicToggle = document.getElementById('panicShortcutToggle');
const shortcutInput = document.getElementById('shortcutInput');
const redirectURL = document.getElementById('redirectURL');
const pseudoInput = document.getElementById('pseudoInput');
panicToggle.checked = localStorage.getItem('panicShortcutEnabled') === 'true';
shortcutInput.value = localStorage.getItem('panicShortcutKeys') || '';
redirectURL.value = localStorage.getItem('panicRedirectURL') || '';
pseudoInput.value = localStorage.getItem('feedbackPseudo') || '';
panicToggle.onchange = () => {
localStorage.setItem('panicShortcutEnabled', panicToggle.checked ? 'true' : 'false');
};
shortcutInput.onchange = () => {
localStorage.setItem('panicShortcutKeys', shortcutInput.value.trim());
};
redirectURL.onchange = () => {
localStorage.setItem('panicRedirectURL', redirectURL.value.trim());
};
pseudoInput.onchange = () => {
localStorage.setItem('feedbackPseudo', pseudoInput.value.trim());
};
document.getElementById('sendFeedbackBtn').onclick = () => {
const pseudo = pseudoInput.value.trim() || 'Anonymous';
const message = document.getElementById('feedbackInput').value.trim();
sendFeedback(pseudo, message);
};
}
function toggleControlCenter() {
const panel = document.getElementById('gadgetControlCenter');
const overlay = document.getElementById('gadgetOverlay');
if(panel && overlay) {
const isVisible = panel.style.display === 'block';
if(isVisible) {
panel.style.display = 'none';
overlay.style.display = 'none';
} else {
panel.style.display = 'block';
overlay.style.display = 'block';
}
} else {
createControlCenter();
toggleControlCenter();
}
}
window.addEventListener('keydown', e => {
if(e.ctrlKey && e.altKey && e.code === 'KeyO') {
e.preventDefault();
toggleControlCenter();
}
});
document.body.style.overflow = 'hidden';
document.body.style.overflow = 'auto';
window.addEventListener('keydown', e => {
if(localStorage.getItem('panicShortcutEnabled') !== 'true') return;
const keysString = localStorage.getItem('panicShortcutKeys');
if(!keysString) return;
const keys = keysString.toLowerCase().split('+').map(k => k.trim());
const key = e.key.toLowerCase();
const ctrlNeeded = keys.includes('ctrl') || keys.includes('control');
const shiftNeeded = keys.includes('shift');
const altNeeded = keys.includes('alt') || keys.includes('option');
const metaNeeded = keys.includes('meta') || keys.includes('cmd') || keys.includes('command');
const mainKey = keys.find(k => !['ctrl','control','shift','alt','option','meta','cmd','command'].includes(k));
if(
(ctrlNeeded === e.ctrlKey) &&
(shiftNeeded === e.shiftKey) &&
(altNeeded === e.altKey) &&
(metaNeeded === e.metaKey) &&
(mainKey === key)
) {
e.preventDefault();
const url = localStorage.getItem('panicRedirectURL');
if(url) {
window.location.href = url;
}
}
});
function sendFeedback(pseudo, message) {
if (!message) {
alert('Please enter a feedback message.');
return;
}
const COOLDOWN_MS = 24 * 60 * 60 * 1000;
const lastSent = localStorage.getItem('feedbackCooldown');
if(lastSent && (Date.now() - lastSent) < COOLDOWN_MS) {
alert('You can only send feedback once every 24 hours. Please try again later.');
return;
}
const webhookURL = 'https://discord.com/api/webhooks/1379513503093624843/AVqwdSubRpG7UH_0BDGsj27g_5GlKjky0CLVwMOpQd_V6FWCob-ys3HIsDqOcKAypzu-';
const payload = {
content: null,
embeds: [{
title: '📝 New Feedback Received',
color: 3447003,
fields: [
{ name: 'User', value: pseudo, inline: true },
{ name: 'Message', value: message, inline: false }
],
footer: { text: 'Feedback sent via Gadget Control Center' },
timestamp: new Date().toISOString()
}]
};
fetch(webhookURL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
})
.then(response => {
if (response.ok) {
alert('Thank you for your feedback!');
localStorage.setItem('feedbackCooldown', Date.now());
document.getElementById('feedbackInput').value = '';
} else {
alert('Failed to send feedback. Please try again later.');
}
})
.catch(() => {
alert('Failed to send feedback. Please check your internet connection.');
});
}
const backdrop = document.createElement('div');
backdrop.id = 'settingsBackdrop';
backdrop.style.position = 'fixed';
backdrop.style.top = '0';
backdrop.style.left = '0';
backdrop.style.width = '100vw';
backdrop.style.height = '100vh';
backdrop.style.background = 'rgba(0,0,0,0.4)';
backdrop.style.backdropFilter = 'blur(6px)';
backdrop.style.zIndex = '10000010';
const style = document.createElement('style');
style.textContent = `
/* Toolbar bottom center */
#gadgetToolbar {
position: fixed;
bottom: 20px;
left: 50%;
transform: translateX(-50%);
z-index: 99999;
background: rgba(0,0,0,0.8);
border-radius: 40px;
padding: 6px 12px;
display: flex;
align-items: center;
user-select: none;
}
#gadgetToolbar button {
font-size: 22px;
cursor: pointer;
border: none;
background: transparent;
color: white;
border-radius: 50%;
width: 36px;
height: 36px;
line-height: 36px;
text-align: center;
transition: background 0.3s;
}
#gadgetToolbar button:hover {
background: rgba(255,255,255,0.2);
}
/* Control Center Overlay */
#gadgetOverlay {
position: fixed;
top:0; left:0; right:0; bottom:0;
background: rgba(0,0,0,0.6);
backdrop-filter: blur(8px);
z-index: 99998;
display: none;
}
/* Control Center Panel */
#gadgetControlCenter {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 360px;
background: #222;
color: white;
border-radius: 12px;
padding: 20px;
box-shadow: 0 0 25px rgba(0,0,0,0.9);
font-family: Arial, sans-serif;
font-size: 14px;
z-index: 99999;
display: none;
user-select: text;
}
#gadgetControlCenter h2, #gadgetControlCenter h3 {
margin-top: 0;
margin-bottom: 10px;
}
#gadgetControlCenter button#closeControlCenter {
position: absolute;
top: 8px;
right: 12px;
font-size: 22px;
background: none;
border: none;
color: white;
cursor: pointer;
font-weight: bold;
}
#gadgetControlCenter input[type="text"],
#gadgetControlCenter input[type="url"],
#gadgetControlCenter textarea {
background: #333;
color: white;
border: 1px solid #555;
border-radius: 6px;
font-size: 14px;
font-family: monospace, monospace;
}
#gadgetControlCenter input[type="text"]:focus,
#gadgetControlCenter input[type="url"]:focus,
#gadgetControlCenter textarea:focus {
outline: none;
border-color: #3498db;
box-shadow: 0 0 6px #3498db;
}
/* Popup info bypass */
.bypassPopupContainer {
position: fixed;
top: 20px;
right: 20px;
background: #111;
color: #eee;
border-radius: 12px;
padding: 15px 20px;
max-width: 320px;
box-shadow: 0 0 20px rgba(0,0,0,0.8);
font-family: Arial, sans-serif;
font-size: 14px;
z-index: 99999;
user-select: none;
}
.bypassPopupContainer .bypassPopup {
position: relative;
}
.bypassPopupContainer button.closeButton {
position: absolute;
top: 4px;
right: 8px;
font-size: 20px;
background: none;
border: none;
color: #ccc;
cursor: pointer;
font-weight: bold;
user-select: none;
}
.bypassPopupContainer button.closeButton:hover {
color: white;
}
`;
document.head.appendChild(style);
removeExistingPopup();
showBypassInfoPopup();
addToolbar();
})();