{"id":28208860,"url":"https://github.com/adamsharifc/sentinel","last_synced_at":"2026-04-29T08:34:25.310Z","repository":{"id":293106802,"uuid":"942997949","full_name":"adamsharifc/sentinel","owner":"adamsharifc","description":"A Chrome extension for tracker blocking and fingerprinting protection.","archived":false,"fork":false,"pushed_at":"2025-08-27T19:25:01.000Z","size":5762,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-28T03:13:33.540Z","etag":null,"topics":["adblocking","anti-fingerprinting","chrome-extension","fingerprinting-mitigation","firefox-extension","microsoft-edge-extension","tracker-blocker"],"latest_commit_sha":null,"homepage":"https://chromewebstore.google.com/detail/sentinel/pddpnjognmcdocnckfoeobncjajigpjf","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/adamsharifc.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,"zenodo":null}},"created_at":"2025-03-05T02:37:12.000Z","updated_at":"2025-08-27T19:25:04.000Z","dependencies_parsed_at":"2025-05-13T18:32:29.895Z","dependency_job_id":"18c8bc3d-c99c-4a84-9192-b0d69329b57d","html_url":"https://github.com/adamsharifc/sentinel","commit_stats":null,"previous_names":["adamsharifc/sentinel"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/adamsharifc/sentinel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamsharifc%2Fsentinel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamsharifc%2Fsentinel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamsharifc%2Fsentinel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamsharifc%2Fsentinel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adamsharifc","download_url":"https://codeload.github.com/adamsharifc/sentinel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamsharifc%2Fsentinel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32417936,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T06:29:02.080Z","status":"ssl_error","status_checked_at":"2026-04-29T06:29:00.631Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["adblocking","anti-fingerprinting","chrome-extension","fingerprinting-mitigation","firefox-extension","microsoft-edge-extension","tracker-blocker"],"created_at":"2025-05-17T15:12:52.573Z","updated_at":"2026-04-29T08:34:25.305Z","avatar_url":"https://github.com/adamsharifc.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sentinel\n\n## Install the Extension\n\nYou can install the Sentinel Chrome extension directly from your browser's add-on store:\n\n- [Install from the Chrome Web Store](https://chromewebstore.google.com/detail/sentinel/pddpnjognmcdocnckfoeobncjajigpjf)\n- [Install from the Microsoft Edge Add-ons Store](https://microsoftedge.microsoft.com/addons/detail/sentinel/bnfadclgdokiglhmjdplmmggopkjoggo)\n\n## DNR Rulesets mapping\n\n| Blocklist | DNR Ruleset | Description |\n|-----------|-------------|-------------|\n| [Easylist](https://easylist.to/easylist/easylist.txt) | `advert-dnr` | This ruleset blocks ads and trackers. |\n| [Easyprivacy](https://easylist.to/easylist/easyprivacy.txt) | `tracker-dnr` | This ruleset blocks tracking scripts. |\n| [Fanboy's Social Blocking List](https://easylist.to/easylist/fanboy-social.txt) | `social-dnr` | This ruleset blocks social media trackers. |\n\n## Fingerprinting Protection\n\n### Fingerprinting Protection Results Matrix\n\n| Test Site / API                                      | Canvas Fingerprint | Audio Fingerprint | WebGL Fingerprint |\n|------------------------------------------------------|:-----------------:|:----------------:|:----------------:|\n| [browserleaks.com/canvas](https://browserleaks.com/canvas)                |    ✅ Different   |        —         |        —         |\n| [webbrowsertools.com/canvas-fingerprint](https://webbrowsertools.com/canvas-fingerprint/) |    ✅ Different   |        —         |        —         |\n| [webbrowsertools.com/audiocontext-fingerprint](https://webbrowsertools.com/audiocontext-fingerprint/) |        —         |   ✅ Different / Unstable   |        —         |\n| [audiofingerprint.openwpm.com](https://audiofingerprint.openwpm.com/)     |        —         |   ✅ Different   |        —         |\n| [webbrowsertools.com/webgl-fingerprint](https://webbrowsertools.com/webgl-fingerprint/) |        —         |        —         |   ✅ Different   |\n| [browserleaks.com/webgl](https://browserleaks.com/webgl)                 |        —         |        —         |   ✅ Different   |\n\n**Legend:**  \n✅ Different — The fingerprint changes on each reload or is randomized  \n— Not tested / Not applicable\n\nThis matrix summarizes Sentinel's effectiveness at defeating fingerprinting on major test sites for each API.\n\n### Canvas Fingerprinting\n\nSentinel protects against canvas fingerprinting by intercepting and modifying the results of canvas API calls that are commonly used for browser fingerprinting. When fingerprinting protection is enabled, Sentinel injects a content script into every page and all same-origin iframes. This script overrides key canvas methods (`getImageData`, `toDataURL`, and `toBlob`) in both the main window and any accessible iframes.\n\nWhenever a website or script tries to read pixel data from a canvas (for example, to generate a unique fingerprint), Sentinel's overrides add subtle, random noise to the pixel data. This ensures that the fingerprint generated from the canvas will be different each time, making it unreliable for tracking users.\n\nThe extension also monitors for dynamically created iframes and patches their canvas prototypes as soon as they are accessible. This approach defeats advanced fingerprinting techniques that attempt to bypass protections by creating canvases inside iframes.\n\n#### Tested Websites\nhttps://browserleaks.com/canvas  Different fingerprint each time.\nhttps://webbrowsertools.com/canvas-fingerprint/  Different fingerprint each time.\n\n\n### Audio Fingerprinting\n\nSentinel protects against audio fingerprinting by intercepting and modifying the results of key Web Audio API methods that are commonly used for browser fingerprinting. When fingerprinting protection is enabled, Sentinel injects a content script into every page and all same-origin iframes. This script overrides important Web Audio methods such as `AnalyserNode.getFloatFrequencyData`, `AudioBuffer.getChannelData`, and `OfflineAudioContext.startRendering`.\n\nWhenever a website or script tries to read audio data for fingerprinting, Sentinel's overrides add subtle, random noise to the audio data. This ensures that the fingerprint generated from the audio context will be different each time, making it unreliable for tracking users.\n\nThe extension is careful to only add a very small amount of noise, so that legitimate audio playback and processing are not noticeably affected, but fingerprinting scripts cannot get a stable, unique value.\n\n#### Tested Websites\n\n- https://webbrowsertools.com/audiocontext-fingerprint/ — Breaks fingerprinting (shows indefinite loading or inconsistent results).\n- https://audiofingerprint.openwpm.com/ — Different fingerprint each time.\n\n\n### WebGL Fingerprinting\n\nSentinel protects against WebGL fingerprinting by intercepting and modifying the results of key WebGL API methods that are commonly used for browser fingerprinting. When fingerprinting protection is enabled, Sentinel injects a content script into every page and all same-origin iframes. This script overrides important WebGL methods such as `getParameter`, `getExtension`, and `readPixels`.\n\n#### Tested Websites\n\n- https://webbrowsertools.com/webgl-fingerprint/ — Different fingerprint each time.\n- https://browserleaks.com/webgl — Different fingerprint each time.\n\n\n\n## Firefox DNR Redirect Errors\n\nWhile testing Sentinel in Firefox, you may see errors like:\n\n#### Why do these errors occur?\n\nFirefox does **not** allow Declarative Net Request (DNR) rules to redirect network requests to `data:` URLs (such as base64-encoded video or JavaScript). This is a browser security restriction. Chrome allows some `data:` URL redirects, but Firefox blocks them entirely.\n\n#### How was this resolved?\n\nTo ensure compatibility with Firefox, I replaced all DNR rules that redirected to `data:` URLs with rules that simply **block** the request instead. This avoids the error and maintains effective blocking of unwanted resources.\n\n**Summary:**  \n- These errors are Firefox-specific and caused by its restriction on `data:` URL redirects in DNR rules.\n- The solution is to use `\"block\"` actions instead of `\"redirect\"` to `data:` URLs for maximum compatibility.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamsharifc%2Fsentinel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadamsharifc%2Fsentinel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamsharifc%2Fsentinel/lists"}