누군가 수천만 줄의 코드가 있는 크로미엄 오픈소스 프로젝트를 포크하여 AI 에이전트를 위한 브라우저 인프라를 만들었습니다. (@browserbase) 배경 및 동기: 기존 브라우저만으로는 왜 부족한가요? • 기존 디자인의 한계: 브라우저는 원래 로컬 컴퓨터에서 개인적으로 사용하도록 설계되었으며, 스팸 방지 및 사기 방지 목적으로 일반적으로 자동화된 동작을 차단하거나 방지하도록 설계되었습니다. • AI 시대의 새로운 요구 사항: 오늘날의 AI 에이전트는 장기간 서버에서 실행되어야 하고 인간을 대신하여 웹 페이지에서 작업을 수행해야 하는 "합법적인 자동화된 사용자"입니다. 결론: 단순히 JavaScript 수준에서 패치를 적용하는 것만으로는 더 이상 충분하지 않습니다. 근본적인 계층을 파헤쳐 브라우저의 핵심 동작을 수정해야 합니다. 핵심 전략: 크로미엄 포크 자동화된 브라우저가 일반 Chrome 브라우저와 완전히 동일하게 보이도록 하기 위해 Browserbase는 Chromium을 포크하기로 결정했습니다. 어려운 과정이었지만, 이를 통해 C++ 저수준에서 전체 시스템을 제어할 수 있었습니다. 주요 기술 혁신("의도적인 파괴와 재건") 연구팀은 기본 코드를 수정하여 브라우저의 "자동" 기능을 제거하고 실제 사용자처럼 동작하도록 만들었습니다. 세 가지 주요 기술적 수정 사항은 다음과 같습니다. 1. navigator.webdriver 태그를 제거합니다. • 원래 상태: Puppeteer와 같은 도구를 사용할 때 Chromium은 자동으로 이 플래그를 true로 설정하여 "나는 로봇이다"라는 사실을 직접적으로 드러냅니다. • 수정: 소스 코드 수준에서 false로 강제 적용했습니다. 이는 복잡한 내부 상태 전달 과정에서 노출되는 것을 방지하기 때문에 간단한 자바스크립트 주입보다 더 철저합니다. 2. 사용자 에이전트 ID를 교체합니다. • 원래 상태: 헤드리스 모드에서는 브라우저가 자동으로 "HeadlessChrome"으로 식별합니다. • 수정: 사용자 에이전트의 생성 논리가 크게 수정되어 메인 프로세스, 워커 또는 iframe인지에 관계없이 표준 "Chrome"으로 일관되게 보고하고 헤드리스 브라우저의 신원을 완전히 숨길 수 있습니다. 3. 장기 연결 세션(Keep-Alive)을 지원합니다. • 원래 상태: Linux에서 브라우저 프로세스는 일반적으로 모든 창이 닫히면 종료됩니다. 이는 장시간 로그인 상태(쿠키, 메모리 상태)를 유지해야 하는 AI 에이전트에게는 치명적입니다. • 수정 사항: kBrowserAliveWithNoWindows 메커니즘이 활성화되어 헤드리스 브라우저에 "하트"가 제공되어 보이는 창이 없어도 계속 실행될 수 있으므로 장기 실행 작업의 안정성이 보장됩니다. 엔지니어링 과제: 혼돈 속의 구축 - 코드 미로: 크로미엄 코드베이스는 매우 크고 복잡합니다. 간단한 속성에도 여러 렌더링 엔진과 네트워크 스택이 필요할 수 있어 수정하기가 매우 어렵습니다. • 빌드 시간: 일반적으로 전체 빌드에는 3~4일이 소요됩니다. 팀은 전용 빌드 인프라를 구축하여 소요 시간을 약 1시간으로 단축했습니다. • 빠른 버전 반복: Chromium은 6주마다 업데이트되며, 팀은 지속적으로 업스트림 코드를 추적하고 패치를 다시 적용해야 합니다. 공식 블로그
스레드를 불러오는 중
깔끔한 읽기 화면을 위해 X에서 원본 트윗을 가져오고 있어요.
보통 몇 초면 완료되니 잠시만 기다려 주세요.
