리팩토링
설명
URL 분석 엔진의 공통 콘텐츠 분석 정확도를 개선한다.
이번 작업은 외부 threat DB 비의존 API에만 한정하지 않는다. GSB/URLhaus를 사용하는 기본 분석 파이프라인과 DB 비의존 파이프라인, 그리고 동기/비동기 분석 API 모두에 동일하
게 적용되어야 한다.
현재 분석 경로는 파이프라인별로 threat DB 사용 여부가 다르지만, 최종 페이지 콘텐츠 분석은 content_analyzer 계층을 공유한다. 따라서 정적 HTML 피처 추출, 로컬 룰 점수화,
OpenAI 프롬프트 컨텍스트를 공통 계층에서 강화해 모든 분석 API의 탐지 성능을 함께 올린다.
응답속도 저하를 막기 위해 Playwright 렌더링, 스크린샷 기반 Vision 분석, 2차 AI 호출은 이번 기본 동기 분석 경로에 포함하지 않는다. OpenAI 호출은 기본 1회를 유지한다.
주요 개선 범위:
-
공통 HTML 정적 추출 피처 확장
- 본문 주요 텍스트
- form/input name, type, placeholder, label
- submit/button/CTA 문구
- 다운로드 링크 및 확장자(apk, ipa, exe 등)
- 개인정보/금융정보 입력 필드 후보
- 주민번호, 휴대폰, 카드, 계좌, 인증번호, OTP 관련 필드
-
한국형 스미싱/피싱 루어 시그널 추가
- 지원금, 환급금, 택배, 부고, 청첩장, 과태료, 건강보험, 정부기관, 카카오톡 확인 등
-
OpenAI 프롬프트 컨텍스트 개선
- HTML 원문 대신 구조화된 고신호 요약 전달
- 도메인 휴리스틱, 리다이렉트, threat DB 선행 시그널을 함께 제공
- 기본 분석 파이프라인과 DB 비의존 파이프라인 모두에서 동일한 컨텍스트 품질을 보장
-
로컬 룰 점수표 보강
- 브랜드 로그인 사칭 외에 PII 수집형 폼, APK 다운로드 유도, 공공기관 사칭 문구를 점수화
- 기존 정상 로그인 페이지 오탐을 과도하게 늘리지 않도록 threshold 조정
-
적용 대상
- 외부 DB 의존 동기 API
- 외부 DB 의존 비동기 API
- DB 비의존 동기 API
- DB 비의존 비동기 API가 존재하거나 추가될 경우 동일하게 적용
-
성능 유지
- OpenAI 호출은 기본 1회 유지
- 렌더링/스크린샷 분석은 이번 범위에서 제외
- 반복 URL/final URL 결과 캐시 검토
- 가능한 경우 도메인 휴리스틱과 콘텐츠 fetch/extract 병렬화 검토
성공 기준:
- 기존 분석 API 응답 포맷을 깨지 않는다.
- 기본 분석 파이프라인과 DB 비의존 파이프라인 모두 개선된 콘텐츠 분석 결과를 사용한다.
- 동기/비동기 API 간 판정 로직 차이가 생기지 않는다.
- OpenAI 호출 횟수는 기본 1회를 유지한다.
- NHIS 사칭 폼, 카카오 APK 유도, NAVER 로그인 사칭류 케이스의 탐지 신호가 강화된다.
- 정상 로그인 페이지 오탐이 과도하게 늘지 않도록 회귀 테스트를 추가한다.
🗒 체크리스트
참고자료
- 기본 분석 파이프라인:
app/services/pipeline.py
- DB 비의존 파이프라인:
app/services/db_independent_pipeline.py
- 콘텐츠 피처 추출:
app/services/content_analyzer/extract.py
- 콘텐츠 룰 점수화:
app/services/content_analyzer/signals.py
- OpenAI 컨텍스트 구성:
app/services/content_analyzer/analyze.py
- 분석 API 엔드포인트:
app/api/v1/endpoints/analyze.py
- 테스트 코퍼스:
tests/corpus/urls.yaml
리팩토링
설명
URL 분석 엔진의 공통 콘텐츠 분석 정확도를 개선한다.
이번 작업은 외부 threat DB 비의존 API에만 한정하지 않는다. GSB/URLhaus를 사용하는 기본 분석 파이프라인과 DB 비의존 파이프라인, 그리고 동기/비동기 분석 API 모두에 동일하
게 적용되어야 한다.
현재 분석 경로는 파이프라인별로 threat DB 사용 여부가 다르지만, 최종 페이지 콘텐츠 분석은
content_analyzer계층을 공유한다. 따라서 정적 HTML 피처 추출, 로컬 룰 점수화,OpenAI 프롬프트 컨텍스트를 공통 계층에서 강화해 모든 분석 API의 탐지 성능을 함께 올린다.
응답속도 저하를 막기 위해 Playwright 렌더링, 스크린샷 기반 Vision 분석, 2차 AI 호출은 이번 기본 동기 분석 경로에 포함하지 않는다. OpenAI 호출은 기본 1회를 유지한다.
주요 개선 범위:
공통 HTML 정적 추출 피처 확장
한국형 스미싱/피싱 루어 시그널 추가
OpenAI 프롬프트 컨텍스트 개선
로컬 룰 점수표 보강
적용 대상
성능 유지
성공 기준:
🗒 체크리스트
참고자료
app/services/pipeline.pyapp/services/db_independent_pipeline.pyapp/services/content_analyzer/extract.pyapp/services/content_analyzer/signals.pyapp/services/content_analyzer/analyze.pyapp/api/v1/endpoints/analyze.pytests/corpus/urls.yaml