{"id":50704125,"url":"https://github.com/happygream/hexblock-shield","last_synced_at":"2026-06-09T10:30:33.625Z","repository":{"id":361396639,"uuid":"1245540910","full_name":"happygream/hexblock-shield","owner":"happygream","description":"HexBlock Shield — browser extension for ad blocking and sponsor segment skipping","archived":false,"fork":false,"pushed_at":"2026-05-30T12:10:14.000Z","size":23,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-30T14:06:50.313Z","etag":null,"topics":["ad-blocker","browser-extension","chrome-extension","privacy","sponsorblock","youtube"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/happygream.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-21T10:12:26.000Z","updated_at":"2026-05-30T12:10:17.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/happygream/hexblock-shield","commit_stats":null,"previous_names":["happygream/hexblock-shield"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/happygream/hexblock-shield","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/happygream%2Fhexblock-shield","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/happygream%2Fhexblock-shield/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/happygream%2Fhexblock-shield/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/happygream%2Fhexblock-shield/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/happygream","download_url":"https://codeload.github.com/happygream/hexblock-shield/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/happygream%2Fhexblock-shield/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34103355,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["ad-blocker","browser-extension","chrome-extension","privacy","sponsorblock","youtube"],"created_at":"2026-06-09T10:30:31.095Z","updated_at":"2026-06-09T10:30:33.610Z","avatar_url":"https://github.com/happygream.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HexBlock Shield\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"banner.svg\" alt=\"HexBlock Shield\" width=\"900\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://chromewebstore.google.com/detail/hexblock-shield/bmjflnnopehafhmelobgbjeobdhokifj\"\u003e\u003cimg src=\"https://img.shields.io/badge/Chrome-Web%20Store-4285F4?style=flat-square\u0026logo=googlechrome\u0026logoColor=white\" alt=\"Chrome Web Store\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/happygream/hexblock-shield/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/happygream/hexblock-shield?style=flat-square\u0026color=00e8c0\u0026label=version\" alt=\"Version\"/\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/manifest-v3-00e8c0?style=flat-square\" alt=\"MV3\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-3d5a72?style=flat-square\" alt=\"MIT\"/\u003e\n\u003c/p\u003e\n\n\u003cbr/\u003e\n\nBrowser extension for the [HexBlock](https://hexblock.co.uk) privacy gateway. Blocks ads and trackers at the network level, skips YouTube ads and sponsor segments, and strips Twitch stream ads from HLS playlists.\n\n## Features\n\n- **Ad blocking** — EasyList via declarativeNetRequest. Blocks ad requests before they load.\n- **Tracker blocking** — EasyPrivacy. Blocks fingerprinting scripts and analytics.\n- **YouTube** — Pre-roll and mid-roll ad skipping. SponsorBlock integration for sponsor segments, intros, outros, and self-promotion. Privacy-preserving — only a 4-character SHA-256 hash prefix of the video ID is sent to the API.\n- **Twitch** — HLS M3U8 playlist ad segment stripping. Intercepts the stream playlist before the player loads it and removes ad discontinuity blocks. No proxying — everything runs locally in the browser.\n- **Cosmetic filtering** — Hides ad placeholders and cookie banners that survive network-level blocking.\n- **HexBlock gateway sync** — Optionally pull blocklists from your self-hosted HexBlock instance and report block events to the dashboard.\n\n## Installation\n\n| Browser | Store |\n|---------|-------|\n| Chrome | [Chrome Web Store](https://chromewebstore.google.com/detail/hexblock-shield/bmjflnnopehafhmelobgbjeobdhokifj) |\n| Firefox | Firefox Add-ons — submission pending |\n| Edge | Microsoft Edge Add-ons — submission pending |\n\n### Manual install (developer mode)\n\n1. Download the latest release zip from [Releases](https://github.com/happygream/hexblock-shield/releases)\n2. Extract the zip\n3. Go to `chrome://extensions` (Chrome) or `edge://extensions` (Edge)\n4. Enable **Developer mode**\n5. Click **Load unpacked** and select the extracted folder\n\nFor Firefox: go to `about:debugging#/runtime/this-firefox`, click **Load Temporary Add-on**, and select the `manifest.json` file.\n\n## Project structure\n\n```\nhexblock-shield/\n  manifest.json          Extension manifest (MV3)\n  popup.html             Extension popup UI\n  src/\n    background.js        Service worker — settings, stats, gateway sync\n    content.js           General cosmetic filtering on all pages\n    youtube.js           YouTube ad skip and SponsorBlock\n    twitch.js            Twitch HLS M3U8 ad segment stripper\n    popup.js             Popup UI logic\n    storage.js           Storage helpers\n  lists/\n    easylist.json        EasyList rules in declarativeNetRequest format\n    easyprivacy.json     EasyPrivacy rules in declarativeNetRequest format\n    youtube_ads.json     YouTube-specific ad request rules\n  icons/\n    icon16.png\n    icon32.png\n    icon48.png\n    icon128.png\n```\n\n## How Twitch ad blocking works\n\nTwitch embeds pre-roll ads at the server level via Amazon IVS before issuing stream tokens. **Complete pre-roll blocking requires a proxy** — no client-side extension can reliably stop them, and every approach that has worked has been patched by Twitch within weeks.\n\nWhat HexBlock Shield does:\n\n- **Hides and mutes the player during ad playback** — you see a dark HexBlock screen instead of the ad. The ad still loads in the background but is completely invisible and silent.\n- **Blocks ad tracking and analytics requests** — spade.twitch.tv, adengine.twitch.tv, DoubleClick, IMA SDK.\n- **Strips ad segments from M3U8 playlists** — works for VODs and some live streams where ads are embedded in the HLS playlist.\n\nFor complete pre-roll blocking, use [TTV LOL PRO](https://github.com/younesaassila/ttv-lol-pro) alongside HexBlock Shield. They do not conflict.\n\n## HexBlock gateway\n\nHexBlock Shield can optionally connect to a self-hosted [HexBlock](https://github.com/happygream/hexblock) instance to:\n\n- Pull custom blocklists from your server\n- Report block events to the HexBlock dashboard query log\n\nConfigure the gateway URL in the Settings tab of the extension popup.\n\n## Permissions\n\n| Permission | Why |\n|------------|-----|\n| `storage` | Save settings and per-tab stats |\n| `declarativeNetRequest` | Block ad and tracker requests |\n| `tabs` | Read current tab URL for the popup |\n| `scripting` | Inject content scripts dynamically |\n| `\u003call_urls\u003e` | Apply cosmetic filtering on all pages |\n\n## License\n\nMIT — see [LICENSE](LICENSE)\n\n## Related\n\n- [HexBlock](https://github.com/happygream/hexblock) — self-hosted privacy gateway\n- [hexblock.co.uk](https://hexblock.co.uk)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhappygream%2Fhexblock-shield","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhappygream%2Fhexblock-shield","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhappygream%2Fhexblock-shield/lists"}