실제 사용자를 막지 않고 무료 체험 남용을 방지하는 방법
사람들이 새 계정으로 무료 체험을 다시 시작하는 이유, 그 계정들을 연결하는 신호, 그리고 정직한 사용자에게는 카드 없는 체험을 유지하면서 반복 체험을 막는 판단 흐름.
무료 체험 남용의 실제 모습
무료 체험 남용이란 한 사람이 새 계정으로 체험을 계속 다시 시작해 결코 돈을 내지 않는 것입니다. 공격처럼 보이는 경우는 드뭅니다. 트래픽 폭주도, 도난 카드도 없습니다. 보이는 것은 하나하나 보면 평범한 계정들이 꾸준히 들어오는 모습입니다.
- 새 일회용 메일함. 수만 개의 일회용 도메인 중 하나에서 받은 임시 주소로, 계정 확인에 한 번 쓰고 끝입니다.
- 같은 Gmail을 다르게 쓴 것.
jane.doe@gmail.com,janedoe+2@gmail.com,j.a.n.e.doe@gmail.com은 모두 같은 메일함으로 갑니다. - 같은 노트북, 같은 집 인터넷. 브라우저, 화면, 글꼴, IP 주소가 한 달 전에 만든 계정과 똑같습니다.
이 계정들은 모두 이메일 인증을 통과하므로 “이메일을 인증해 주세요”만으로는 아무 소용이 없습니다. 가입 시점에 답해야 할 질문은 “이 이메일이 진짜인가?”가 아니라 “이 사람을 전에 본 적이 있는가?”입니다.
흔한 해결책이 오히려 해가 되는 이유
모든 체험에 카드 등록 요구
카드 등록 장벽은 반복 체험 대부분을 막지만, 제품을 먼저 써 보고 싶은 정직한 방문자도 상당수 막습니다. 남용 문제를 전환율 문제로 바꾸는 셈입니다. 게다가 카드는 여러 계정에서 재사용할 수 있으니, 카드만으로는 새로운 사람이라는 증거도 되지 않습니다.
이메일 도메인으로만 차단
일회용 도메인 차단 목록은 가장 게으른 남용자만 걸러냅니다. Gmail 별칭은 전혀 잡지 못하고, 코드에 복사해 둔 목록은 새 일회용 도메인이 계속 생기기 때문에 금방 낡습니다. 자세한 내용은 가입 시 일회용 이메일을 차단하는 방법에서 다룹니다.
IP 주소로 차단
IP 차단은 가장 거친 도구입니다. 사무실, 대학, 이동통신사 전체가 주소를 공유하고, 마음먹은 남용자는 몇 초 만에 네트워크를 바꿉니다. IP는 점수 안에서 유용한 신호이지, 그 자체로 거절할 이유는 아닙니다.
새 계정을 예전 계정과 연결하는 신호
하나의 엄격한 규칙 대신 여러 약한 신호를 보고 더하세요. 어느 것도 혼자 결정해서는 안 되지만, 함께 보면 반복 체험이 분명해집니다.
| 신호 | 잡아내는 것 | 오탐 위험 |
|---|---|---|
| 정규화한 메일함이 이미 존재 | 기존 계정의 Gmail 점·더하기 변형 | 낮음: 말 그대로 같은 메일함 |
| 일회용 도메인 | 가입 한 번을 위해 만든 일회용 메일함 | 낮음(목록이 최신이라면) |
| 도메인이 메일을 받을 수 없음 | 오타와 지어낸 도메인 | 낮음 |
| 기존 계정과 같은 기기 | 같은 브라우저가 두 번째 계정을 생성 | 중간: 가족과 공용 컴퓨터 |
| 오늘 한 IP에서 다수 가입 | 한 네트워크에서 몰린 가입 | 중간: 사무실, 캠퍼스, 통신사 NAT |
| 데이터센터 또는 Tor 주소 | 서버에서 도는 스크립트, 익명화된 트래픽 | 중간: 일부 VPN 사용자 |
패턴은 분명합니다. 오탐 위험이 낮은 신호에는 큰 가중치를 줘도 되고, 정직한 사용자에게도 걸리는 신호는 점수를 조금만 올려야 합니다.
정직한 사용자를 지키는 판단 흐름
우리가 본 가장 효과적인 설정은 거의 차단하지 않습니다. 거의 모두에게 카드 없는 체험을 주고, 점수가 높을 때만 마찰을 더합니다.
- 서버에서 가입에 점수를 매깁니다(양식 제출 후, 체험 시작 전).
- 허용(낮은 점수): 일반 체험을 시작합니다. 대다수가 여기에 해당해야 합니다.
- 검토(중간 점수): 체험은 시작하되, 실제 사용자보다 남용자에게 더 비싼 것을 요구합니다—카드, 전화번호, 또는 인증 전까지 줄어든 사용량.
- 차단(높은 점수): 체험을 시작하지 않습니다. 점수는 확률이지 증거가 아니므로, 막다른 길 대신 유료 플랜이나 문의 링크를 안내하세요.
원칙: 여동생과 노트북을 함께 쓴다는 이유만으로 차단해서는 안 됩니다. 공유 기기 신호는 같은 메일함처럼 더 강한 신호와 함께일 때만 쌓으세요.
가입 흐름에 연결하는 방법
필요한 것은 두 가지입니다. 가입 페이지에서 브라우저를 알아보는 장치와, 체험을 주기 전 서버 측 검사입니다. Attrelix라면 script 태그 하나와 API 호출 한 번입니다.
<!-- 가입 페이지 --> <script src="https://attrelix.com/v1.js" data-key="pk_live_…" async></script>
# 서버, 체험 시작 전 (Python) r = requests.post("https://attrelix.com/v1/check", timeout=3, headers={"Authorization": f"Bearer {SECRET}"}, json={"email": email, "ip": ip, "visitor": form["attrelix_visitor"]}) decision = r.json().get("decision", "allow") if r.ok else "allow" if decision == "allow": start_trial(user) elif decision == "review": start_trial(user, require_card=True) else: offer_paid_plan(user)
대비책에 주목하세요. 검사가 시간 초과되면 사용자를 통과시킵니다. 사기 방지 검사가 가입 장애의 원인이 되어서는 안 됩니다.
강화하기 전에 측정하세요
관찰 전용 모드로 시작하세요. 1~2주 동안 조치 없이 판단만 기록한 뒤, 검토로 갔을 계정을 살펴봅니다. 대부분 반복 체험이라면 조치를 켭니다. 정직한 사용자가 섞여 있다면 기준값을 올리거나, 그들을 그쪽으로 보낸 신호의 가중치를 낮춥니다. 남의 기본값이 아니라 자신의 데이터로 조정하세요.
요약
- 반복 체험은 계정 하나씩 보면 깨끗합니다. 이전 계정과의 연결을 찾으세요.
- 이메일을 정규화하고, 일회용 도메인을 확인하고, 기기를 알아보세요.
- 신호를 점수로 더하고, 강한 신호만 혼자 결정하게 하세요.
- 검토에서는 차단 대신 마찰을 더하고, 장애 시에는 항상 통과시키세요.