TL;DR

  • Nobotty는 Reddit 댓글과 다이렉트 메시지(DM)에서 봇·사기·판매 홍보 가능성을 감지해 표시하며, 선택 설정에 따라 특정 댓글과 메시지를 접거나 숨김.
  • 댓글 옆에 빨강·주황·초록 점을 표시하고, 의심 계정은 최근 약 40개의 공개 게시물과 댓글을 브라우저에서 확인함.
  • 댓글 전체 확인은 스레드당 2~3회 요청으로 처리하며, 결과는 7일간 캐시하고 Reddit의 요청 제한을 따름.
  • 모든 처리는 브라우저에서 이뤄지며 추적·서버·계정이 없음; 신뢰도 표시는 증명이 아니며 오탐과 누락 가능성이 있음.
  • Chrome·Edge·Brave·Firefox·Safari 설치 방법과 감지 기준, 한계, 테스트 및 MIT 라이선스 정보를 제공함.

Nobotty 소개

  • Reddit에서 봇, 사기, 판매 홍보일 가능성이 높은 활동을 알아보도록 돕는 소형 브라우저 확장 프로그램임.
  • 댓글 시간 옆에 작은 색상 점을 표시하고, 사기 및 봇 다이렉트 메시지를 숨김. 판매 홍보도 숨길지는 별도로 선택함.
  • 표시는 신호일 뿐 증명이 아님. 새 계정도 실제 사람일 수 있으므로 댓글은 색상으로만 표시하며, 접기 기능을 켜지 않는 한 숨기거나 삭제하거나 차단하지 않음.
  • 모든 처리가 브라우저에서 이뤄지며 추적, 서버, 계정이 없음. 자세한 내용은 PRIVACY.md에서 확인 가능함.
  • 데모 영상과 스크린샷은 허구의 사용자가 등장하는 모의 스레드를 사용함.

기능

  • 색상 점 표시: 확인된 각 댓글의 시간 바로 뒤에 작은 점을 표시함(예: 3h ago ●). 빨강은 낮은 신뢰도, 주황은 중간 신뢰도, 초록은 양호한 신뢰도를 뜻함. 레이블이나 추가 행은 표시하지 않음.
  • 선택 설정으로 점 대신 가느다란 줄무늬를 표시하거나, 빨간색 댓글을 한 줄로 접거나, 툴팁에 판단 이유를 표시 가능함.
  • 게시 기록 확인: 의심 계정의 최근 약 40개 공개 게시물과 댓글을 브라우저에서 확인함. 데이터는 어디에도 전송되지 않으며, 단축 URL이나 링크 모음 URL, 같은 링크 또는 문구의 반복, 몇 분 간격의 게시물 폭주, 여러 서브레딧에 걸친 게시 활동 등의 봇 패턴을 확인함.
  • 다이렉트 메시지 필터: 암호화폐, “텔레그램에서 연락해 달라”는 메시지, 새 계정이 보내는 링크 등 사기 및 봇 메시지를 숨김. 웹사이트 제작 제안, 검색엔진 최적화(SEO) 제안, 무료 진단 등 판매 홍보는 별도 스위치로 설정함.
  • 빠르고 요청 제한을 준수하는 확인: 댓글 작성자마다 개별 요청을 보내는 대신 스레드당 2~3회 요청으로 확인함. 먼저 스레드의 계정 ID를 요청하고, 이어 요청당 최대 100개 계정을 확인함. Reddit의 요청 제한을 따르고 Reddit이 요청하면 일시 중지하며, 결과는 7일간 캐시함.
  • 설정: 색상별 표시 끄기, 빨간색 댓글 접기, 모든 계정의 게시 기록 확인, 마우스 오버 시 판단 이유 표시, 다이렉트 메시지 필터, 판매 홍보 숨기기, 표시 대상에서 제외할 신뢰 계정 설정이 가능함.

설치

