[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-92358":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":20,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":16,"starSnapshotCount":16,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},92358,"knockoff","Shpigford\u002Fknockoff","Shpigford","Chrome extension that filters pseudo-brand junk out of Amazon. Buy from real, established brands.","https:\u002F\u002Fknockoff.shopping",null,"JavaScript",1788,59,3,4,0,478,63.33,"Other",false,"main",[23,24,25],"amazon","browser-extension","chrome-extension","2026-07-22 04:02:05","![Knockoff: Amazon, without the knockoffs](store-assets\u002Fpromo-marquee.png)\n\n# Knockoff\n\n**A browser extension that filters pseudo-brand junk out of Amazon.** Buy from\nreal, established brands, even when that means paying more.\n\nAmazon is flooded with trademark-squat \"brands\" (SZHLUX, HORUSDY, LATTOOK,\nDOZAWA...): random strings registered at the USPTO purely to unlock Amazon\nBrand Registry, selling commodity goods with no company, no warranty, and no\nreputation behind them. Knockoff detects those listings and hides, dims, or\nlabels them, right in the search results.\n\n## Install\n\n**[Add to Chrome](https:\u002F\u002Fchromewebstore.google.com\u002Fdetail\u002Fpjgickchbiikhdfpmecaabkphmofpdce)** from the Chrome Web Store, or\n**[Add to Firefox](https:\u002F\u002Faddons.mozilla.org\u002Fen-US\u002Ffirefox\u002Faddon\u002Fknockoff-amazon-brand-filter\u002F)** from Firefox Add-ons.\n\nOr load it unpacked for development:\n\n1. Clone this repo\n2. Open `chrome:\u002F\u002Fextensions`\n3. Turn on **Developer mode** (top right)\n4. Click **Load unpacked** and select the repo folder\n\nWorks on every Amazon marketplace.\n\n### Safari\n\nSafari requires the extension to be wrapped in a native app. Open\n[`safari\u002FKnockoff\u002FKnockoff.xcodeproj`](safari\u002FKnockoff) in Xcode, run the\n**Knockoff** scheme, then enable Knockoff in Safari → Settings →\nExtensions. For unsigned local builds, first check \"Allow unsigned\nextensions\" in Safari's Develop menu.\n\nThe Xcode project carries its own copy of the extension files; after\nediting the extension, run [`scripts\u002Fsync-safari.sh`](scripts\u002Fsync-safari.sh)\nto update it before rebuilding.\n\n## Press\n\nSome of the coverage since launch:\n\n- [Fast Company](https:\u002F\u002Fwww.fastcompany.com\u002F91570721\u002Famazon-shopping-slop-viral-new-tool-filters-out-knockoff-brands)\n- [Gizmodo](https:\u002F\u002Fgizmodo.com\u002Fnew-browser-extension-helps-you-dodge-amazons-sea-of-knock-off-products-2000783054)\n- [404 Media](https:\u002F\u002Fwww.404media.co\u002Fknockoff-browser-extension-hides-sketchy-brands-on-amazon\u002F)\n- [PC Gamer](https:\u002F\u002Fwww.pcgamer.com\u002Fhardware\u002Fthis-chrome-extension-hides-knockoff-brands-on-amazon-sorry-to-brands-like-wnpethome-eheyciga-yxy\u002F)\n- [Yahoo](https:\u002F\u002Ftech.yahoo.com\u002Fapps\u002Farticles\u002Fchrome-extension-removes-unknown-brands-162002361.html)\n- [Lifehacker](https:\u002F\u002Flifehacker.com\u002Ftech\u002Fknockoff-browser-extension-hides-shady-items-on-amazon)\n\n## How it works\n\nEverything runs locally in a content script. No accounts, no tracking, no\nserver round-trips on the shopping path. Each product tile's brand is\nresolved through this pipeline (first match wins):\n\n| # | Check | Verdict |\n|---|-------|---------|\n| 1 | Your allowlist | `allowed`, never filtered |\n| 2 | Your blocklist | `blocked`, always filtered |\n| 3 | Seed list of notorious pseudo-brands ([`data\u002Fflagged-brands.js`](data\u002Fflagged-brands.js)) | `flagged` |\n| 4 | Established Chinese-owned brands ([`data\u002Fchinese-major.js`](data\u002Fchinese-major.js)) | `known`, or `flagged` if you enable that setting |\n| 5 | ~5,000 established brands ([`data\u002Fknown-brands.js`](data\u002Fknown-brands.js) + the community allowlist in [`data\u002Fcommunity-brands.js`](data\u002Fcommunity-brands.js), refreshed daily from `api.knockoff.shopping\u002Fbrands`) | `known` |\n| 6 | Name heuristics (see below) | `flagged` \u002F `suspect` \u002F `unknown` |\n| - | No brand at the front of the title at all | `unbranded` |\n\n### Name heuristics\n\nUnknown brands are scored on the linguistic signature of trademark-squat\nnames: ALL-CAPS 5–9 character strings, vanishing vowel ratios,\nunpronounceable consonant runs, un-English letter pairs, non-Latin\ncharacters, random iNternal caPitalization. High scores are `flagged`,\nmid scores `suspect`. The known-brands list always vetoes the heuristics:\nplenty of real brands (ASICS, RYOBI, HOKA) would otherwise look suspicious.\nScoring lives in [`src\u002Fdetector.js`](src\u002Fdetector.js) and is deliberately\nreadable, and tuning it is a great first contribution.\n\n### Filter levels\n\n| Level | Filters |\n|-------|---------|\n| **Relaxed** | Known pseudo-brands + your blocklist |\n| **Standard** (default) | + suspect-looking names + unbranded listings |\n| **Strict** | + anything not on a known-brands list (allowlist-only) |\n\n### Actions\n\nFiltered items can be **hidden** (with a floating pill showing the count and\na one-click reveal), **dimmed** (fade + desaturate, restore on hover), or\njust **labeled**. Every badge is clickable: trust the brand, block it, show\nthe item once, or report a misclassification.\n\nProduct detail pages get a verdict chip next to the brand byline. The page\nis never hidden out from under you.\n\n## Reporting misclassifications\n\nThe badge menu has one-click reporting (\"this is junk\" \u002F \"this is a real\nbrand\"). Reports go to a tiny Cloudflare Worker backed by D1\n([`report-worker\u002F`](report-worker\u002F)) and are reviewed by hand to improve the\nbundled lists. No PII: the payload is brand, verdict, ASIN, marketplace, and\nextension version; reporter IPs are stored only as salted hashes for rate\nlimiting. If no endpoint is configured the extension falls back to opening a\nprefilled GitHub issue.\n\nDeploying your own endpoint is four commands; see the header of\n[`report-worker\u002Fworker.js`](report-worker\u002Fworker.js).\n\n## Contributing\n\nThe easiest, highest-value contributions are brand list fixes; see\n[CONTRIBUTING.md](CONTRIBUTING.md). There is no build step; the extension is\nplain JavaScript, loadable directly from the repo.\n\n```\nmanifest.json             MV3 manifest\ndata\u002Fknown-brands.js      curated established brands (edit this one!)\ndata\u002Fchinese-major.js     established Chinese-owned brands (toggleable)\ndata\u002Fflagged-brands.js    seed blocklist of notorious pseudo-brands\ndata\u002Fgeneric-words.js     common title words, for unbranded detection\ndata\u002Fcommunity-brands.js  bundled community allowlist snapshot (generated, don't edit)\nsrc\u002Fdetector.js           detection engine (pure logic, no DOM)\nsrc\u002Fcontent.js            page scanning, badges, actions, in-page control panel\nsrc\u002Fbackground.js         toolbar button → panel toggle (or options page)\noptions\u002F                  settings page (rules, allow\u002Fblocklist)\nreport-worker\u002F            Cloudflare Worker: reports, curation, brand-list API\nsafari\u002F                   Xcode wrapper app for Safari (macOS)\nsite\u002F                     knockoff.shopping landing page (static, Cloudflare)\nstore-assets\u002F             Chrome Web Store images + the HTML frames that render them\nscripts\u002F                  maintenance scripts\n```\n\n## Known limitations\n\n- **Mixed-case gibberish** (\"Geinxurn\", \"Mulwark\") scores below the suspect\n  threshold at standard level; Strict mode catches it. A bundled character\n  bigram model would fix this properly; PRs welcome.\n- Seller **country-of-origin lookup** (fetching seller profile addresses) is\n  deliberately not implemented: it costs two rate-limited page fetches per\n  product and Amazon 503s aggressive scrapers. The name-based approach needs\n  zero network calls.\n- Carousels and a few exotic tile layouts aren't scanned yet\n  (`TILE_SELECTORS` in `src\u002Fcontent.js` is the extension point).\n- Non-English stores are best-effort. Brand lists and the product-page chip work\n  everywhere, but the name heuristics are English-tuned, so an unlisted local\n  brand can slip through. Non-Latin listings (Japanese, Arabic) are skipped rather\n  than mis-filtered, so nothing breaks on any marketplace.\n\n## Prior art\n\nResearch that shaped this design: [AmazonBrandFilter](https:\u002F\u002Fgithub.com\u002Fchris-mosley\u002FAmazonBrandFilter)\n(allowlist approach; its MIT-licensed community list seeded Knockoff's own),\n[SoldBy](https:\u002F\u002Fgithub.com\u002Ftadwohlrapp\u002Fsoldby)\n(seller-country lookup and its rate-limit lessons), and The Markup's\n[Amazon Brand Detector](https:\u002F\u002Fgithub.com\u002Fthe-markup\u002Ftool-amazon-brand-detector).\nKnockoff's contribution is combining a community allowlist with a\nheuristic scorer, with the allowlist as veto.\n\n## License\n\n[FSL-1.1-MIT](LICENSE). Code converts to MIT after two years.\n","Knockoff 是一款用于过滤亚马逊平台伪品牌商品的浏览器扩展。它通过本地运行的内容脚本，实时识别并隐藏或标记无实体背景、仅靠商标抢注注册的伪品牌（如SZHLUX、HORUSDY等），支持自定义黑白名单与预置品牌库，并兼容Chrome、Firefox及Safari。项目完全离线处理，不收集用户数据、无需账号，所有品牌判断均在浏览器端完成。适用于注重品牌真实性、希望规避低质仿冒商品的日常网购场景，尤其适合对产品质量和售后保障有较高要求的消费者。",2,"2026-07-08 04:30:11","CREATED_QUERY"]