홈으로 돌아가기

리드 양식의 사기 탐지: 방법과 코드

이 기사는 리드 양식의 사기 탐지 방법의 진화를 설명합니다: 동적 양식부터 세 가지 처리 시나리오를 가진 '소프트' 필터까지. 중급/시니어 개발자를 위한 미들웨어 코드와 ML 통합 권장 사항이 제공됩니다.

CAPTCHA 없이 리드 양식의 주문 스팸을 중지하는 방법
Advertisement 728x90

리드 폼 사기 탐지: 차단에서 지능형 필터링으로

리드 폼은 단순한 봇부터 실제 사용자가 유료로 제출하는 공격까지 다층적 위협에 직면해 있습니다. 초기에는 봇이 정적 페이지를 크롤링하고 자동으로 입력 필드를 채웠습니다. 이후 Vue.js를 활용한 동적 폼 생성 방식이 등장하면서 스크래퍼가 요소를 숨기는 효과를 가져왔지만, 스팸러들은 API 엔드포인트를 역설계하고 User-Agent, 화면 해상도, 쿠키 등을 위조하며 이 흐름을 다시 뒤엎었습니다.

전통적인 CAPTCHA는 봇이 실시간으로 응답을 생성함에 따라 효력을 잃어갔습니다. 이를 극복하기 위해 사용자 세션과 연결된 JWT 토큰을 도입하고 서버 측 검증을 강화함으로써 제어력을 회복했습니다. 그러나 부동산과 같은 경쟁이 치열한 분야에서는 유료 폼 작성 서비스가 등장했고, 사람들은 일정 금액을 받고 퀴즈를 완성함으로써 전환율 지표를 왜곡하게 되었습니다.

초기 필터링을 위한 행동 분석

각 퀴즈 단계의 타임스탬프는 자동화 시도를 탐지하는 데 도움이 됩니다. 만약 응답 시간이 기준치 이하(예: 1문항당 2초 미만)라면 해당 리드는 의심 대상으로 표시됩니다.

Google AdInline article slot

디지털 발자국 모니터링에는 다음 항목이 포함됩니다:

  • 데이터 센터에서 발생한 IP 급증 여부 확인
  • 쿠키 및 지문 정보 분석 (캔버스, WebGL, 폰트)
  • 데이터베이스 내 반복 접속 여부 감지 (세션당 3회 이상)

이러한 조치로 약 80~90%의 자동화 스팸을 필터링할 수 있지만, 유료 공격은 청소 작업과 수동 처리를 통해 이를 우회합니다.

새로운 패러다임: 차단이 아닌 통제

엄격한 차단은 스팸러들이 프록시를 전환하고 localStorage를 삭제하도록 유도합니다. 반면 '소프트' 필터링 접근법으로 전환하면 상황이 바뀝니다.

Google AdInline article slot

모든 리드는 성공적으로 처리되지만, 서로 다른 시나리오로 분류됩니다:

  • 완전 무시: CRM에 저장되지 않으며 알림도 발생하지 않아 리드는 단순히 사라집니다.
  • 블랙 태깅: 별도의 데이터베이스에 저장되어 분석용이며 운영 통합 시스템에는 전달되지 않습니다.
  • 유령 전환: CRM에 '스팸' 플래그와 함께 전송되지만, 분석 도구(GA4, 유메트리카)에서는 이벤트가 기록되지 않습니다.

이 방식은 공격자를 억제합니다. 거절되지 않으면 피드백이 없으므로 유료 사기 캠페인의 수익성이 크게 떨어집니다.

필터의 기술적 구현

Node.js/Express 서버 미들웨어가 특징 벡터를 검사합니다:

Google AdInline article slot
const fraudScore = calculateFraudScore(req.body, req.headers, sessionData);

if (fraudScore > 0.8) {
  routeToBlackhole(req.body); // 시나리오 1
} else if (fraudScore > 0.5) {
  markAsSpamAndLog(req.body); // 시나리오 2
} else if (fraudScore > 0.3) {
  sendToCrmWithFlag(req.body); // 시나리오 3, 분석 미적용
} else {
  processNormally(req.body);
}

function calculateFraudScore(data, headers, session) {
  let score = 0;
  score += data.quizTime < 30 ? 0.4 : 0; // 퀴즈 시간
  score += isProxyIP(headers['x-forwarded-for']) ? 0.3 : 0;
  score += session.repeatContacts > 2 ? 0.2 : 0;
  return score;
}

클라이언트 사이드 스크립트를 통한 지문 수집은 장치 메모리, 타임존 오프셋, 오디오 컨텍스트 등의 엔트로피를 수집합니다. 서버는 Redis를 활용해 실시간 클러스터 탐지를 위한 데이터를 집계합니다.

확장성과 모니터링

고부하 시스템에서는 과거 리드 데이터를 기반으로 학습한 머신러닝 모델(XGBoost 등)을 통합하는 것이 좋습니다. 레이블링된 데이터셋(스팸/정상)을 활용하면 정밀도 95% 이상, 재현율 90% 이상의 성능을 달성할 수 있습니다.

Grafana 대시보드를 통해 사기 비율과 오진률을 모니터링하고, 트래픽 일부에 대해 시나리오 A/B 테스트를 수행하여 리스크를 최소화하세요.

핵심 요약

  • 유료 사기 리드 비용은 1건당 10~50루블이지만, 광고 CPC를 20~30% 증가시킵니다.
  • 소프트 필터링은 사용자 경험을 해치지 않으면서 공격자의 동기를 낮춥니다.
  • 행동 분석과 머신러닝을 결합해 장기적 저항력을 확보하세요.
  • 모든 로그를 보관해 후속 분석과 모델 재학습에 활용하세요.
  • 롤아웃 전 실제 트래픽에서 충분한 테스트를 진행하세요.

— Editorial Team

Advertisement 728x90

다음 읽기