A powerful, high-performance pop-up blocker for Chrome and Firefox (Manifest V3). Inspired by Ichika Hoshino & Wonderhoy from Project Sekai, this extension combines aggressive blocking techniques with a clean, hand-crafted UI.
Most pop-up blockers fail against modern, aggressive ad networks because they operate in the browser's "isolated world" (where standard content scripts run). This means page scripts can still easily bypass them using obfuscated window.open calls or synthetic clicks.
Astra solves this by injecting its core interceptor directly into the MAIN world. It lives alongside the website's own scripts, allowing it to hook directly into native APIs before the page even loads.
-
MAIN World Interception (
src/lib/page-inject.js) We patch native browser APIs directly in the page context:- Overrides
window.opento return a dummyWindowProxy, neutralizing pop-ups and preventing script errors. - Patches
EventTarget.prototype.dispatchEventto detect and ignore synthetic clicks. - Intercepts string-based
setTimeout/setIntervalcalls that try to evaluatewindow.open. - Hooks into
Location.prototype.hrefto stop sneaky cross-origin redirects. - Enforces a strict 1200ms "gesture TTL"—if a user click didn't happen recently, new windows are blocked.
- Overrides
-
Overlay Mask Neutralization Aggressive sites often place transparent
<div>overlays across the entire screen to hijack your first click. Usingdocument.elementsFromPoint, Astra detects these invisible traps and strips their pointer events instantly. -
Background Tab Monitoring The service worker watches for tabs that open to
about:blankand abruptly navigate away (the classic "pop-under" pattern) and immediately kills them. -
Network Level (DNR) Uses Chrome's
declarativeNetRequestAPI to kill requests to 25+ notorious pop-up/pop-under ad networks (PopAds, PropellerAds, Monetag, ExoClick, etc.) at the engine level.
Astra is built with Vanilla HTML/CSS, but uses TypeScript and esbuild for compiling the MAIN world injector.
Prerequisites: Node.js 18+
# Install dependencies
npm install
# Build the TypeScript injector
npm run build
# Or watch for changes during development
npm run watchChrome / Edge / Brave / Chromium
- Open
chrome://extensionsand enable Developer mode. - Click Load unpacked and select the root
rappierdirectory.
Firefox
- Open
about:debugging→ This Firefox. - Click Load Temporary Add-on and select
manifest.json.
Mizu Network
