Linkvertise Auto Bypass - Free & Premium

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})();