Automatically bypass Platoboost link shortener and extract access codes
Size
8.8 KB
Version
1.1.2
Created
Dec 8, 2025
Updated
4 days ago
1// ==UserScript==
2// @name Platoboost Link Bypasser
3// @description Automatically bypass Platoboost link shortener and extract access codes
4// @version 1.1.2
5// @match https://*.platoboost.app/*
6// @match https://platoboost.app/*
7// @icon https://auth.platoboost.app/icon.svg
8// @grant GM.setClipboard
9// @grant GM.notification
10// @grant GM.xmlhttpRequest
11// ==/UserScript==
12(function() {
13 'use strict';
14
15 console.log('Platoboost Link Bypasser: Extension loaded');
16
17 let bypassInProgress = false;
18
19 // Function to extract the encrypted data parameter from URL
20 function getEncryptedData() {
21 const urlParams = new URLSearchParams(window.location.search);
22 return urlParams.get('d');
23 }
24
25 // Function to make API request to bypass verification
26 async function bypassVerification() {
27 try {
28 const encryptedData = getEncryptedData();
29 if (!encryptedData) {
30 console.error('No encrypted data found in URL');
31 return null;
32 }
33
34 console.log('Attempting to bypass verification via API...');
35
36 // Make direct API call to get the access code
37 const response = await GM.xmlhttpRequest({
38 method: 'POST',
39 url: 'https://api-gateway.platoboost.com/v1/authenticators/8/' + encryptedData,
40 headers: {
41 'Content-Type': 'application/json',
42 'Origin': 'https://auth.platoboost.app',
43 'Referer': window.location.href
44 },
45 data: JSON.stringify({})
46 });
47
48 if (response.status === 200) {
49 const data = JSON.parse(response.responseText);
50 console.log('API Response:', data);
51
52 if (data.key || data.code || data.token) {
53 return data.key || data.code || data.token;
54 }
55 }
56
57 return null;
58 } catch (error) {
59 console.error('API bypass failed:', error);
60 return null;
61 }
62 }
63
64 // Function to check for and extract the access code (final step)
65 async function extractAccessCode() {
66 console.log('Checking for access code...');
67
68 // Look for the textarea with the access code
69 const textarea = document.querySelector('textarea[class*="flex"][class*="min-h"]');
70
71 if (textarea && textarea.value && textarea.value.trim()) {
72 const accessCode = textarea.value.trim();
73 console.log('✓ Access code found:', accessCode);
74
75 // Copy to clipboard
76 try {
77 await GM.setClipboard(accessCode);
78 console.log('✓ Access code copied to clipboard');
79
80 // Show notification
81 GM.notification({
82 title: 'Platoboost Bypassed!',
83 text: `Access code: ${accessCode}`,
84 timeout: 8000
85 });
86
87 // Add visual indicator
88 addSuccessIndicator(accessCode);
89
90 } catch (error) {
91 console.error('Failed to copy access code:', error);
92 }
93
94 return true;
95 }
96
97 return false;
98 }
99
100 // Function to directly navigate to the final page
101 async function skipToFinalPage() {
102 if (bypassInProgress) return;
103 bypassInProgress = true;
104
105 console.log('Attempting to skip verification steps...');
106
107 // Try API bypass first
108 const apiCode = await bypassVerification();
109 if (apiCode) {
110 console.log('✓ Got code via API bypass:', apiCode);
111 await GM.setClipboard(apiCode);
112 GM.notification({
113 title: 'Platoboost Bypassed!',
114 text: `Access code: ${apiCode}`,
115 timeout: 8000
116 });
117 addSuccessIndicator(apiCode);
118 bypassInProgress = false;
119 return;
120 }
121
122 // If API bypass fails, try to manipulate localStorage to mark steps as complete
123 try {
124 // Set localStorage values to bypass verification
125 const timestamp = Date.now() + 86400000; // 24 hours from now
126 localStorage.setItem('agecc', JSON.stringify({ value: Date.now().toString(), expiry: timestamp }));
127 localStorage.setItem('fjidd', JSON.stringify({ value: Math.random().toString().slice(2), expiry: timestamp }));
128 localStorage.setItem('sle', 'true');
129
130 console.log('LocalStorage updated, reloading page...');
131
132 // Reload the page to apply changes
133 window.location.reload();
134 } catch (error) {
135 console.error('Failed to manipulate localStorage:', error);
136 bypassInProgress = false;
137 }
138 }
139
140 // Add a visual success indicator
141 function addSuccessIndicator(code) {
142 // Remove any existing indicator
143 const existing = document.getElementById('platoboost-bypass-indicator');
144 if (existing) existing.remove();
145
146 const indicator = document.createElement('div');
147 indicator.id = 'platoboost-bypass-indicator';
148 indicator.style.cssText = `
149 position: fixed;
150 top: 20px;
151 right: 20px;
152 background: linear-gradient(135deg, #10b981 0%, #059669 100%);
153 color: white;
154 padding: 20px 28px;
155 border-radius: 16px;
156 box-shadow: 0 10px 40px rgba(16, 185, 129, 0.4);
157 z-index: 999999;
158 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
159 font-size: 14px;
160 font-weight: 600;
161 animation: slideInRight 0.4s ease-out;
162 max-width: 350px;
163 `;
164
165 indicator.innerHTML = `
166 <div style="display: flex; align-items: center; gap: 16px;">
167 <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3">
168 <polyline points="20 6 9 17 4 12"></polyline>
169 </svg>
170 <div>
171 <div style="font-size: 18px; margin-bottom: 6px; font-weight: 700;">✓ Bypass Complete!</div>
172 <div style="font-size: 13px; opacity: 0.95; background: rgba(255,255,255,0.2); padding: 6px 10px; border-radius: 6px; margin-top: 6px; font-family: monospace; word-break: break-all;">${code}</div>
173 <div style="font-size: 11px; opacity: 0.8; margin-top: 6px;">✓ Copied to clipboard</div>
174 </div>
175 </div>
176 `;
177
178 // Add animation
179 if (!document.getElementById('platoboost-bypass-styles')) {
180 const style = document.createElement('style');
181 style.id = 'platoboost-bypass-styles';
182 style.textContent = `
183 @keyframes slideInRight {
184 from {
185 transform: translateX(400px);
186 opacity: 0;
187 }
188 to {
189 transform: translateX(0);
190 opacity: 1;
191 }
192 }
193 @keyframes slideOutRight {
194 from {
195 transform: translateX(0);
196 opacity: 1;
197 }
198 to {
199 transform: translateX(400px);
200 opacity: 0;
201 }
202 }
203 `;
204 document.head.appendChild(style);
205 }
206
207 document.body.appendChild(indicator);
208
209 // Remove after 10 seconds
210 setTimeout(() => {
211 indicator.style.animation = 'slideOutRight 0.4s ease-out';
212 setTimeout(() => indicator.remove(), 400);
213 }, 10000);
214 }
215
216 // Initialize the bypass
217 async function init() {
218 console.log('Initializing Platoboost bypass...');
219
220 // Check if we're already on the final page with the code
221 const hasCode = await extractAccessCode();
222 if (hasCode) {
223 console.log('Already on final page with code!');
224 return;
225 }
226
227 // Check if we're on a verification page
228 const continueButton = document.querySelector('button.inline-flex.items-center.justify-center[class*="bg-primary"]');
229 if (continueButton && continueButton.textContent.includes('Continue')) {
230 console.log('On verification page, attempting to skip...');
231 await skipToFinalPage();
232 }
233 }
234
235 // Start when DOM is ready
236 if (document.readyState === 'loading') {
237 document.addEventListener('DOMContentLoaded', init);
238 } else {
239 init();
240 }
241
242})();