피드로 돌아가기
Search Sofascore from Your Browser's Address Bar
Dev.toDev.to
Frontend

React Controlled Input 제약을 우회하는 OS 레벨 Keyboard Event 주입 설계

Search Sofascore from Your Browser's Address Bar

Kamil Kujawiński2026년 4월 21일6intermediate

Context

Sofascore 서비스의 Search Input이 React Controlled Field로 구현되어 programmatic value 할당 및 synthetic Event를 무시하는 제약 존재. URL Parameter(?q=)를 통한 직접 검색 진입이 불가능한 구조적 한계 직면.

Technical Solution

  • Browser Keyword Shortcut 설정을 통한 쿼리 파라미터 포함 URL 라우팅 구현
  • Tampermonkey Userscript를 활용한 DOM Polling 및 검색 입력창 포커싱 자동화
  • React의 상태 업데이트 로직을 우회하기 위해 OS 레벨의 Keystroke를 발생시키는 Local Typing Server 설계
  • Python HTTP Server와 AppleScript의 System Events를 연동하여 실제 키보드 입력과 동일한 하드웨어 이벤트 생성
  • LaunchAgent 기반의 서비스 상주화를 통해 브라우저와 로컬 시스템 간의 비동기 이벤트 브릿지 구축

- React Controlled Component의 value 강제 변경 불가 시 OS 레벨 이벤트 주입 검토 - DOM 렌더링 시점에 따른 요소 부재 가능성을 고려한 Polling 메커니즘 적용 - 브라우저 샌드박스 제약을 극복하기 위한 Local HTTP API 서버 활용 방안 고려

원문 읽기