Chrome, Edge, Brave

  • 저장소에서 Code를 선택한 뒤 Download ZIP으로 내려받고 압축을 풀면 됨.
  • chrome://extensions를 열고 개발자 모드를 켜면 됨.
  • Load unpacked를 선택하고 압축을 푼 폴더를 지정하면 됨.

Firefox

  • about:debugging#/runtime/this-firefox를 열고 Load Temporary Add-on을 선택한 뒤 manifest.json을 지정하면 됨.

Safari 사용자 스크립트

  • Xcode 없이 무료 앱을 통해 사용자 스크립트를 실행하는 방법임.
  • Mac App Store에서 무료 오픈소스 앱인 Userscripts를 설치하고 Safari 설정의 확장 프로그램에서 활성화하면 됨. 앱이 요청할 때 스크립트용 폴더를 선택하면 됨.
  • userscript/nobotty.user.js를 해당 폴더에 복사하면 됨.
  • Reddit을 열면 화면 왼쪽 아래에 작은 Nobotty 버튼이 나타남. 버튼에서 설정을 열어 기능 켜기, 강한 신호 접기, 다이렉트 메시지 필터, 봇 및 사기 숨기기, 판매 홍보도 숨기기, 신뢰 계정을 설정할 수 있음.
  • 사용자 스크립트 빌드의 감지 기능은 확장 프로그램과 동일함. 다만 모의 받은 편지함에서 테스트했으며 실제 Reddit에서는 테스트하지 않음.

Safari 전체 확장 프로그램

  • Xcode가 필요한 방법임.
  • Xcode를 설치한 뒤 xcrun safari-web-extension-converter /path/to/nobotty를 실행하고, 생성된 앱을 빌드해 실행한 다음 Safari 설정의 확장 프로그램에서 활성화하면 됨. 개발 중에는 Develop 메뉴의 Allow Unsigned Extensions도 활성화해야 함.
  • App Store에 배포하려면 Apple 개발자 계정이 필요함.

판단 방식

  • 댓글: Reddit의 공개 about.json에서 확인하는 계정 생성 시점과 카르마, 자동 생성형 사용자 이름, 두 계정에서 반복되는 동일 문구, 상투적 문구, 그리고 의심 계정의 게시 기록을 확인함.
  • 점수를 합산해 5점 이상은 빨강, 3~4점은 주황으로 표시함. 알려진 계정의 점수가 0~1점이면 초록으로 표시함.
  • 다이렉트 메시지: 사기 패턴, 판매 홍보 패턴, 링크를 보내는 새 계정을 확인함.
  • 패턴은 content.js에 일반 정규 표현식으로 작성되어 있어 읽고 수정 가능함.

알려진 한계

  • 봇인지 여부를 확정할 수 없으므로 오탐과 누락이 발생할 수 있음.
  • Reddit 페이지의 마크업은 자주 바뀜. 선택자는 content.js의 SEL 및 DM_SEL에 모여 있음.
  • 새 채팅 인터페이스는 아직 확인되지 않음. 선택자가 작동하지 않으면 페이지의 HTML과 함께 이슈를 제출하면 됨.
  • 테스트는 로컬 픽스처를 대상으로 했으며, 실제 Reddit에서 대규모로 테스트하지 않음.

테스트

  • npm install로 의존성을 설치하면 됨.
  • npx playwright install chromium으로 Chromium을 설치하면 됨.
  • npm test로 테스트를 실행하면 됨.
  • npm run build로 userscript/nobotty.user.js를 다시 생성하면 됨.
  • 테스트는 콘텐츠 스크립트를 모의 댓글 페이지와 모의 받은 편지함에서 실행하고, 어떤 항목에 레이블이 붙는지 확인함.

기여

  • 이슈와 풀 리퀘스트를 환영함. 특히 새로운 패턴, 선택자 수정, 팝업 번역 기여를 환영함.

라이선스

  • MIT 라이선스를 적용하며, 자세한 내용은 LICENSE에서 확인 가능함.