Home Business & Finance Show HN: I made a tool that prevents websites from tracking you
Business & Finance

Show HN: I made a tool that prevents websites from tracking you

Key Points

GetBlocked! is a lightweight, local-only Chrome extension that helps reduce common third-party website tracking by blocking known tracker requests, cleaning tracking links, and explaining tracking attempts. It is built as a small, inspectable Manifest V3 project for people who want a friendly privacy tool and for contributors who want quick, useful pull requests. - Blocks a curated starter list of known third-party tracker domains using Chrome declarativeNetRequest .

Cleaner pages. Fewer trackers. Local-only. GetBlocked! is a lightweight, local-only Chrome extension that helps reduce common third-party website tracking by blocking known tracker requests, cleaning tracking links, and explaining tracking attempts. It is built as a small, inspectable Manifest V3 project for people who want a friendly privacy tool and for contributors who want quick, useful pull requests. - Blocks a curated starter list of known third-party tracker domains using Chrome declarativeNetRequest . - Cleans common tracking URL parameters such as utm_source ,fbclid ,gclid ,dclid ,mc_cid , and similar campaign IDs. - Detects visible tracking attempts such as pixels, suspicious scripts, tracking iframes, and tracking links. - Shows a compact popup report with: - Blocked on this page - Tracking links cleaned - Visible tracking attempts detected - Detected categories - Keeps report data local in chrome.storage.local . GetBlocked! blocks a curated starter list of known third-party tracker domains and tracking URL parameters. Current coverage includes: - Analytics trackers - Ad and retargeting trackers - Social media pixels - Session replay and heatmap tools - Affiliate and attribution trackers - Email marketing trackers - Tracking URL parameters The tracker list is intentionally conservative. Rules are limited to third-party requests to reduce website breakage. - It does not block every tracker. - It does not make users anonymous. - It does not stop tracking after logging into an account. - It does not stop server-side tracking. - It does not fully prevent advanced fingerprinting. - It is not meant to replace full-featured ad blockers. GetBlocked! is: - Lightweight: small ruleset, simple popup, minimal moving parts. - Local-only: no external analytics, telemetry, or remote logging. - Open source: the rules, popup, and generation scripts are inspectable. - Educational: categories and wording are designed to explain common tracking clearly. - Beginner-friendly: small PRs can improve the tracker catalog, docs, tests, or UI. - Not a replacement for full ad blockers: it focuses on common trackers and clear explanations. GetBlocked! does not send browsing data to any server. The extension uses: declarativeNetRequest for local Chrome-managed request blocking.chrome.storage.local for page report data.- A content script that scans the current page locally for visible tracking signals. There are no external analytics, telemetry endpoints, remote logs, or bundled remote assets in the extension. - Download or clone this repository. - Open chrome://extensions . - Turn on Developer mode. - Choose Load unpacked. - Select the GetBlocked! project folder. - Pin GetBlocked! and open the popup on normal web pages. The production build avoids debug-only DNR feedback permissions. The popup uses local page signals plus Chrome's production DNR action-count badge as a page-level estimate, while blocking and URL-cleaning rules remain enforced by MV3 declarativeNetRequest . The easiest way to contribute is to add one tracker domain. - Edit shared/tracker-catalog.json. - Add one fixture in test/tracker-test-set.json. - Run npm run generate:rules . - Run npm run test:evidence . - Open a PR. PRs are welcome for tracker-domain additions, broken-site tests, UI polish, docs, and test improvements. You do not need to ask before opening a small, focused PR. Tracker domains are maintained in shared/tracker-catalog.json. Each tracker entry includes: domain category label notes Tracking URL parameters are maintained in shared/tracking-params.json. After changing the catalog or tracking parameter list, regenerate the derived extension files: npm run generate:rules This updates: - rules/rules.json, used by Chrome declarativeNetRequest . - shared/config.js, used by the content script and popup category detection. Do not edit generated rules/config by hand unless you also update the generator or source catalog. Regenerate rules: npm run generate:rules Run the local ruleset evidence test: npm run test:evidence Useful syntax checks: node --check background.js node --check content-script.js node --check popup/popup.js node --check scripts/generate-rules.mjs node --check scripts/evaluate-test-set.mjs Useful JSON checks: node -e "for (const f of ['manifest.json','rules/rules.json','shared/tracker-catalog.json','shared/tracking-params.json','test/tracker-test-set.json','package.json']) JSON.parse(require('fs').readFileSync(f,'utf8')); console.log('JSON OK')" After loading the unpacked extension, start a simple local server from this folder: python -m http.server 8080 Then open: http://localhost:8080/test/manual-test.html?utm_source=demo&utm_medium=test&fbclid=manual With GetBlocked! enabled, the tracking parameters should be removed from the page URL and the popup should show page-level tracker activity. For a before/after check, compare the browser Network panel with the extension disabled and then enabled. - Contributing guide - Adding trackers - Broken sites - Development guide - Good first issues - Labels guide - Launch copy - Security policy MIT License. See LICENSE.
GetBlocked (ORG) Chrome (ORG) heatmap (ORG) UI (ORG) DNR (ORG)
Originally published by Hacker News Read original →