아마존 검색에서 의심스러운 상표 스쿼트만 골라내는 확장
브라우저 확장으로 아마존 상품 목록에서 허위 상표 스쿼트 브랜드를 로컬 휴리스틱과 커뮤니티 리스트로 필터링한다.
TL;DR
이 레포는 아마존 검색 결과에서 상표 스쿼트·무회사 브랜드를 로컬 콘텐츠 스크립트로 판정해 숨기거나 희미화하거나 라벨링하는 브라우저 확장이다. 판정은 사용자 허용·차단 목록과 내장된 플래그드 및 약 5,000개 known-brands 리스트를 우선 적용하고, 그 다음 이름 기반 휴리스틱 점수화(대문자 비율, 모음 소실, 자음 연속 등)를 통해 flagged·suspect·unknown으로 분류하는 파이프라인으로 동작한다. 모든 주요 UI 변경은 페이지 내에서 즉시 적용되며 리포트는 Cloudflare Worker/D1로 수집해 수동 리뷰로 목록을 개선하되 개인식별정보는 전송하지 않는다. 비영어권·비라틴 문자 환경과 일부 복합 타일 레이아웃에서는 휴리스틱 한계가 존재하므로 필요한 경우 Strict 모드나 allowlist로 보완해야 한다.
주요 기능
- 검색 결과에서 의심 브랜드를 숨기거나 희미화하거나 라벨링하며 사용자 인터랙션으로 개별 항목을 되돌릴 수 있다. 이 기능은 각 제품 타일의 브랜드명을 파이프라인으로 판정한 뒤 판정 결과에 따라 해당 타일의 CSS와 배지를 조작하는 방식으로 동작한다. 모든 UI 변경은 페이지 내에서 즉시 적용되어 네트워크 지연이나 서버 의존성이 없다.
- 브랜드 판정 파이프라인에 allowlist, blocklist, 내장된 플래그드 목록과 대규모 known-brands 리스트, 그리고 이름 기반 휴리스틱을 순차적으로 적용한다. 첫 일치 항목이 최종 판결을 내리며 known-brands는 휴리스틱보다 우선권을 갖는다. 커뮤니티 허용 목록은 daily refresh API와 결합되어 지속적으로 목록을 갱신할 수 있다.
- 오분류 리포트 기능은 배지 메뉴에서 원클릭으로 브랜드와 ASIN 정보를 전송하고, 기본 제공 엔드포인트로는 Cloudflare Worker와 D1을 사용해 수집된 리포트를 수동 리뷰로 반영한다. 리포트 페이로드에는 개인식별정보가 포함되지 않으며 발신 IP는 솔트 해시 형태로 저장된다. 엔드포인트 미구성 시에는 사전 채워진 GitHub 이슈 창을 여는 폴백 동작이 있다.
어떻게 동작하는가
모든 판정 로직은 브라우저 콘텐츠 스크립트에서 로컬로 실행되어 페이지 DOM을 읽고 각 제품 타일의 브랜드명을 판정한다. 판정은 사용자 허용 목록과 차단 목록, 내장된 플래그드·known-brands 목록, 그리고 이름 기반 휴리스틱의 순서로 첫 일치 항목을 반환하는 방식으로 이루어진다. 이름 기반 휴리스틱은 대문자 비율, 모음 비율, 자음 연속성, 비라틴 문자 등을 점수화하여 기준선 이상은 flagged로, 중간 점수는 suspect로 분류하며 known-brands 리스트는 언제나 휴리스틱보다 우선권을 가진다.
해결 문제
아마존 검색 결과에 난립하는 USPTO 등록명 기반의 무회사·무보증 브랜드로 인해 신뢰할 수 있는 상품을 찾기 어렵다는 문제를 해결한다. 이 확장은 브라우저 레벨에서 브랜드명을 판정해 의심스러운 리스팅을 숨기거나 희미화하거나 라벨링하여 사용자가 진짜 브랜드 중심으로 구매 결정을 내리게 한다. 네트워크 왕복 없이 로컬에서 작동하므로 개인정보 노출과 지연 문제를 회피하면서 대량의 잡상표를 실시간으로 걸러낸다.
지금 주목받는 이유
사용자 경험을 직접 개선하는 클라이언트 사이드 솔루션으로서 1,410개의 스타를 기록하며 단순하면서도 실용적인 문제 해결 접근법으로 주목받고 있다. 커뮤니티 기반 리스트와 휴리스틱의 조합이 오픈소스 기여 포인트를 제공해 외부 기여를 촉진하고 있다. 브라우저 확장으로 즉시 효과를 체감할 수 있다는 점이 확산의 핵심 동인이 되었다.
차별점
- 커뮤니티 허용 목록과 사람이 검토한 플래그드 목록을 결합하여 휴리스틱의 오분류를 줄이는 설계를 채택하고 있다. 이 설계는 단순 규칙 기반 필터보다 실사용에서 신뢰도를 높이며 커뮤니티 업데이트로 지속적으로 개선 가능한 구조를 제공한다. 또한 known-brands 목록은 휴리스틱 판정보다 상위에 위치해 진짜 브랜드가 잘못 차단되는 일을 방지한다.
- 모든 판정이 콘텐츠 스크립트 내 로컬에서 이루어지기 때문에 검색 경로 상에 추가적인 서버 호출이나 트래킹이 발생하지 않는다. 서버 의존을 최소화함으로써 프라이버시 위험과 페이지 로드 지연을 줄이며 오프라인 환경에서도 기본 필터링이 가능하다. 필요한 경우에만 커뮤니티 리스트를 일일 갱신 API로 받아오는 선택적 접근을 유지한다.
- 보고 인프라는 경량 Cloudflare Worker와 D1 기반으로 구성되어 있어 리포트 수집과 수동 리뷰 흐름을 간단한 명령어로 배포할 수 있다. 리포트는 브랜드·verdict·ASIN·마켓플레이스·확장 버전만 전송되며 PII는 포함하지 않는다. 이 구조는 프로젝트 자체적으로 리뷰와 리스트 개선을 운영하기 쉽게 만든다.
사용 사례
- 일상적인 아마존 쇼핑에서 신뢰할 수 없는 상표 스쿼트 리스팅을 자동으로 걸러내고 싶을 때 유용하다. 사용자는 검색 결과 화면에서 즉시 숨김·희미화·라벨링된 항목을 확인하고 필요한 경우 한 번만 표시하거나 차단할 수 있다. 이 방식은 대규모 리스트를 일일이 검토할 필요를 줄여준다.
- 셀러 리서치와 경쟁 분석 단계에서 실제 브랜드와 무브랜드 상품을 분리해 통계적으로 분석해야 할 때 도움이 된다. 확장은 제품 상세 페이지에 verdict 칩을 추가하여 브랜드 신뢰도를 문맥에 따라 빠르게 판별하게 한다. 리서처는 보고 기능을 활용해 오분류를 수집하고 데이터 품질을 개선할 수 있다.
- 브라우저 기반 프라이버시 우선의 필터링이 필요한 환경에서 서버 호출을 피하면서도 필터링 규칙을 적용하려는 상황에 적합하다. 콘텐츠 스크립트가 모든 핵심 로직을 담당하므로 회사 정책상 외부 서비스 호출을 제한하는 환경에서도 배포 가능하다. Safari 사용자는 Xcode 프로젝트로 래핑해 동일한 필터링을 적용할 수 있다.
시작하기
Chrome Web Store와 Firefox Add-ons에서 바로 설치할 수 있으며 개발자는 레포를 클론한 뒤 chrome://extensions에서 Developer mode를 켜고 Load unpacked로 폴더를 로드하면 로컬 빌드를 확인할 수 있다. Safari용은 Xcode에서 safari/Knockoff/Knockoff.xcodeproj를 열어 Knockoff 스킴으로 빌드한 다음 Extensions 설정에서 활성화해야 작동한다. Safari의 로컬 서명 제한이 있으면 Develop 메뉴에서 Allow unsigned extensions를 먼저 허용하고, 수정 후에는 scripts/sync-safari.sh로 Xcode 프로젝트 파일을 동기화해야 한다.
요구사항
- Chrome 또는 Chromium 기반 브라우저에서 사용 가능하며 Firefox에서도 애드온으로 제공된다. Safari에서는 확장을 네이티브 앱으로 래핑해 Xcode 빌드가 필요하며 로컬 서명 설정을 조정해야 한다. 개발 환경에서는 레포지토리 클론과 브라우저 확장 로드 권한만 있으면 되며 별도 서버 의존성은 필수 사항이 아니다.
- 커뮤니티 known-brands를 일일 갱신하려면 api.knockoff.shopping에 접근 가능한 네트워크 권한이 필요하며, 리포트 수집을 자체 호스팅하려면 Cloudflare Worker와 D1를 배포할 수 있는 환경이 요구된다. 리포트 엔드포인트를 사용하지 않을 경우 GitHub 이슈로 폴백되므로 별도 서버 없이도 동작이 가능하다.
- 개발 기여를 위해서는 JavaScript 편집과 브라우저 확장 로드 방법에 익숙해야 하며, Safari 지원을 개발할 경우 Xcode와 macOS 빌드 환경이 필요하다. README가 제시한 src/TILE_SELECTORS와 src/detector.js가 확장 포인트로 문서화되어 있어 해당 파일들을 수정하는 방식으로 기능을 확장할 수 있다.
1.6k
Stars
50
Forks
+208
Trending
1
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.