मुफ़्त APK बनाएँ

ऐप शेल और नेविगेशन

स्मार्ट यूज़र स्क्रिप्ट्स

URL मैचिंग और टाइमिंग के साथ हर साइट के लिए स्क्रिप्ट (Greasemonkey की तरह)

1स्मार्ट यूज़र स्क्रिप्ट क्या हैं?#

स्मार्ट यूज़र स्क्रिप्ट अलग-अलग नाम वाली स्क्रिप्ट हैं - हर एक की अपनी:
🌐 URL मैच पैटर्न (किन पेजों पर चलना है)
⏱ Run-at टाइमिंग (लोड से पहले, लोड के दौरान या बाद)
✅ Enable/Disable टॉगल

ये डेस्कटॉप ब्राउज़र के Greasemonkey या Tampermonkey की तरह काम करती हैं - लेकिन सीधे आपके ऐप में बनी हुई।

✅ इनके लिए बिल्कुल सही:

  • ऑटो-लॉगिन सिर्फ़ /login पेज पर
  • विज्ञापन सिर्फ़ आर्टिकल पेज पर छिपाएँ (https://news.com/article/*)
  • MutationObserver से DOM बदलावों पर नज़र रखें
  • फ़्लैश से बचने के लिए पेज रेंडर होने से पहले (document-start) इंजेक्ट करें

Quick Injection से मुख्य अंतर:
Quick Injection = सभी पेजों पर एक ही CSS/JS
Smart User Scripts = हर स्क्रिप्ट, हर URL, हर टाइमिंग पर अलग नियंत्रण

2इसे कहाँ पाएँ#

चरण 4 (Permissions) → नीचे स्क्रॉल करें → 🤖 Smart User Scripts कार्ड।

नई स्क्रिप्ट बनाने के लिए '+ Add' दबाएँ। हर स्क्रिप्ट में होता है:

  • Name - मैनेजर की सूची में दिखता है
  • URL Match Patterns - हर पंक्ति में एक (* वाइल्डकार्ड समर्थित)
  • Run At - document-end / document-start / document-idle
  • Code - आपका JavaScript
  • Enabled टॉगल

स्क्रिप्ट बदलने या डिलीट करने के लिए किसी भी पंक्ति पर टैप करें।

3URL मैच पैटर्न के उदाहरण#

पैटर्न तय करते हैं कि स्क्रिप्ट किन पेजों पर चलेगी। वाइल्डकार्ड के लिए * इस्तेमाल करें:

# Run on every page of every site
*://*/*

# Run only on example.com (any path)
https://example.com/*

# Run on ALL pages of ANY .com domain
https://*.com/*

# Run only on the /login path
https://example.com/login
https://example.com/login/*

# Run on news article pages
https://news.example.com/article/*

4Run-At टाइमिंग की व्याख्या#

  • document-end (डिफ़ॉल्ट)

पेज लोड पूरा होने के बाद चलती है। सुरक्षित, सबसे ज़्यादा संगत। एलिमेंट छिपाने, बटन जोड़ने और ट्रैकिंग के लिए इस्तेमाल करें।

  • document-start ⚡ (एडवांस्ड)

पेज रेंडर होने से पहले चलती है। shouldInterceptRequest के ज़रिए स्क्रिप्ट को कच्चे HTML में इंजेक्ट करती है। CSP हेडर हटा देती है। डार्क-मोड CSS के लिए या लेआउट पेंट से पहले व्यूपोर्ट तय करने के लिए इस्तेमाल करें।

  • document-idle ⏱

पेज लोड के 1.5 सेकंड बाद चलती है। देर से लोड होने वाले AJAX कंटेंट या कुछ देर बाद आने वाले मोडल पकड़ने के लिए अच्छी।

5उदाहरण 1: ऑटो-लॉगिन सिर्फ़ /login पर#

Match: https://myapp.com/login
Run-at: document-end

// Auto-fill login form
(function() {
  var email = document.querySelector('input[type=email], input[name=email]');
  var pass  = document.querySelector('input[type=password]');
  if (email) email.value = '[email protected]';
  if (pass)  pass.value  = 'mypassword';
  // Uncomment to auto-submit:
  // var form = document.querySelector('form');
  // if (form) form.submit();
})();

6उदाहरण 2: आर्टिकल पेज पर पेवॉल छिपाएँ#

Match: https://news.site.com/article/*
Run-at: document-end

// Hide paywall overlay and restore scroll
(function() {
  var overlay = document.querySelector('.paywall-overlay, .metered-content, #paywall');
  if (overlay) overlay.remove();
  document.body.style.overflow = 'auto';
  document.documentElement.style.overflow = 'auto';
})();

7उदाहरण 3: डायनामिक कंटेंट पर नज़र रखें (MutationObserver)#

Match: *://*/*
Run-at: document-end
पेज लोड के बाद आने वाले एलिमेंट के लिए (लेज़ी-लोड मोडल, विज्ञापन):

// Remove any modal/popup that appears dynamically
(function() {
  var sel = '.modal, .popup, .overlay, [class*="modal"], [class*="popup"]';
  // Remove existing ones first
  document.querySelectorAll(sel).forEach(function(el) { el.remove(); });
  // Watch for new ones
  var obs = new MutationObserver(function() {
    document.querySelectorAll(sel).forEach(function(el) { el.remove(); });
  });
  obs.observe(document.body, { childList: true, subtree: true });
  // Stop watching after 30 s to save battery
  setTimeout(function() { obs.disconnect(); }, 30000);
})();

8उदाहरण 4: रेंडर से पहले डार्क मोड लागू करें (document-start)#

Match: *://*/*
Run-at: document-start
पेज पेंट होने से पहले CSS इंजेक्ट करता है - सफ़ेद फ़्लैश नहीं आता:

// Inject dark theme before page renders
(function() {
  var s = document.createElement('style');
  s.id = '__force_dark__';
  s.textContent = [
    'html { filter: invert(1) hue-rotate(180deg) !important; }',
    'img,video,canvas,svg { filter: invert(1) hue-rotate(180deg) !important; }'
  ].join('\
');
  (document.head || document.documentElement).appendChild(s);
})();

9उदाहरण 5: कस्टम एनालिटिक्स / इवेंट ट्रैकिंग#

Match: https://myshop.com/*
Run-at: document-idle
पेज पूरी तरह स्थिर होने के बाद कस्टम इवेंट भेजें:

// Track page views + button clicks
(function() {
  // Page view
  console.log('[Analytics] Page: ' + location.href);

  // Track all CTA button clicks
  document.querySelectorAll('button, .btn, a[href]').forEach(function(el) {
    el.addEventListener('click', function() {
      console.log('[Analytics] Clicked: ' + (el.textContent || el.href));
      // Replace with your own tracker call, e.g. gtag('event', ...)
    });
  });
})();

10सुरक्षा और सीमाएँ#

⚡ document-start मेल खाने वाले पेज के Content-Security-Policy हेडर हटा देता है। इसे सिर्फ़ उन साइट पर इस्तेमाल करें जो आपकी अपनी हैं या जिन पर आप साफ़ तौर पर भरोसा करते हैं।

🔒 Same-Origin Policy: JS क्रॉस-ओरिजिन iframe (PayPal, Stripe, Google लॉगिन) तक नहीं पहुँच सकता। यह ब्राउज़र इंजन लागू करता है और इसे टाला नहीं जा सकता।

📵 सिर्फ़ HTTPS: इंजेक्ट की गई स्क्रिप्ट में geolocation या कैमरा जैसे API के लिए HTTPS ज़रूरी है।

✅ दोहरे रन से सुरक्षा: हर स्क्रिप्ट एक विंडो फ़्लैग से सुरक्षित है, इसलिए वह हर पेज पर सिर्फ़ एक बार चलती है।

✅ ऑफ़लाइन भी चलती है: स्मार्ट यूज़र स्क्रिप्ट ZIP में बंडल किए ऑफ़लाइन ऐप में भी चलती हैं।

यह पेज ऐप के अंदर की इंटीग्रेशन गाइड से बनाया गया है, इसलिए इसमें वही लिखा है जो मौजूदा बिल्ड में है। इसे Markdown में पढ़ें.

2026-10-03 को शिप की गई गाइड से मिलान किया गया।