설명
CAPTCHA는 웹사이트가 당신의 트래픽이 자동화된 것일 수 있다고 판단할 때 나타나는 봇 탐지 챌린지입니다. 고전적인 형태는 읽어야 하는 왜곡된 텍스트 이미지이며, 최신 형태는 이미지 그리드 퍼즐('신호등이 있는 모든 사각형 선택'), 오디오 챌린지, 그리고 페이지와 상호작용하는 방식을 관찰하여 체크가 있다는 것을 알기도 전에 조용히 인간인지 봇인지 판단하는 행동 기반 / 보이지 않는 CAPTCHA입니다.
오늘날 주요 CAPTCHA 공급업체는 Google reCAPTCHA(v2, v3 및 Enterprise 등급)와 hCaptcha이며, 둘 다 Cloudflare 및 Akamai와 같은 안티봇 스택 뒤에서 널리 사용됩니다. Cloudflare는 또한 reCAPTCHA / hCaptcha 대안으로 자체 Turnstile 챌린지를 운영합니다. 각 시스템은 이미지 퍼즐, 브라우저 핑거프린팅, 마우스/키보드 움직임 분석, IP 평판을 서로 다른 비율로 조합하여 '인간일 가능성' 점수를 계산합니다.
스크래핑 및 데이터 수집 워크플로에서 CAPTCHA 챌린지에 대한 올바른 답은 이를 푸는 것이 아니라, 애초에 이를 유발하지 않는 것입니다. CAPTCHA는 요청이 의심스러워 보일 때(데이터센터 IP, 누락된 헤더, 불일치하는 핑거프린트, 불규칙한 요청 속도) 발생하므로, 가장 깔끔한 해결책은 위생 관리입니다: 레지덴셜 / 모바일 IP, 최신 브라우저 헤더, 현실적인 타이밍, 적절한 TLS 핑거프린트. CAPTCHA가 나타나더라도 새로운 IP로 전환하면 일반적으로 깨끗한 경로에 도달할 수 있습니다.
작동 방식
요청이 도착하면 웹사이트(또는 해당 안티봇 벤더)는 다음과 같은 신호를 사용하여 위험 점수를 계산합니다: 소스 IP 평판(데이터센터인지? 최근 남용 이력이 있는지? 국가는 어디인지?), 브라우저 핑거프린트(User-Agent, sec-ch-ua, 화면 크기, 플러그인), TLS 핸드셰이크 핑거프린트(JA3/JA4), 행동 신호(마우스 움직임, 키 입력 타이밍, 페이지 체류 시간), 그리고 쿠키/토큰의 과거 평판.
점수가 인간 신뢰 임계값보다 낮으면 시스템은 응답에 CAPTCHA 챌린지를 삽입합니다. 이 챌린지는 클라이언트가 작업(텍스트 읽기, 일치하는 이미지 클릭, 보이지 않는 행동 검사 통과)을 수행하고 토큰을 서버에 다시 제출하도록 요구합니다. 유효한 토큰이 없으면 서버는 이후의 요청을 거부합니다.