{"id":24676177,"url":"https://github.com/jrie/webviper","last_synced_at":"2026-05-16T11:31:56.725Z","repository":{"id":274229956,"uuid":"922282847","full_name":"jrie/webViper","owner":"jrie","description":"wipe the web using the viper","archived":false,"fork":false,"pushed_at":"2025-01-25T20:42:10.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-25T21:24:08.443Z","etag":null,"topics":["addon","browser","clean","extension","hide","keywords","purify","userscript","web"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jrie.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-25T19:45:38.000Z","updated_at":"2025-01-25T20:45:21.000Z","dependencies_parsed_at":"2025-01-25T21:24:10.329Z","dependency_job_id":"c60d823f-2364-40d8-9f9f-fc6f0d746c23","html_url":"https://github.com/jrie/webViper","commit_stats":null,"previous_names":["jrie/webviper"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrie%2FwebViper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrie%2FwebViper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrie%2FwebViper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrie%2FwebViper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jrie","download_url":"https://codeload.github.com/jrie/webViper/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244831272,"owners_count":20517662,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["addon","browser","clean","extension","hide","keywords","purify","userscript","web"],"created_at":"2025-01-26T12:14:15.491Z","updated_at":"2026-05-16T11:31:56.714Z","avatar_url":"https://github.com/jrie.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# webViper\n\n![cover art](https://github.com/user-attachments/assets/8f380cb8-91b5-48a6-8f2d-e2325ccd94da)\n\n\n## webViper in short\nwebViper a versatile, and easy to use web cleaner (not content blocker!) based on rule sets. There is a example rule for **Gog.com** below.\nFilter rules and keywords can be set for each website individually. Global keywords can be used for all website defined rules.\n\n*Note:* In the \"addon\" version (not yet live!), there are easy to use ***Import Rulesets*** and ***Export rule*** functions in the UI.. for testing. ;)\n\n### Feature video of the addon (not yet in addon stores) version as of 2026/04/06\n\n[webviper-UI-2026-04-06.webm](https://github.com/user-attachments/assets/02e917cd-6ce8-4e3a-8152-18eca3d01b35)\n\n---\n\n## Usage options\n- as experimental *addon* (currently disabled, because broken and outdated!) for [Firefox](https://addons.mozilla.org/en-US/firefox/addon/webviper/)\n- *webViper-userScript.js* for usage with a browser \"userscript\"-addons like *Firemonkey* user script and css manager\n\n### Filter rules, how to get clearing out working\n\nThe definition for websites is in `const baseRuleSet = { ... }`, below a example.\n**Note:** This is not valid JSON for import of a rule, for a JSON example, refer to: `webViper-rule-template.json`\n\n\n```javascript\n/ ---------------------------------------------------------------------------------------\n// webpage example rule with notes - use \"webViper-rule-template.json\" instead for copy and paste!\n// --------------------------------------------------------------------------------------\n'gog.com': {\n  keywords: ['in library', 'in der bibliothek'],   // Keywords for the website (case insensitive)\n  excludes: [],                                    // Keywords to exclude if present (superseeds \"keywords\")\n  removeElement: true,    // Should we do something if found?\n  showUnhide: true,       // Should elements be available for unhiding using mouseover?\n  animateUnhide: true,    // Should there be a animation when unhiding on mouseover?\n  elementContainers: {\n      'span.product-label__text': [          // This is the source where the \"keywords\" appear in\n          '.swiper-slide:has(big-spot)',     // This is a parent container, which should be replaced\n          '.paginated-products-grid ~ a.product-tile',    // Another parent\n          'products-section-layout ~ a.product-tile',     // Order can matter.\n          'product-tile:has(store-picture)',\n      ],\n  },\n  // MutationObserver directive\n  // Very much experiemental, not in UI yet, in short, clean viped elements during data change on the website.\n  //\n  // If element in observerContainers:\n  // \"key\" (css selector parent) change from [ \"mutation observer type\", remove viped elements in \"(css) target\"]\n  //\n  // What it does, call a clearing routine and also (re)attach mutation observers to the nodes accordingly.\n  // Multiple obsevers can be used/attached.\n  //\n  // Note: This is purely optional.\n  //\n  observerContainers: {\n      // c =\u003e childList // THIS\n      // a =\u003e attributes // AND/OR THIS\n      // s =\u003e subtree // Optional\n      '.paginated-products-grid': ['c', 'paginated-products-grid'],\n      // '.anoterObserverSelector': ['as', 'targetToClean'],   // for reference\n  },\n};\n// -----------------------------------------------------------------------------------\n// webpage rules end\n// -----------------------------------------------------------------------------------\n```\n\n## Rule template for usage as userscript\nFor easier editing, the file `webViper-rule-template.json` contains a basic template for easy copy and paste into the userscript.\n\n**Note:** There are easy to use ***Import Rulesets*** and ***Export rule*** functions in the UI if you want to swap rules easily. :)\n\n---\n\n## Help, support and issues or bugs\n**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...).\nIn 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!\n\nIssue can be reported at *issues*: https://github.com/jrie/webViper/issues\n\n---\n\n### Credits and kudos - shoutout!\nEveryone at the *Laucharme* for bearing with me/us.. ;)\n\n### And this fantastic cover art?\nThe source of the nice viper image is *[https://reptilesmagazine.com](https://reptilesmagazine.com)* - I just made some post artwork.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrie%2Fwebviper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjrie%2Fwebviper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrie%2Fwebviper/lists"}