Linkvertise & Luarmor Auto Bypass

Automatically bypass Linkvertise and Luarmor ads without bans

Size

8.7 KB

Version

1.0.1

Created

Jan 1, 2026

Updated

about 1 month ago

1// ==UserScript==
2// @name		Linkvertise & Luarmor Auto Bypass
3// @description		Automatically bypass Linkvertise and Luarmor ads without bans
4// @version		1.0.1
5// @match		https://*.rip.linkvertise.lol/*
6// @match		https://*.luarmor.net/*
7// @match		https://luarmor.net/*
8// @match		https://*.linkvertise.com/*
9// @match		https://linkvertise.com/*
10// @icon		https://rip.linkvertise.lol/favicon.ico
11// ==/UserScript==
12(function() {
13    'use strict';
14
15    console.log('Linkvertise & Luarmor Auto Bypass extension loaded');
16
17    // Detect which site we're on
18    const currentUrl = window.location.href;
19    const isLinkvertise = currentUrl.includes('linkvertise.com');
20    const isLuarmor = currentUrl.includes('luarmor.net');
21    const isBypassTool = currentUrl.includes('rip.linkvertise.lol');
22
23    // Configuration for human-like behavior to avoid bans
24    const config = {
25        minDelay: 2000,  // Minimum delay in ms
26        maxDelay: 4000,  // Maximum delay in ms
27        scrollDelay: 500, // Delay between scroll actions
28        clickDelay: 1000  // Delay before clicking
29    };
30
31    // Utility function to wait with random delay
32    function randomDelay(min = config.minDelay, max = config.maxDelay) {
33        return new Promise(resolve => {
34            const delay = Math.floor(Math.random() * (max - min + 1)) + min;
35            console.log(`Waiting ${delay}ms to appear human-like...`);
36            setTimeout(resolve, delay);
37        });
38    }
39
40    // Simulate human-like scrolling
41    async function humanScroll() {
42        console.log('Simulating human scroll behavior...');
43        const scrollAmount = Math.floor(Math.random() * 300) + 100;
44        window.scrollBy({
45            top: scrollAmount,
46            behavior: 'smooth'
47        });
48        await randomDelay(config.scrollDelay, config.scrollDelay + 500);
49    }
50
51    // Simulate mouse movement (creates mouse events)
52    function simulateMouseMovement(element) {
53        const rect = element.getBoundingClientRect();
54        const x = rect.left + rect.width / 2;
55        const y = rect.top + rect.height / 2;
56        
57        const mouseoverEvent = new MouseEvent('mouseover', {
58            bubbles: true,
59            cancelable: true,
60            view: window,
61            clientX: x,
62            clientY: y
63        });
64        
65        element.dispatchEvent(mouseoverEvent);
66        console.log('Simulated mouse movement over element');
67    }
68
69    // Safe click with human-like behavior
70    async function humanClick(element, description = 'element') {
71        if (!element) {
72            console.error(`Cannot click ${description}: element not found`);
73            return false;
74        }
75
76        console.log(`Preparing to click ${description}...`);
77        
78        // Scroll element into view
79        element.scrollIntoView({ behavior: 'smooth', block: 'center' });
80        await randomDelay(500, 1000);
81
82        // Simulate mouse movement
83        simulateMouseMovement(element);
84        await randomDelay(300, 600);
85
86        // Click the element
87        console.log(`Clicking ${description}...`);
88        element.click();
89        
90        return true;
91    }
92
93    // Linkvertise bypass logic
94    async function bypassLinkvertise() {
95        console.log('Starting Linkvertise bypass...');
96        
97        await randomDelay();
98        await humanScroll();
99
100        // Look for common Linkvertise bypass elements
101        const selectors = [
102            'a[href*="get-link"]',
103            'button[class*="get-link"]',
104            'a.btn-primary',
105            'button.btn-primary',
106            'a[class*="continue"]',
107            'button[class*="continue"]',
108            '#skip-btn',
109            '.skip-btn',
110            'a[href*="skip"]',
111            'button[id*="skip"]'
112        ];
113
114        for (const selector of selectors) {
115            const element = document.querySelector(selector);
116            if (element && element.offsetParent !== null) {
117                console.log(`Found bypass element: ${selector}`);
118                await humanClick(element, 'bypass button');
119                return;
120            }
121        }
122
123        // Try to find and click any visible "Free Access" or similar buttons
124        const buttons = document.querySelectorAll('button, a');
125        for (const button of buttons) {
126            const text = button.textContent.toLowerCase();
127            if (text.includes('free') || text.includes('access') || text.includes('continue') || 
128                text.includes('skip') || text.includes('get link')) {
129                console.log(`Found potential bypass button with text: ${button.textContent}`);
130                await humanClick(button, 'text-based bypass button');
131                return;
132            }
133        }
134
135        console.log('No bypass elements found, waiting for page to load...');
136    }
137
138    // Luarmor bypass logic
139    async function bypassLuarmor() {
140        console.log('Starting Luarmor bypass...');
141        
142        await randomDelay();
143        await humanScroll();
144
145        // Look for Luarmor-specific bypass elements
146        const selectors = [
147            'button[class*="checkpoint"]',
148            'a[class*="checkpoint"]',
149            'button[class*="continue"]',
150            'a[class*="continue"]',
151            'button[id*="continue"]',
152            'a[id*="continue"]',
153            '.btn-continue',
154            '#continue-btn',
155            'button[type="submit"]',
156            'a.btn',
157            'button.btn'
158        ];
159
160        for (const selector of selectors) {
161            const element = document.querySelector(selector);
162            if (element && element.offsetParent !== null) {
163                console.log(`Found Luarmor bypass element: ${selector}`);
164                await humanClick(element, 'Luarmor bypass button');
165                
166                // Wait and check for next step
167                await randomDelay(2000, 3000);
168                
169                // Look for next button if exists
170                const nextButton = document.querySelector('button[class*="next"], a[class*="next"], button[class*="continue"]');
171                if (nextButton && nextButton.offsetParent !== null) {
172                    console.log('Found next step button');
173                    await humanClick(nextButton, 'next step button');
174                }
175                return;
176            }
177        }
178
179        // Try to find checkpoint or continue buttons by text
180        const buttons = document.querySelectorAll('button, a');
181        for (const button of buttons) {
182            const text = button.textContent.toLowerCase();
183            if (text.includes('checkpoint') || text.includes('continue') || 
184                text.includes('next') || text.includes('proceed') || text.includes('verify')) {
185                console.log(`Found Luarmor button with text: ${button.textContent}`);
186                await humanClick(button, 'Luarmor text-based button');
187                return;
188            }
189        }
190
191        console.log('No Luarmor bypass elements found yet...');
192    }
193
194    // Monitor for dynamic content changes
195    function setupObserver(callback) {
196        const observer = new MutationObserver(async (mutations) => {
197            for (const mutation of mutations) {
198                if (mutation.addedNodes.length > 0) {
199                    console.log('Page content changed, checking for bypass elements...');
200                    await randomDelay(1000, 2000);
201                    callback();
202                    break;
203                }
204            }
205        });
206
207        observer.observe(document.body, {
208            childList: true,
209            subtree: true
210        });
211
212        console.log('Mutation observer set up');
213        return observer;
214    }
215
216    // Main initialization function
217    async function init() {
218        console.log(`Current URL: ${currentUrl}`);
219        
220        if (isBypassTool) {
221            console.log('On bypass tool site - no action needed');
222            return;
223        }
224
225        // Wait for page to be fully loaded
226        if (document.readyState !== 'complete') {
227            console.log('Waiting for page to load...');
228            await new Promise(resolve => {
229                window.addEventListener('load', resolve);
230            });
231        }
232
233        await randomDelay(1500, 2500);
234
235        if (isLinkvertise) {
236            console.log('Detected Linkvertise site');
237            await bypassLinkvertise();
238            
239            // Set up observer for dynamic content
240            setupObserver(bypassLinkvertise);
241        } else if (isLuarmor) {
242            console.log('Detected Luarmor site');
243            await bypassLuarmor();
244            
245            // Set up observer for dynamic content
246            setupObserver(bypassLuarmor);
247        }
248
249        console.log('Bypass extension initialized');
250    }
251
252    // Start the extension
253    init().catch(error => {
254        console.error('Error in bypass extension:', error);
255    });
256
257})();
Linkvertise & Luarmor Auto Bypass | Robomonkey