Troubleshooting Guide

This guide covers common issues you may encounter while browsing with Nvirya AdGuard v11.7.0 and provides safe, step-by-step recovery instructions using the controls available in the interface.

A. A Dark Overlay Remains After an Advertisement Is Removed#

1. Symptoms#

  • An advertisement or pop-up box disappears, but the rest of the page remains dimmed behind a semi-transparent black or gray screen.
  • You cannot scroll up or down, or tapping links on the page does nothing.

2. Possible causes#

Many websites render modal advertisements using two separate parts:

  1. The foreground ad container (<div> or <iframe>), and
  2. A separate full-screen backdrop element (often styled with position: fixed, a high z-index, or backdrop-filter: blur(...)) paired with overflow: hidden or position: fixed on the <html> or <body> tag.

Although Nvirya AdGuard automatically searches for paired backdrops (adjacentBackdropNodes) and schedules scroll recovery (scheduleUnlockPageScroll at 0 ms, 120 ms, 420 ms, and 900 ms), a website may insert its backdrop asynchronously or use custom wrapper markup that is not automatically removed alongside the ad.

  1. Open the Nvirya AdGuard control panel by tapping the floating Quick Action Button or pressing Alt+A.
  2. In the Overview tab under Quick Actions, tap Unlock Page Scroll ("Restore scrolling locked by hidden overlays"). This forces overflow: auto !important and resets position: fixed on <html> and <body>.
  3. Tap Clean Leftover Frames ("Collapse empty ad placeholders immediately"), which hides leftover Google ad frames and runs a fresh anti-adblock overlay scan (handleAntiAdblock).
  4. If a visible dark backdrop element is still blocking taps, select Hide Page Element in Quick Actions, tap the dark overlay, and tap Hide Element.

