Online No-Buster

Opens multiple paths and subdomains for a given domain in separate tabs

Size

8.2 KB

Version

1.1.3

Created

Feb 4, 2026

Updated

13 days ago

1// ==UserScript==
2// @name		Online No-Buster
3// @description		Opens multiple paths and subdomains for a given domain in separate tabs
4// @version		1.1.3
5// @match		https://*.google.com/*
6// @icon		https://www.gstatic.com/images/branding/searchlogo/ico/favicon.ico
7// ==/UserScript==
8(function() {
9    'use strict';
10    
11    console.log('Online No-Buster');
12    
13    // List of all paths and subdomains to check
14    const urlPaths = [
15        '/en',
16        '/global',
17        '/Login',
18        '/login',
19        '/Login.php',
20        '/login.php',
21        '/EN',
22        '/online',
23        '/Global',
24        '/robots.txt',
25        '/us',
26        '/s',
27        '/home',
28        '/main',
29        '/index.php',
30        '/index.html',
31        '/homes.php',
32        '/_en',
33        '/web',
34        '/Home',
35        '/home.php',
36        '/banks',
37        '/bank',
38        '/personal',
39        '/en/index.html',
40        '/en/index.php',
41        '/uk',
42        '/personal-banking',
43        '/en/home',
44        '/account',
45        '/mobile',
46        '/auth',
47        '/ib',
48        '/en-global',
49        '/online/login',
50        '/user',
51        '/secured',
52        '/about-us',
53        '/1',
54        '/welcome',
55        '/support',
56        '/Verify',
57        '/lb',
58        '/client'
59    ];
60    
61    const subdomains = [
62        'secure',
63        'login',
64        'auth',
65        'online',
66        'en',
67        'ibank'
68    ];
69    
70    function createDomainExplorerUI() {
71        // Create the main container
72        const container = document.createElement('div');
73        container.id = 'domain-explorer-container';
74        container.style.cssText = `
75            position: fixed;
76            top: 20px;
77            right: 20px;
78            width: 320px;
79            background: #ffffff;
80            border: 2px solid #4285f4;
81            border-radius: 8px;
82            padding: 20px;
83            box-shadow: 0 4px 12px rgba(0,0,0,0.15);
84            z-index: 10000;
85            font-family: Arial, sans-serif;
86            font-size: 14px;
87        `;
88        
89        // Create title
90        const title = document.createElement('h3');
91        title.textContent = 'Multi-URL Domain Explorer';
92        title.style.cssText = `
93            margin: 0 0 15px 0;
94            color: #333;
95            font-size: 16px;
96            font-weight: bold;
97        `;
98        
99        // Create input field
100        const input = document.createElement('input');
101        input.type = 'text';
102        input.placeholder = 'Enter domain (e.g., example.com)';
103        input.style.cssText = `
104            width: 100%;
105            padding: 10px;
106            border: 1px solid #ddd;
107            border-radius: 4px;
108            margin-bottom: 15px;
109            box-sizing: border-box;
110            font-size: 14px;
111        `;
112        
113        // Create button
114        const button = document.createElement('button');
115        button.textContent = 'Open Multiple URLs';
116        button.style.cssText = `
117            width: 100%;
118            padding: 12px;
119            background: #4285f4;
120            color: white;
121            border: none;
122            border-radius: 4px;
123            cursor: pointer;
124            font-size: 14px;
125            font-weight: bold;
126        `;
127        
128        // Create status display
129        const status = document.createElement('div');
130        status.style.cssText = `
131            margin-top: 10px;
132            padding: 8px;
133            background: #f8f9fa;
134            border-radius: 4px;
135            font-size: 12px;
136            color: #666;
137            display: none;
138        `;
139        
140        // Create close button
141        const closeButton = document.createElement('button');
142        closeButton.textContent = '×';
143        closeButton.style.cssText = `
144            position: absolute;
145            top: 5px;
146            right: 10px;
147            background: none;
148            border: none;
149            font-size: 20px;
150            cursor: pointer;
151            color: #999;
152            width: 25px;
153            height: 25px;
154        `;
155        
156        // Add hover effects
157        button.addEventListener('mouseenter', () => {
158            button.style.background = '#3367d6';
159        });
160        
161        button.addEventListener('mouseleave', () => {
162            button.style.background = '#4285f4';
163        });
164        
165        closeButton.addEventListener('mouseenter', () => {
166            closeButton.style.color = '#333';
167        });
168        
169        closeButton.addEventListener('mouseleave', () => {
170            closeButton.style.color = '#999';
171        });
172        
173        // Add click handlers
174        closeButton.addEventListener('click', () => {
175            container.remove();
176        });
177        
178        button.addEventListener('click', async () => {
179            const domain = input.value.trim();
180            if (!domain) {
181                alert('Please enter a domain');
182                return;
183            }
184            
185            // Clean domain (remove protocol if present)
186            const cleanDomain = domain.replace(/^https?:\/\//, '').replace(/\/$/, '');
187            
188            status.style.display = 'block';
189            status.textContent = 'Opening URLs...';
190            button.disabled = true;
191            button.textContent = 'Opening...';
192            
193            try {
194                await openAllUrls(cleanDomain, status);
195                status.textContent = `Successfully opened ${urlPaths.length + subdomains.length} URLs!`;
196                button.textContent = 'Open Multiple URLs';
197                button.disabled = false;
198            } catch (error) {
199                console.error('Error opening URLs:', error);
200                status.textContent = 'Error occurred while opening URLs';
201                button.textContent = 'Open Multiple URLs';
202                button.disabled = false;
203            }
204        });
205        
206        // Allow Enter key to trigger button
207        input.addEventListener('keypress', (e) => {
208            if (e.key === 'Enter') {
209                button.click();
210            }
211        });
212        
213        // Assemble the UI
214        container.appendChild(closeButton);
215        container.appendChild(title);
216        container.appendChild(input);
217        container.appendChild(button);
218        container.appendChild(status);
219        
220        document.body.appendChild(container);
221        
222        console.log('Domain Explorer UI created');
223    }
224    
225    async function openAllUrls(domain, statusElement) {
226        let openedCount = 0;
227        const totalUrls = urlPaths.length + subdomains.length;
228        
229        // Open all path URLs
230        for (const path of urlPaths) {
231            const url = `https://${domain}${path}`;
232            console.log('Opening URL:', url);
233            
234            try {
235                await GM.openInTab(url, true); // Open in background
236                openedCount++;
237                statusElement.textContent = `Opened ${openedCount}/${totalUrls} URLs...`;
238                
239                // Small delay to prevent overwhelming the browser
240                await new Promise(resolve => setTimeout(resolve, 100));
241            } catch (error) {
242                console.error('Failed to open URL:', url, error);
243            }
244        }
245        
246        // Open all subdomain URLs
247        for (const subdomain of subdomains) {
248            const url = `https://${subdomain}.${domain}`;
249            console.log('Opening URL:', url);
250            
251            try {
252                await GM.openInTab(url, true); // Open in background
253                openedCount++;
254                statusElement.textContent = `Opened ${openedCount}/${totalUrls} URLs...`;
255                
256                // Small delay to prevent overwhelming the browser
257                await new Promise(resolve => setTimeout(resolve, 100));
258            } catch (error) {
259                console.error('Failed to open URL:', url, error);
260            }
261        }
262        
263        console.log(`Successfully opened ${openedCount} URLs for domain: ${domain}`);
264    }
265    
266    // Initialize the extension
267    function init() {
268        // Wait for page to be ready
269        if (document.readyState === 'loading') {
270            document.addEventListener('DOMContentLoaded', createDomainExplorerUI);
271        } else {
272            createDomainExplorerUI();
273        }
274    }
275    
276    // Start the extension
277    init();
278})();
Online No-Buster | Robomonkey