webViper a versatile, and easy to use web cleaner (not content blocker!) based on rule sets. There is a example rule for Gog.com below. Filter rules and keywords can be set for each website individually. Global keywords can be used for all website defined rules.
Note: In the "addon" version (not yet live!), there are easy to use Import Rulesets and Export rule functions in the UI.. for testing. ;)
webviper-UI-2026年05月04日.webm
- as experimental addon (currently disabled, because broken and outdated!) for Firefox
- webViper-userScript.js for usage with a browser "userscript"-addons like Firemonkey user script and css manager
The definition for websites is in const baseRuleSet = { ... }, below a example.
Note: This is not valid JSON for import of a rule, for a JSON example, refer to: webViper-rule-template.json
/--------------------------------------------------------------------------------------- // webpage example rule with notes - use "webViper-rule-template.json" instead for copy and paste! // -------------------------------------------------------------------------------------- 'gog.com': { keywords: ['in library', 'in der bibliothek'], // Keywords for the website (case insensitive) excludes: [], // Keywords to exclude if present (superseeds "keywords") removeElement: true, // Should we do something if found? showUnhide: true, // Should elements be available for unhiding using mouseover? animateUnhide: true, // Should there be a animation when unhiding on mouseover? elementContainers: { 'span.product-label__text': [ // This is the source where the "keywords" appear in '.swiper-slide:has(big-spot)', // This is a parent container, which should be replaced '.paginated-products-grid ~ a.product-tile', // Another parent 'products-section-layout ~ a.product-tile', // Order can matter. 'product-tile:has(store-picture)', ], }, // MutationObserver directive // Very much experiemental, not in UI yet, in short, clean viped elements during data change on the website. // // If element in observerContainers: // "key" (css selector parent) change from [ "mutation observer type", remove viped elements in "(css) target"] // // What it does, call a clearing routine and also (re)attach mutation observers to the nodes accordingly. // Multiple obsevers can be used/attached. // // Note: This is purely optional. // observerContainers: { // c => childList // THIS // a => attributes // AND/OR THIS // s => subtree // Optional '.paginated-products-grid': ['c', 'paginated-products-grid'], // '.anoterObserverSelector': ['as', 'targetToClean'], // for reference }, }; // ----------------------------------------------------------------------------------- // webpage rules end // -----------------------------------------------------------------------------------
For easier editing, the file webViper-rule-template.json contains a basic template for easy copy and paste into the userscript.
Note: There are easy to use Import Rulesets and Export rule functions in the UI if you want to swap rules easily. :)
Note: There is sometimes helpful output in the web developer console. Usually the web developer console can be opened using, the F12-key from within your browser (Firefox, Chrome...).
In case of help for websites, you can open a issue with the url (of course!) and a example keyword and at best, a screenshot where the content appears on the website!
Issue can be reported at issues: https://github.com/jrie/webViper/issues
Everyone at the Laucharme for bearing with me/us.. ;)
The source of the nice viper image is https://reptilesmagazine.com - I just made some post artwork.