Warning: When using Hide Page Element, check the highlighted border and the Level slider (Level 1/...) before confirming. Do not hide top-level page wrappers (such as <main>, <article>, or #app) if the blue highlight covers the entire page content—if you accidentally hide page content, immediately press Ctrl+Z (or tap Undo (Ctrl+Z) in Quick Actions) to restore it.

4. If the problem persists#

  1. Open the control panel (Alt+A) and tap Preview Original Page (3s) to verify whether a cosmetic rule hid a modal that required user interaction (such as a regional notice or age gate).
  2. Tap Pause for This Session in Quick Actions and reload the page to complete the interaction, then tap Resume Session Protection.

5. When reporting the issue#

Open About → Community & Support → Feedback (or use the feedback modal), select Broken page layout, and briefly note whether Unlock Page Scroll or Clean Leftover Frames resolved the stuck backdrop.

B. Cloudflare or CAPTCHA Verification Does Not Complete#

1. Symptoms#

  • A security challenge page (such as Cloudflare "Just a moment...", Cloudflare Turnstile, hCaptcha, reCAPTCHA, or DDoS-Guard) spins continuously, reloads in a loop, or fails to display the verification checkbox.

2. Possible causes#

Security and bot-verification systems rely on strict browser integrity checks, challenge scripts, cookies, same-origin meta refreshes, and closed Shadow DOM widgets.

Nvirya AdGuard v11.7.0 includes multi-signal scoped exemptions (evaluateSecurityChallengeState, isSecurityChallengeRequest, and isProtectedSecurityElement) that automatically bypass DOM mutation scanning, script blocking, meta-refresh removal, and network interception for:

  • Cloudflare challenges (challenges.cloudflare.com, /cdn-cgi/challenge-platform/, __cf_chl_*, .cf-turnstile)
  • hCaptcha (hcaptcha.com, .h-captcha, [data-hcaptcha-widget-id])
  • Google reCAPTCHA (google.com/recaptcha, recaptcha.net, .g-recaptcha)
  • DDoS-Guard (ddos-guard, #ddg-captcha)

However, verification can still fail if a site embeds a custom challenge wrapper, if JavaScript prototype modifications (such as wrapped window.fetch or Function) trigger a strict integrity check, or if an external VPN/proxy/DNS filter blocks challenge assets.

Important: Nvirya AdGuard is an ad and navigation filter, not a CAPTCHA or DDoS-protection bypass tool. It cannot solve or skip security challenges on your behalf.

Follow these steps in order:

  1. Reload the page once. Transient challenge token expirations often clear on a single refresh.
  2. Verify that Nvirya AdGuard is up to date. Open the About tab and check Storage & Updates → Check for Updates to confirm you are running v11.7.0 or newer.
  3. Temporarily pause the script for the current session or allowlist the site. Open the Overview tab and tap Pause for This Session (or Allow This Site).
  4. Retry verification. Reload the page and complete the Cloudflare or CAPTCHA challenge. Once you pass the challenge and the session cookie is set, you can re-enable protection if you used session pause.
  5. Report the problem if it persists when Nvirya AdGuard is active (and works immediately when paused).

4. If the problem persists#

If verification still fails even after pausing Nvirya AdGuard and reloading the page, the issue is outside the userscript. Common external causes include browser privacy/fingerprinting resistance settings, blocked third-party cookies, an unstable VPN/proxy exit IP, or a custom DNS rule blocking the challenge provider. Do not disable your browser's core security features globally; instead, test whether switching your VPN server or loading the page in a standard browser tab allows the challenge to complete.

5. When reporting the issue#

Select Broken page layout or Other in Send Feedback, mention which verification provider appeared (Cloudflare, Turnstile, hCaptcha, reCAPTCHA, or DDoS-Guard), and note whether pausing Nvirya AdGuard allowed the check to pass.

1. Symptoms#

  • You click a download button or external mirror link and nothing happens, or a modal titled External Link Confirmation appears asking if you want to continue.
  • Clicking Continue shows a toast message (Pop-up was blocked by browser — navigating directly) and opens the file in the current tab instead of a new tab.

2. Possible causes#

Download portals and file-sharing sites frequently attach ad-network scripts to download buttons or route legitimate download links through cross-domain redirect wrappers. In v11.7.0, installRedirectGuard() and classifyUserAnchorNavigation() handle clicks as follows:

  • Trusted file hosts are allowed directly: Links to recognized repositories and cloud hosts (github.com, gitlab.com, sourceforge.net, mega.nz, mediafire.com, drive.google.com, dropbox.com, onedrive.live.com, box.com, fshare.vn, pixeldrain.com, gofile.io, apkmirror.com, archive.org, etc.) open without interruption unless they match an explicit ad domain.
  • Redirect wrapper unwrapping (extractUnwrappedRedirectUrl): If a link uses a redirect query parameter (?url=, ?to=, ?target=, ?dest=, ?redirect=, including Base64-encoded http/https targets), the script extracts the clean destination URL.
  • External Link Confirmation modal (openRedirectConfirmModal): When you click an untrusted cross-site link that opens a new tab (target="_blank"), passes through a redirect/tracking hop, or points to an unfamiliar external download host, Nvirya AdGuard pauses navigation and displays the External Link Confirmation dialog:
    • Message: "This site wants to open an external link:"
    • Destination Badge: Displays the target hostname (e.g., files.example.org).
    • Prompt: "Do you want to continue?"
    • Buttons: Cancel and Continue.
  1. Check the hostname in the External Link Confirmation modal:
    • If the displayed hostname matches the file host or external website you intended to visit, tap Continue. The script adds that hostname to a temporary allowlist for the current tab session (state.tempAllowPopupHosts), clears window.opener (win.opener = null) to prevent reverse tabnabbing, and opens the link (falling back to direct navigation in the current tab if your browser's native pop-up blocker blocks window.open).
    • If the displayed hostname looks unrelated or suspicious, tap Cancel to stay on the current page.
  2. If no confirmation dialog appears and the button does nothing:
    • Some sites require an initial ad script click handler before revealing the real download button. Wait 1–2 seconds and tap the button a second time (triggerAdInterceptedAction automatically retries standard download/continue buttons after 60 ms when an ad popup is blocked, but custom script buttons may require a second tap).
    • Tap Preview Original Page (3s) in Overview → Quick Actions to see if a secondary download link or countdown timer was hidden by a cosmetic rule.

Safety Warning: Do not blindly allowlist untrusted file-sharing sites or open unfamiliar external domains without checking the hostname shown in the External Link Confirmation dialog.

4. If the problem persists#

Temporarily tap Pause for This Session in Overview → Quick Actions, reload the page, and inspect where the download button leads before proceeding.

5. When reporting the issue#

Use Send Feedback with the category Broken page layout or Other, and describe which download button on the page failed to respond.

D. Google Translate or Bing Translator Is Slow or Broken#

1. Symptoms#

  • Text entered into Google Translate or Bing Translator does not translate, audio pronunciation buttons fail, or a page translated through *.translate.goog does not load its scripts properly.

2. Possible causes#

Translation web apps make frequent background fetch and XMLHttpRequest calls and dynamically update DOM attributes (jscontroller, jsaction, jsname) as you type.

Nvirya AdGuard v11.7.0 includes dedicated compatibility exemptions (isTranslatorHostOrUrl, isTranslatorWhitelistedRequest, and isProtectedTranslatorElement) for:

  • Google Translate: translate.google.<tld> (including regional domains such as .com, .co.uk, .com.vn, .co.in), *.translate.goog proxy domains, translate.googleapis.com, translate-pa.googleapis.com, and Google Translate widget frames (.goog-te-banner-frame, .goog-te-gadget, .skiptranslate).
  • Bing & Microsoft Translator: bing.com/translator (including www.bing.com and cn.bing.com), RPC endpoints (/ttranslatev3, /tfetspktok, /tlookupv3, /tspeakv3, /tspellcheckv3), api.cognitive.microsofttranslator.com, edge.microsoft.com/translate/, and #tta_input_ta / #tta_output_ta containers.

If translation is still slow or broken, the cause typically falls into one of three categories:

  1. Outdated script version or custom site rule: An older version of the script or a manually created rule in Site Filter Rules / Connection Log is blocking a required element or domain.
  2. Browser built-in translation feature: Mobile Safari or Chrome's built-in page translation (which runs inside the browser itself rather than on translate.google.com) is encountering rate limits or DOM conflicts.
  3. External DNS or VPN blocking: A network-level blocker is blocking translate.googleapis.com, play.google.com/log, gstatic.com, or bat.bing.com.
  1. Reload the page once.
  2. Open About → Storage & Updates and tap Check for Updates to ensure you are on v11.7.0 or newer.
  3. Open Overview → Site Filter Rules and Connection Log to verify that you have not manually hidden page elements or blocked Google/Microsoft API domains on that site.
  4. If you are translating a third-party website via a proxy URL or inline widget and it still fails, tap Pause for This Session (or Allow This Site if it is a trusted translation domain you use regularly).

Note: While official translation interfaces (translate.google.com and bing.com/translator) have built-in protections, third-party websites viewed through a translation proxy can still contain malicious redirects or ads. Prefer Pause for This Session when testing an unfamiliar translated page rather than permanently disabling protection everywhere.

4. If the problem persists#

Test whether the translation service works when Nvirya AdGuard is paused for the session. If it still fails while paused, check your VPN, DNS filter, or browser's built-in translation settings.

5. When reporting the issue#

Submit a report via Send Feedback under Broken page layout, noting whether you were using translate.google.*, bing.com/translator, a *.translate.goog link, or a browser's built-in translation bar.

E. A Page Becomes Slow or Unresponsive#

1. Symptoms#

  • Scrolling stutters, typing into a search box lags, or the browser tab freezes for several seconds when loading a specific website.

2. Possible causes#

  • The website continuously mutates thousands of DOM nodes per second, triggering repeated observer batches.
  • Deep Network Filter (strictMode) is enabled in Settings, causing single-signal cosmetic checks (signals >= 1) to evaluate and hide additional elements.
  • An anti-adblock script on the page is stuck in a rapid retry loop trying to re-insert a blocked ad or overlay.

To determine whether Nvirya AdGuard is responsible for the slowdown on that site:

  1. Open the control panel (Alt+A) and tap Pause for This Session under Overview → Quick Actions.
  2. Reload the page so the site loads cleanly without userscript hooks or DOM observers.
  3. Compare the page behavior with the script paused versus active:
    • If the page is still slow when paused, the slowdown is caused by the website itself, your device/browser, or another extension.
    • If the page becomes smooth immediately when paused, Nvirya AdGuard is interacting poorly with that specific page's scripts or DOM structure.
  4. If Deep Network Filter is turned on in Settings, try turning it off and reloading with protection resumed to see if standard filtering performs normally.

4. If the problem persists#

Tap Allow This Site in Overview → Quick Actions to keep protection paused on that domain while waiting for a script fix.

5. When reporting the issue#

Re-enable protection briefly on the affected page (or copy diagnostics before allowlisting), open About → Community & Support → Feedback, select Other (or Broken page layout), and describe what action triggers the slowdown (for example, "Page freezes when scrolling past the comments section"). You do not need to open a browser developer console or run a performance profiler.

F. An Advertisement Is Still Visible#

1. Symptoms#

  • A banner ad, sponsored feed item, floating box, or video ad remains visible on the page while Nvirya AdGuard is active.

2. Possible causes#

  • First-party or obfuscated delivery: The website serves advertisements from its own domain name using randomized CSS classes (such as Tailwind/CSS-in-JS hashes) that do not match built-in selectors.
  • New ad-network domain: The ad is served from a newly registered domain not yet included in RE_AD_HOST or RE_SUSPECT_TLD.
  • Intentional safety thresholds: To avoid deleting legitimate articles, images, or video players, inspectNode() requires at least two independent ad signals (signals >= 2) before removing generic containers when Deep Network Filter is off, and skips elements inside news article contexts (isNewsThumbnailContext) or containing substantial text (>= 50 characters).
  1. For static banners or floating boxes: Open Overview → Quick Actions and tap Hide Page Element. Tap the advertisement, adjust the Level slider (Expand / Narrow) until the blue highlight frames the entire ad container without selecting page content, and tap Hide Element (or Hide All if multiple identical slots exist).
  2. For third-party ad domains: Open Overview → Quick Actions → Connection Log, look for the unfamiliar third-party domain serving the ad, and tap Block.
  3. For leftover Google ad frames: Tap Clean Leftover Frames in Quick Actions.

4. If the problem persists#

Some advertisements—especially server-side stitched video ads or first-party sponsored cards that share the exact same HTML structure as normal posts—cannot be hidden with a simple CSS selector without hiding legitimate content on the same page.

5. When reporting the issue#

Open About → Community & Support → Feedback, select Missed ad, and include a short note describing where the ad appears on the page (for example, "Sticky banner at the bottom of article pages" or "Pop-up opens when tapping the video player"). The report automatically includes the hostname and sanitized page URL.