AI & Machine Learning로 돌아가기
토렌트 IP 추적 시스템

토렌트 IP 추적 시스템

해외 영상 IP 권리자를 위한 불법 토렌트 배포 추적 플랫폼. 3단계 안티봇 우회 크롤러, AI 기반 토렌트 정보 추출, DHT 네트워크 피어 IP 추적, GeoIP 위치 분석, 법적 증거 PDF 리포트 자동 생성까지 갖춘 엔터프라이즈급 저작권 보호 시스템입니다.

프로젝트 개요

관리자가 검색 URL을 등록하면, 시스템이 자동으로 마그넷 링크/해시를 탐색하고 다운로드 중인 피어 IP를 추적하는 저작권 보호 플랫폼입니다. 3단계 크롤링 엔진이 10가지 차단 시나리오(Cloudflare JS Challenge, CAPTCHA, IP 차단, Rate Limiting 등)를 자동 감지하고 레벨을 에스컬레이션합니다. regex 추출이 실패하면 Claude 3 Haiku API가 HTML을 파싱하여 토렌트 정보를 추출하는 AI 폴백을 탑재했습니다. libtorrent DHT 네트워크로 피어를 탐색하고, MaxMind GeoLite2로 IP를 국가·도시·ISP까지 매핑합니다. Celery Beat가 크롤링(매시간), 피어 추적(6시간마다), 통계 집계, 클린업, 헬스체크를 자동 스케줄링하며, Excel/PDF 법적 증거 리포트를 한 클릭으로 내보낼 수 있습니다. React + Ant Design 대시보드에서 통계, 차트, 알림, 프록시 풀을 통합 관리합니다.

주요 기능

IP 타이틀 관리 & 크롤링 실행

추적할 영상 콘텐츠(IP 타이틀)를 등록하고, 검색 URL을 추가하면 시스템이 자동으로 토렌트를 탐색합니다. 타이틀별로 검색 URL 수, 발견된 토렌트 수, 추적된 피어 수, 상태(활성/비활성)를 대시보드에서 관리합니다.

'지금 검색' 버튼으로 즉시 크롤링을 실행하고, '피어 추적' 버튼으로 DHT 네트워크 탐색을 트리거할 수 있습니다. 검색 URL 탭에서 각 URL의 크롤 레벨, 상태, 발견 토렌트 수, 마지막 크롤 시각을 확인하며, 토렌트 탭에서 발견된 전체 토렌트 목록을 조회합니다.

DHT 피어 추적 & GeoIP 분석

libtorrent DHT 네트워크를 통해 info_hash 기반으로 토렌트를 다운로드/업로드 중인 피어를 탐색합니다. 4개 DHT 부트스트랩 노드(router.bittorrent.com 등)에 연결하고, ThreadPoolExecutor 비동기 래퍼와 세마포어 제어(동시 5개)로 병렬 추적합니다.

발견된 총 4,560개 피어의 IP 주소, 포트, 국가, 도시, ISP, ASN, 클라이언트 정보를 MaxMind GeoLite2-City 데이터베이스로 매핑합니다. IP 검색, IP 타이틀 필터, 국가 필터로 피어를 조회하고, 엑셀 다운로드로 법적 증거를 내보냅니다.

대시보드 & 통계 분석

React + Ant Design + Recharts 기반의 관리 대시보드입니다. IP 타이틀 204개, 검색 URL 44개, 발견된 토렌트 57개, 추적된 피어 4,560명(유니크 2,091), 오늘 크롤링 8회, 마지막 크롤링 시각 등 6개 통계 카드로 시스템 현황을 한눈에 파악합니다.

14일 추이 라인 차트(신규 토렌트·신규 피어·크롤링)와 국가별 피어 분포 파이 차트(KR 74%, US 6%, CA 3% 등)를 메인에 표시합니다. 14개 페이지로 전체 시스템을 관리하며, 다크/라이트 테마 전환을 지원합니다.

3단계 크롤링 엔진 & 차단 우회

