Automatically bypass Linkvertise wait times and access content immediately
Size
5.6 KB
Version
1.0.1
Created
Feb 1, 2026
Updated
2 months ago
1// ==UserScript==
2// @name Linkvertise Wait Time Bypass
3// @description Automatically bypass Linkvertise wait times and access content immediately
4// @version 1.0.1
5// @match https://*.linkvertise.com/*
6// @icon https://linkvertise.com/favicon.ico
7// @grant GM.getValue
8// @grant GM.setValue
9// ==/UserScript==
10(function() {
11 'use strict';
12
13 console.log('Linkvertise Bypass Extension loaded');
14
15 // Function to bypass the wait time
16 function bypassWaitTime() {
17 console.log('Attempting to bypass wait time...');
18
19 // Method 1: Try to find and click the continue button directly
20 const continueButton = document.querySelector('.action-wall__button button[data-testid="lv-button"]');
21 if (continueButton && !continueButton.disabled) {
22 console.log('Continue button found, attempting to click...');
23 continueButton.click();
24 return true;
25 }
26
27 // Method 2: Look for any timer elements and try to manipulate them
28 const timerElements = document.querySelectorAll('.membership-price__wrapper div');
29 timerElements.forEach(el => {
30 if (el.textContent.includes('Wait')) {
31 console.log('Found wait timer:', el.textContent);
32 // Try to set the timer to 0
33 el.textContent = 'Wait 00:00';
34 }
35 });
36
37 // Method 3: Try to find the target URL in the page and redirect directly
38 const links = document.querySelectorAll('a[href]');
39 for (const link of links) {
40 const href = link.getAttribute('href');
41 // Look for the actual destination URL (usually contains /dynamic/ or similar)
42 if (href && (href.includes('/dynamic/') || href.includes('target='))) {
43 console.log('Found potential target link:', href);
44 // Extract the actual URL if it's encoded
45 try {
46 const url = new URL(href, window.location.origin);
47 const targetParam = url.searchParams.get('target');
48 if (targetParam) {
49 console.log('Redirecting to target:', targetParam);
50 window.location.href = decodeURIComponent(targetParam);
51 return true;
52 }
53 } catch (e) {
54 console.log('Error parsing URL:', e);
55 }
56 }
57 }
58
59 // Method 4: Check localStorage/sessionStorage for stored data
60 try {
61 const storage = { ...localStorage, ...sessionStorage };
62 console.log('Checking storage for bypass data...');
63
64 // Look for any stored timer or access data
65 for (const key in storage) {
66 if (key.includes('timer') || key.includes('wait') || key.includes('access')) {
67 console.log('Found storage key:', key, storage[key]);
68 }
69 }
70 } catch (e) {
71 console.log('Storage check error:', e);
72 }
73
74 return false;
75 }
76
77 // Function to monitor for changes and attempt bypass
78 function monitorAndBypass() {
79 console.log('Setting up monitoring...');
80
81 // Try immediate bypass
82 setTimeout(() => {
83 bypassWaitTime();
84 }, 1000);
85
86 // Set up a MutationObserver to watch for DOM changes
87 const observer = new MutationObserver((mutations) => {
88 // Check if the continue button becomes available
89 const continueButton = document.querySelector('.action-wall__button button[data-testid="lv-button"]');
90 if (continueButton && !continueButton.disabled) {
91 console.log('Continue button is now available!');
92 continueButton.click();
93 }
94 });
95
96 // Start observing the document for changes
97 observer.observe(document.body, {
98 childList: true,
99 subtree: true,
100 attributes: true,
101 attributeFilter: ['disabled', 'class']
102 });
103
104 // Also try periodic checks
105 const intervalId = setInterval(() => {
106 const success = bypassWaitTime();
107 if (success) {
108 clearInterval(intervalId);
109 observer.disconnect();
110 }
111 }, 2000);
112
113 // Stop trying after 30 seconds
114 setTimeout(() => {
115 clearInterval(intervalId);
116 observer.disconnect();
117 console.log('Bypass attempts completed');
118 }, 30000);
119 }
120
121 // Wait for the page to be fully loaded
122 if (document.readyState === 'loading') {
123 document.addEventListener('DOMContentLoaded', monitorAndBypass);
124 } else {
125 monitorAndBypass();
126 }
127
128 // Also try to intercept any timer-related JavaScript
129 const originalSetTimeout = window.setTimeout;
130 window.setTimeout = function(callback, delay, ...args) {
131 // If it's a long delay (like for a timer), reduce it significantly
132 if (delay > 10000) {
133 console.log('Intercepted long setTimeout:', delay, 'ms - reducing to 100ms');
134 delay = 100;
135 }
136 return originalSetTimeout.call(this, callback, delay, ...args);
137 };
138
139 const originalSetInterval = window.setInterval;
140 window.setInterval = function(callback, delay, ...args) {
141 // If it's a timer interval, speed it up
142 if (delay > 1000) {
143 console.log('Intercepted setInterval:', delay, 'ms - reducing to 100ms');
144 delay = 100;
145 }
146 return originalSetInterval.call(this, callback, delay, ...args);
147 };
148
149 console.log('Linkvertise Bypass Extension initialized');
150})();