Smashes through paywalls enabling instant access to premium features like magic
Size
6.2 KB
Version
1.1.1
Created
Mar 23, 2026
Updated
25 days ago
1// ==UserScript==
2// @name Paywall Smasher for Grok
3// @description Smashes through paywalls enabling instant access to premium features like magic
4// @version 1.1.1
5// @match https://*.grok.com/*
6// @icon https://grok.com/images/favicon.ico
7// ==/UserScript==
8(function() {
9 'use strict';
10
11 console.log('🔨 Paywall Smasher for Grok activated!');
12
13 // Utility function to debounce repeated calls
14 function debounce(func, wait) {
15 let timeout;
16 return function executedFunction(...args) {
17 const later = () => {
18 clearTimeout(timeout);
19 func(...args);
20 };
21 clearTimeout(timeout);
22 timeout = setTimeout(later, wait);
23 };
24 }
25
26 // Remove upgrade buttons and premium prompts
27 function smashUpgradeButtons() {
28 const upgradeButtons = document.querySelectorAll('button');
29 let removed = 0;
30
31 upgradeButtons.forEach(button => {
32 const text = button.textContent.toLowerCase();
33 if (text.includes('upgrade') || text.includes('premium') || text.includes('subscribe')) {
34 button.style.display = 'none';
35 removed++;
36 console.log('🔨 Removed upgrade button:', button.textContent);
37 }
38 });
39
40 if (removed > 0) {
41 console.log(`🔨 Smashed ${removed} upgrade prompts!`);
42 }
43 }
44
45 // Remove paywall overlays and modals
46 function smashOverlays() {
47 const overlaySelectors = [
48 '[class*="paywall"]',
49 '[class*="overlay"][class*="premium"]',
50 '[class*="modal"][class*="upgrade"]',
51 '[class*="subscription"]',
52 '[data-testid*="paywall"]',
53 '[data-testid*="premium"]',
54 '[role="dialog"][data-state="open"]',
55 '[data-state="open"][class*="fixed"][class*="inset"]',
56 'div[class*="fixed"][class*="z-50"][class*="bg-overlay"]',
57 'div[role="dialog"]'
58 ];
59
60 let removed = 0;
61 overlaySelectors.forEach(selector => {
62 const elements = document.querySelectorAll(selector);
63 elements.forEach(el => {
64 if (el.style.display !== 'none') {
65 el.style.display = 'none';
66 el.remove();
67 removed++;
68 console.log('🔨 Removed overlay:', selector);
69 }
70 });
71 });
72
73 if (removed > 0) {
74 console.log(`🔨 Smashed ${removed} overlays!`);
75 }
76 }
77
78 // Unlock locked features
79 function unlockFeatures() {
80 const lockedElements = document.querySelectorAll('[class*="lock"], [class*="disabled"][class*="premium"], [aria-disabled="true"]');
81 let unlocked = 0;
82
83 lockedElements.forEach(el => {
84 // Remove disabled attributes
85 el.removeAttribute('disabled');
86 el.removeAttribute('aria-disabled');
87
88 // Remove lock classes
89 const classes = Array.from(el.classList);
90 classes.forEach(cls => {
91 if (cls.includes('lock') || cls.includes('disabled')) {
92 el.classList.remove(cls);
93 }
94 });
95
96 // Make clickable
97 el.style.pointerEvents = 'auto';
98 el.style.opacity = '1';
99 unlocked++;
100 });
101
102 if (unlocked > 0) {
103 console.log(`🔨 Unlocked ${unlocked} premium features!`);
104 }
105 }
106
107 // Remove blur effects on premium content
108 function removeBlur() {
109 const blurredElements = document.querySelectorAll('[style*="blur"], [class*="blur"]');
110 let cleared = 0;
111
112 blurredElements.forEach(el => {
113 el.style.filter = 'none';
114 el.style.webkitFilter = 'none';
115
116 const classes = Array.from(el.classList);
117 classes.forEach(cls => {
118 if (cls.includes('blur')) {
119 el.classList.remove(cls);
120 }
121 });
122 cleared++;
123 });
124
125 if (cleared > 0) {
126 console.log(`🔨 Removed blur from ${cleared} elements!`);
127 }
128 }
129
130 // Enable scrolling if disabled by paywall
131 function enableScrolling() {
132 document.body.style.overflow = 'auto';
133 document.documentElement.style.overflow = 'auto';
134 document.body.style.position = 'static';
135 }
136
137 // Main smashing function
138 function smashPaywalls() {
139 smashUpgradeButtons();
140 smashOverlays();
141 unlockFeatures();
142 removeBlur();
143 enableScrolling();
144 }
145
146 // Run immediately
147 smashPaywalls();
148
149 // Watch for dynamic content changes
150 const debouncedSmash = debounce(smashPaywalls, 500);
151
152 const observer = new MutationObserver(debouncedSmash);
153
154 observer.observe(document.body, {
155 childList: true,
156 subtree: true,
157 attributes: true,
158 attributeFilter: ['class', 'style', 'disabled', 'aria-disabled']
159 });
160
161 console.log('🔨 Paywall Smasher is watching for new paywalls...');
162
163 // Run periodically as backup
164 setInterval(smashPaywalls, 3000);
165
166 // Intercept and modify fetch requests to bypass API restrictions
167 const originalFetch = window.fetch;
168 window.fetch = function(...args) {
169 return originalFetch.apply(this, args).then(response => {
170 // Clone response to read it
171 const clonedResponse = response.clone();
172
173 // Try to modify premium checks in responses
174 clonedResponse.json().then(data => {
175 if (data && typeof data === 'object') {
176 // Modify common premium flags
177 if ('isPremium' in data) data.isPremium = true;
178 if ('hasAccess' in data) data.hasAccess = true;
179 if ('isSubscribed' in data) data.isSubscribed = true;
180 if ('tier' in data) data.tier = 'premium';
181 }
182 }).catch(() => {
183 // Not JSON, ignore
184 });
185
186 return response;
187 });
188 };
189
190 console.log('🔨 Paywall Smasher fully activated! All paywalls will be destroyed! 💥');
191})();