Automatically bypass Linkvertise links (free and premium) with instant redirect. No waiting, no ads!
Size
10.4 KB
Version
1.0.1
Created
Mar 9, 2026
Updated
about 1 month ago
1// ==UserScript==
2// @name Linkvertise Auto Bypass - Free & Premium
3// @description Automatically bypass Linkvertise links (free and premium) with instant redirect. No waiting, no ads!
4// @version 1.0.1
5// @match https://*.linkvertise.com/*
6// @icon https://linkvertise.com/favicon.ico
7// ==/UserScript==
8(function() {
9 'use strict';
10
11 console.log('Linkvertise Auto Bypass - Extension loaded');
12
13 // Configuration
14 const BYPASS_API = 'https://bypass.vip/api/bypass';
15 const CHECK_INTERVAL = 1000; // Check every second
16 const MAX_RETRIES = 3;
17
18 // State management
19 let bypassAttempted = false;
20 let retryCount = 0;
21
22 // Create UI elements
23 function createBypassUI() {
24 // Remove existing UI if present
25 const existingUI = document.getElementById('linkvertise-bypass-ui');
26 if (existingUI) {
27 existingUI.remove();
28 }
29
30 // Create container
31 const container = document.createElement('div');
32 container.id = 'linkvertise-bypass-ui';
33 container.style.cssText = `
34 position: fixed;
35 top: 20px;
36 right: 20px;
37 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
38 color: white;
39 padding: 20px;
40 border-radius: 12px;
41 box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
42 z-index: 999999;
43 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
44 min-width: 300px;
45 max-width: 400px;
46 backdrop-filter: blur(10px);
47 border: 1px solid rgba(255, 255, 255, 0.2);
48 `;
49
50 // Create title
51 const title = document.createElement('div');
52 title.style.cssText = `
53 font-size: 18px;
54 font-weight: bold;
55 margin-bottom: 12px;
56 display: flex;
57 align-items: center;
58 gap: 10px;
59 `;
60 title.innerHTML = `
61 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
62 <path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/>
63 </svg>
64 Linkvertise Bypass
65 `;
66
67 // Create status text
68 const status = document.createElement('div');
69 status.id = 'bypass-status';
70 status.style.cssText = `
71 font-size: 14px;
72 margin-bottom: 12px;
73 line-height: 1.5;
74 `;
75 status.textContent = 'Initializing bypass...';
76
77 // Create progress bar
78 const progressContainer = document.createElement('div');
79 progressContainer.style.cssText = `
80 width: 100%;
81 height: 6px;
82 background: rgba(255, 255, 255, 0.2);
83 border-radius: 3px;
84 overflow: hidden;
85 margin-bottom: 12px;
86 `;
87
88 const progressBar = document.createElement('div');
89 progressBar.id = 'bypass-progress';
90 progressBar.style.cssText = `
91 width: 0%;
92 height: 100%;
93 background: white;
94 border-radius: 3px;
95 transition: width 0.3s ease;
96 `;
97 progressContainer.appendChild(progressBar);
98
99 // Create close button
100 const closeBtn = document.createElement('button');
101 closeBtn.textContent = '×';
102 closeBtn.style.cssText = `
103 position: absolute;
104 top: 10px;
105 right: 10px;
106 background: rgba(255, 255, 255, 0.2);
107 border: none;
108 color: white;
109 font-size: 24px;
110 width: 30px;
111 height: 30px;
112 border-radius: 50%;
113 cursor: pointer;
114 display: flex;
115 align-items: center;
116 justify-content: center;
117 transition: background 0.2s;
118 `;
119 closeBtn.onmouseover = () => closeBtn.style.background = 'rgba(255, 255, 255, 0.3)';
120 closeBtn.onmouseout = () => closeBtn.style.background = 'rgba(255, 255, 255, 0.2)';
121 closeBtn.onclick = () => container.remove();
122
123 // Assemble UI
124 container.appendChild(closeBtn);
125 container.appendChild(title);
126 container.appendChild(status);
127 container.appendChild(progressContainer);
128
129 document.body.appendChild(container);
130
131 console.log('Bypass UI created');
132 return { container, status, progressBar };
133 }
134
135 // Update UI status
136 function updateStatus(message, progress = null) {
137 const statusElement = document.getElementById('bypass-status');
138 const progressBar = document.getElementById('bypass-progress');
139
140 if (statusElement) {
141 statusElement.textContent = message;
142 console.log('Bypass status:', message);
143 }
144
145 if (progressBar && progress !== null) {
146 progressBar.style.width = progress + '%';
147 }
148 }
149
150 // Show success message
151 function showSuccess(destinationUrl) {
152 updateStatus('✓ Bypass successful! Redirecting...', 100);
153
154 setTimeout(() => {
155 const container = document.getElementById('linkvertise-bypass-ui');
156 if (container) {
157 container.style.background = 'linear-gradient(135deg, #11998e 0%, #38ef7d 100%)';
158 }
159 }, 100);
160 }
161
162 // Show error message
163 function showError(message) {
164 updateStatus('✗ ' + message, 0);
165
166 const container = document.getElementById('linkvertise-bypass-ui');
167 if (container) {
168 container.style.background = 'linear-gradient(135deg, #eb3349 0%, #f45c43 100%)';
169 }
170 }
171
172 // Perform bypass using API
173 async function performBypass(url) {
174 try {
175 updateStatus('Contacting bypass API...', 30);
176 console.log('Attempting to bypass URL:', url);
177
178 const response = await fetch(BYPASS_API, {
179 method: 'POST',
180 headers: {
181 'Content-Type': 'application/json',
182 },
183 body: JSON.stringify({ url: url })
184 });
185
186 updateStatus('Processing response...', 60);
187
188 if (!response.ok) {
189 throw new Error(`API returned status ${response.status}`);
190 }
191
192 const data = await response.json();
193 console.log('Bypass API response:', data);
194
195 updateStatus('Extracting destination...', 80);
196
197 // Handle different response formats
198 let destinationUrl = null;
199
200 if (data.destination) {
201 destinationUrl = data.destination;
202 } else if (data.result) {
203 destinationUrl = data.result;
204 } else if (data.url) {
205 destinationUrl = data.url;
206 } else if (data.bypassed_url) {
207 destinationUrl = data.bypassed_url;
208 }
209
210 if (destinationUrl && destinationUrl !== url) {
211 console.log('Destination URL found:', destinationUrl);
212 showSuccess(destinationUrl);
213
214 // Redirect after a short delay
215 setTimeout(() => {
216 console.log('Redirecting to:', destinationUrl);
217 window.location.href = destinationUrl;
218 }, 1500);
219
220 return true;
221 } else {
222 throw new Error('No valid destination URL found in response');
223 }
224
225 } catch (error) {
226 console.error('Bypass error:', error);
227
228 if (retryCount < MAX_RETRIES) {
229 retryCount++;
230 updateStatus(`Retry ${retryCount}/${MAX_RETRIES}...`, 20);
231 console.log(`Retrying bypass (${retryCount}/${MAX_RETRIES})`);
232
233 setTimeout(() => performBypass(url), 2000);
234 } else {
235 showError('Bypass failed. Please try manually.');
236 console.error('Max retries reached. Bypass failed.');
237 }
238
239 return false;
240 }
241 }
242
243 // Alternative bypass method - extract from page
244 async function extractDestinationFromPage() {
245 try {
246 console.log('Attempting to extract destination from page...');
247 updateStatus('Analyzing page content...', 40);
248
249 // Look for common patterns in the page
250 const scripts = Array.from(document.querySelectorAll('script'));
251
252 for (const script of scripts) {
253 const content = script.textContent || script.innerHTML;
254
255 // Look for URL patterns
256 const urlPatterns = [
257 /target["\s:]+["']([^"']+)["']/i,
258 /destination["\s:]+["']([^"']+)["']/i,
259 /redirect["\s:]+["']([^"']+)["']/i,
260 /url["\s:]+["']([^"']+)["']/i,
261 ];
262
263 for (const pattern of urlPatterns) {
264 const match = content.match(pattern);
265 if (match && match[1] && match[1].startsWith('http')) {
266 console.log('Found potential destination URL:', match[1]);
267 return match[1];
268 }
269 }
270 }
271
272 return null;
273 } catch (error) {
274 console.error('Error extracting from page:', error);
275 return null;
276 }
277 }
278
279 // Initialize bypass
280 async function initBypass() {
281 if (bypassAttempted) {
282 console.log('Bypass already attempted');
283 return;
284 }
285
286 bypassAttempted = true;
287 const currentUrl = window.location.href;
288
289 console.log('Starting bypass for:', currentUrl);
290
291 // Create UI
292 createBypassUI();
293 updateStatus('Detecting Linkvertise link...', 10);
294
295 // Wait a moment for page to load
296 await new Promise(resolve => setTimeout(resolve, 1000));
297
298 // Try API bypass first
299 updateStatus('Attempting API bypass...', 20);
300 await performBypass(currentUrl);
301 }
302
303 // Wait for page to be ready
304 function waitForPageReady() {
305 if (document.readyState === 'loading') {
306 document.addEventListener('DOMContentLoaded', () => {
307 setTimeout(initBypass, 1000);
308 });
309 } else {
310 setTimeout(initBypass, 1000);
311 }
312 }
313
314 // Start the bypass process
315 console.log('Linkvertise Auto Bypass - Starting...');
316 waitForPageReady();
317
318})();