BioPlayground

🧬
목록으로

캡차 — 봇인지 판단하는 기술의 진화

CAPTCHA가 왜 존재하는지, 어떻게 진화했는지, 그리고 왜 점점 귀찮아지는지 알아봅니다.

입문
|
4
|
검증 완료 (2026-07)
진행률0/20 (0%)

캡차 — 봇인지 판단하는 기술의 진화

이 토픽을 마치면

캡차가 왜 존재하는지, v1부터 v3까지 어떻게 진화했는지 이해하고, 구현할 때 어떤 선택지가 있는지 알 수 있습니다.


회원가입 폼에 봇이 몰려들면

어떤 쇼핑몰이 "신규 가입 시 5,000원 쿠폰" 이벤트를 열었습니다. 10분 만에 가입자가 3만 명이 됐습니다. 전부 봇이었습니다.

python
# 봇이 하는 일
for i in range(30000):
requests.post("https://shop.com/signup", data={
"email": f"bot{i}@fake.com",
"password": "1234"
})

폼에 데이터를 넣고 전송하는 건 코드 3줄이면 됩니다. 사람과 봇을 구별할 방법이 필요합니다. 이것이 CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart)입니다.


1세대 — 찌그러진 글자

2000년대의 캡차는 이런 모습이었습니다:

text
찌그러지고 선이 그어진 이미지 안의 글자를 읽어서 입력하세요
[xK9m2P]  →  사용자가 타이핑

원리: 사람은 뒤틀린 글자를 읽을 수 있지만, 당시의 OCR(광학 문자 인식) 기술로는 읽기 어렵다.

문제: AI가 발전하면서 OCR 정확도가 사람을 넘어섰습니다. 글자를 더 찌그러뜨리면 봇은 읽는데 사람이 못 읽는 역전 현상이 발생했습니다.


2세대 — "나는 로봇이 아닙니다" (reCAPTCHA v2)

구글이 만든 reCAPTCHA v2는 체크박스 하나입니다:

text
☐ 나는 로봇이 아닙니다

이걸 클릭하는 순간, 뒤에서 무슨 일이 벌어지냐면:

  • 마우스 궤적이 사람다운가 (봇은 직선으로 이동)
  • 페이지에 머문 시간이 자연스러운가
  • 쿠키와 브라우저 정보가 정상인가
  • 이전에 구글 서비스를 이용한 적이 있는가

의심스러우면 "신호등이 있는 이미지를 모두 고르세요" 같은 이미지 챌린지가 뜹니다. 이 이미지 라벨링 데이터는 구글의 자율주행차 AI 학습에 사용됩니다. 캡차를 풀 때마다 구글의 AI를 훈련시키고 있는 셈입니다.


reCAPTCHA v2의 이중 목적

구글이 이미지 챌린지에 "신호등", "횡단보도", "자동차"를 사용하는 이유가 있습니다. 사용자가 이미지를 분류할 때마다, 그 결과가 구글의 자율주행 AI 학습 데이터가 됩니다. 무료 노동력입니다.

이전의 reCAPTCHA v1도 비슷했습니다 — 스캔된 고문서의 인식 불가능한 단어를 사용자에게 읽히면서 Google Books의 디지털화를 진행했습니다. 보안 도구이면서 동시에 AI 학습 파이프라인인 셈입니다.


3세대 — 보이지 않는 캡차 (reCAPTCHA v3)

v3는 체크박스조차 없습니다. 사용자가 아무것도 하지 않아도, 백그라운드에서 행동 패턴을 분석해서 **점수(0.0 ~ 1.0)**를 매깁니다:

  • 0.9: 거의 확실히 사람
  • 0.1: 거의 확실히 봇
javascript
// 서버에서 점수 확인
const score = await verifyRecaptcha(token);
if (score < 0.5) {
  // 추가 인증 요구 (이메일 인증, SMS 등)
}

개발자가 임계값을 설정합니다. 중요한 액션(결제, 회원가입)은 임계값을 높이고, 덜 중요한 액션(검색)은 낮춥니다. 사용자 경험이 좋아지는 대신, 봇도 "사람처럼 행동하는 법"을 학습하면서 군비 경쟁이 계속됩니다.


캡차 우회 기술과 군비 경쟁

봇 제작자들은 끊임없이 캡차를 우회합니다:

  • OCR 돌파: 딥러닝 모델로 찌그러진 글자 인식 → 1세대 캡차 무력화
  • 캡차 팜: 저렴한 인건비 국가의 사람들이 캡차를 대신 풀어주는 서비스 (1000개에 $1~3)
  • 행동 모방: 마우스를 사람처럼 움직이는 봇 → reCAPTCHA v2 우회
  • 브라우저 자동화: Playwright/Selenium으로 실제 브라우저를 조종 → 쿠키/핑거프린트 정상화

이에 대응해서:

  • 핑거프린팅: 브라우저 설정, 폰트, 화면 크기 등 수십 가지 정보를 조합해 고유 식별
  • 행동 분석 강화: 스크롤 패턴, 타이핑 리듬, 터치 압력까지 분석
  • Cloudflare Turnstile: Google 의존 없이 서버사이드에서 봇 판별

이 군비 경쟁에서 "완벽한 캡차"는 존재하지 않습니다. 보안 수준과 사용자 편의성 사이에서 균형을 잡는 것이 현실적인 목표입니다.


핵심 한 줄: 캡차는 "사람과 봇을 구별하는 테스트"이며, 찌그러진 글자 → 이미지 분류 → 행동 분석으로 진화했습니다. 캡차를 풀 때마다 AI 학습 데이터를 만들어주고 있다는 게 아이러니입니다.