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