Level 1(requests + cloudscraper), Level 2(Playwright 헤드리스 브라우저), Level 3(Playwright + 프록시 로테이션)의 3단계로 안티봇 보호를 자동 우회합니다. BlockDetector가 HTTP 상태 코드, 응답 헤더, HTML 패턴을 분석하여 10가지 시나리오(S01 User-Agent 차단, S02 IP 차단, S03 Cloudflare JS Challenge, S04 CAPTCHA, S05 Rate Limiting, S06 세션/쿠키, S07 JS 동적 로딩, S08 지역 차단, S09 Referer 체크, S10 사이트 폐쇄)를 자동 분류하고, CrawlRouter가 적절한 레벨로 에스컬레이션합니다.

AI 기반 토렌트 정보 추출

regex 패턴 매칭이 실패할 경우 Claude 3 Haiku API를 폴백으로 사용하여 HTML에서 토렌트 정보를 추출합니다. 검색 결과 페이지에서 상세 페이지 URL을 추출하고, 상세 페이지에서 info_hash(40자 hex), 마그넷 링크, 파일 크기, 제목을 파싱합니다. 스마트 HTML 트렁케이션으로 메인 콘텐츠 영역을 우선하여 토큰 한도 내에서 최적의 결과를 도출하며, JSON 응답 파싱에 다중 폴백 전략을 적용합니다. 설정에서 AI 추출을 on/off할 수 있습니다.

자동 스케줄링 & 모니터링

Celery Beat가 5가지 자동 작업을 관리합니다. 매시간 스케줄 크롤링, 6시간마다 피어 추적, 매시간 30분에 통계 집계, 매일 새벽 3시 클린업, 5분마다 헬스체크를 실행합니다. 알림 시스템이 크롤링 실패, 차단 감지, 신규 토렌트 발견, 사이트 폐쇄 4가지 이벤트를 실시간으로 알려주며, 벨 아이콘으로 미읽음 알림을 확인할 수 있습니다.

법적 증거 리포트 내보내기

피어 IP 목록, 랭킹, 국가별 분포를 Excel(openpyxl)과 PDF(reportlab + NanumGothic 한글 폰트)로 내보냅니다. PDF에는 IP 주소, 국가, ISP, info_hash, 타임스탬프, 법적 고지문이 포함되어 법적 증거 자료로 활용할 수 있습니다.

프록시 풀 관리

Level 3 크롤링에 사용하는 프록시 서버 풀을 관리합니다. 라운드로빈 선택, 헬스 체크, 성공률 모니터링, 연속 실패 시 자동 쿨다운을 지원하여 IP 로테이션 기반의 안정적인 크롤링을 보장합니다.

역할 기반 사용자 관리

JWT 인증 기반으로 admin(전체 권한), operator(운영), viewer(조회 전용) 3단계 역할을 분리합니다. 관리자가 사용자 계정을 생성·수정·비활성화할 수 있으며, API 레벨에서 권한 검증을 수행합니다.

관찰 가능한 인프라

Docker Compose 7개 서비스(PostgreSQL, Redis, FastAPI, Celery Worker, Celery Beat, Frontend, Nginx)로 구성됩니다. 프로덕션 환경에서는 Grafana + Loki + Promtail 로깅 스택을 추가하여 로그 수집·검색·시각화를 지원합니다.

Tech Stack

PythonFastAPIReactTypeScriptPostgreSQLRedisCeleryPlaywrightClaude APIlibtorrentDocker

Highlights

  • 3단계 크롤러 — 10가지 차단 시나리오 자동 감지 & 레벨 에스컬레이션
  • Claude AI 파싱 폴백 — regex 실패 시 AI가 HTML에서 토렌트 정보 추출
  • DHT 피어 추적 + MaxMind GeoIP2 IP 위치·ISP 분석

Architecture

Python 3.11+ / FastAPI 비동기 서버 / SQLAlchemy 2.0 + asyncpg + PostgreSQL 15 / Redis 7 (캐시 + Celery 브로커) / Celery Worker + Beat 자동 스케줄링 / Alembic 마이그레이션 / Playwright 헤드리스 브라우저 크롤링 / Claude 3 Haiku AI 추출 / libtorrent DHT 피어 추적 / MaxMind GeoLite2 GeoIP / React 18 + TypeScript 5.3 + Vite 5 / Ant Design 5 + Recharts / TanStack React Query 5 / JWT 인증 (admin/operator/viewer) / Docker Compose 7 서비스 / Grafana + Loki 로깅 / Nginx 리버스 프록시