{"id":25013830,"url":"https://github.com/teodorszeltins/noolbenger","last_synced_at":"2025-07-10T15:33:57.236Z","repository":{"id":272185974,"uuid":"915768347","full_name":"teodorszeltins/noolbenger","owner":"teodorszeltins","description":"A tiny tool to detect if a page visitor has Honey Chrome extension installed and running.","archived":false,"fork":false,"pushed_at":"2025-07-08T05:17:37.000Z","size":269,"stargazers_count":4,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-08T06:51:54.771Z","etag":null,"topics":["chrome","chrome-extensions","typescript"],"latest_commit_sha":null,"homepage":"https://teodorszeltins.github.io/noolbenger/","language":"TypeScript","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/teodorszeltins.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-12T18:45:08.000Z","updated_at":"2025-07-08T05:16:35.000Z","dependencies_parsed_at":"2025-01-12T19:37:24.138Z","dependency_job_id":"2f595e8f-2f51-4f2a-9166-c8dde4a2f8a1","html_url":"https://github.com/teodorszeltins/noolbenger","commit_stats":null,"previous_names":["tedsomething/noolbenger","teodorszeltins/noolbenger"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/teodorszeltins/noolbenger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teodorszeltins%2Fnoolbenger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teodorszeltins%2Fnoolbenger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teodorszeltins%2Fnoolbenger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teodorszeltins%2Fnoolbenger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/teodorszeltins","download_url":"https://codeload.github.com/teodorszeltins/noolbenger/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teodorszeltins%2Fnoolbenger/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264238645,"owners_count":23577752,"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":["chrome","chrome-extensions","typescript"],"created_at":"2025-02-05T07:16:02.392Z","updated_at":"2025-07-10T15:33:57.192Z","avatar_url":"https://github.com/teodorszeltins.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"A tiny tool to detect if a page visitor has Honey Chrome extension installed and running.\n\n## Demo\n\n[https://teodorszeltins.github.io/noolbenger](https://teodorszeltins.github.io/noolbenger)\n\n## Why?\n\nHoney, a popular browser extension, has recently been [revealed to scam both users and content creators](https://www.youtube.com/watch?v=vc4yL3YTwWk). Unfortunately, many of Honey’s users still remain unaware. If you are a website owner, you can use this detection script to warn them about the risks of using Honey.\n\n## Usage\n\nInstall the `noolbenger` npm package:\n\n```\nnpm install noolbenger\n```\n\nRun the check in your code:\n\n```\nimport noolbenger from \"noolbenger\"\n\nlet foundHoney = await noolbenger.track()\n```\n\n## How is this even possible?\n\nIt shouldn't be, and it certainly sounds like a violation of privacy. Unfortunately, it is, and it does. It works because of [web accessible resources](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources) defined in a Chrome extension's `manifest.json`. Like the name implies, these “web accessible” resources can be looked up by anyone capable enough to use `fetch()`. From here, you can continue with nefarious activities, such as fingerprinting website visitors.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteodorszeltins%2Fnoolbenger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fteodorszeltins%2Fnoolbenger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteodorszeltins%2Fnoolbenger/lists"}