피드로 돌아가기
From mock-only-works to real-world-works: 48 hours of reCAPTCHA debugging
Dev.toDev.to
Frontend

Mock 기반 검증의 한계를 넘어 실제 reCAPTCHA 좌표 오차를 해결한 v0.7.4 릴리즈

From mock-only-works to real-world-works: 48 hours of reCAPTCHA debugging

MiniKao2026년 5월 25일11intermediate

Context

AI 기반 reCAPTCHA Solver 개발 과정에서 Mock Fixture 기반 Unit Test의 맹점으로 인해 실제 환경의 좌표 불일치 문제를 인지하지 못한 상황. Iframe 전체 크기를 단순 분할하여 클릭 좌표를 계산하는 Naive 접근 방식으로 인해 헤더와 푸터 영역을 포함한 오작동 발생.

Technical Solution

  • Iframe 전체 분할 방식에서 Playwright 기반의 개별 Cell Bounding Box 추출 방식으로 전환하여 좌표 정밀도 확보
  • DOM 구조 차이로 인한 bounding_box() 호출 실패 시 Silent Fallback이 발생하는 Try-Except 구조의 위험성 식별
  • 실행 경로를 명시하는 _coord_method 디버그 필드를 도입하여 실제 작동 로직(Iframe Divide vs Cell Bounding Box)을 가시화
  • 단일 정적 이미지 해결 방식에서 reCAPTCHA의 Dynamic Replace 특성을 반영한 Multi-round Solver 구조로 확장
  • Vendor의 Selector 변경을 빠르게 감지하기 위해 주 단위의 Third-party Demo Dogfood CI 워크플로우 구축

- Mock 데이터가 실제 DOM 구조와 일치하는지 검증하고, CSS 렌더링 특성이 다른 Edge Case를 포함할 것 - 복수 실행 경로가 존재하는 로직에 `debug_field`를 추가하여 런타임에 어떤 경로가 선택되었는지 추적 가능하게 설계할 것 - Exception 처리 시 단순 Swallow 대신 에러 원인을 기록하거나 명시적인 상태 값을 반환하여 Silent Failure를 방지할 것 - Unit Test로 잡을 수 없는 Vendor API/UI 변경 사항을 위해 정기적인 E2E Dogfood Script를 운영할 것

원문 읽기