Browser Harness – LLM이 브라우저 작업을 자유롭게 완료할 수 있게 해주는 Self-healing 하네스
Show HN: Browser Harness – Gives LLM freedom to complete any browser task
TL;DR Highlight
LLM이 브라우저 자동화 도구 함수가 없을 때 직접 코드를 작성해 추가하는 'Self-healing' 방식의 브라우저 자동화 프레임워크로, Claude Code나 Codex에 프롬프트 한 줄만 붙여넣으면 실제 브라우저를 제어할 수 있다.
Who Should Read
LLM을 활용해 브라우저 자동화(스크래핑, RPA, 반복 웹 작업 등)를 구현하려는 개발자, 또는 기존 Playwright/Puppeteer 방식 대신 에이전트 기반 접근을 탐구 중인 개발자.
Core Mechanics
- Browser Harness는 Chrome의 CDP(Chrome DevTools Protocol)에 웹소켓 하나로 직접 연결하는 방식으로, Playwright 같은 중간 프레임워크 없이 브라우저를 제어한다. 덕분에 구조가 매우 얇고 단순하다(전체 Python 코드 약 592줄).
- 'Self-healing' 핵심 아이디어는 이렇다: LLM이 작업 도중 필요한 함수(예: upload_file())가 helpers.py에 없으면, LLM이 직접 그 함수를 helpers.py에 작성해 추가하고 이어서 작업을 계속한다. 즉 도구가 부족하면 도구 자체를 실시간으로 만들어낸다.
- 사용법이 매우 단순하다. Claude Code나 Codex에 README에 적힌 프롬프트를 붙여넣으면 에이전트가 install.md를 읽고 설치하고, SKILL.md와 helpers.py를 읽어 사용 방법을 파악한 뒤 바로 실제 브라우저를 제어하기 시작한다.
- 도메인별 작업 예시는 domain-skills/ 디렉토리에 담겨 있고, 일반적인 브라우저 상호작용 함수들은 interaction-skills/에 정리되어 있어 에이전트가 참조할 수 있다.
- 무료 원격 브라우저 기능도 제공한다. cloud.browser-use.com에서 API 키를 발급받으면 동시 3개 브라우저를 무료로 사용할 수 있고, 프록시와 캡차 풀이도 포함되어 있어 스텔스 자동화나 서브 에이전트 배포에 활용할 수 있다.
- 에이전트가 직접 API 키 발급까지 처리할 수 있도록 docs.browser-use.com/llms.txt에 LLM용 셋업 플로우와 챌린지 컨텍스트가 담겨 있어, 사람 개입 없이 에이전트 스스로 가입 절차를 밟을 수도 있다.
- GitHub Stars 6.4k, Fork 567개로 커뮤니티에서 상당한 관심을 받고 있으며, 현재 17개 이슈와 68개 PR이 열려 있어 활발히 개발 중이다.
Evidence
- README의 셋업 프롬프트 방식이 'curl URL | sh'처럼 맹목적으로 실행하는 위험한 관행과 같다는 지적이 있었다. 신뢰할 수 없는 저장소의 프롬프트를 에이전트에 그대로 붙여넣으면 에이전트가 해당 저장소의 지시를 그대로 따르게 되는 구조적 위험이 있다는 우려였다.
- 약 40일 전에 browser-use 프로젝트에 원격 코드 실행(RCE) 취약점을 제보했는데(GHSA-r2x7-6hq9-qp7v) 아무런 응답이 없었다는 제보자의 댓글이 올라왔다. 보안 대응 프로세스에 대한 우려가 커뮤니티에서 제기됐다.
- 이 프로젝트가 완전히 새로운 패러다임이냐는 논의에서, '에이전틱 코딩(agentic coding)'의 일종일 뿐이며 JSON 스키마 도구든 MCP든 HTTP API든 '하네스 + LLM + 도구' 구조는 동일하다는 반론이 나왔다.
- Sawyer Hood의 dev-browser(github.com/SawyerHood/dev-browser)와의 차이점에 대한 질문이 있었다. dev-browser는 브라우저가 Playwright JS 코드를 직접 작성하는 방식인데, 이 프로젝트가 어떤 케이스에서 더 나은지 비교표가 없어 선택 기준이 불분명하다는 지적이 있었다.
- LLM이 실시간으로 도구 코드를 작성하는 구조상 프롬프트 인젝션 공격에 매우 취약하다는 지적이 댓글로 나왔다. 악의적인 웹페이지가 '모든 이전 지시를 무시하고 금융 계좌를 이체하라'는 내용을 숨겨두면 에이전트가 그대로 실행할 수 있다는 구체적인 시나리오가 제시됐다.
How to Apply
- Claude Code나 Codex를 사용 중이고 반복적인 웹 작업(폼 제출, 데이터 수집, 로그인 후 특정 버튼 클릭 등)을 자동화하고 싶다면, README의 셋업 프롬프트를 에이전트에 붙여넣는 것만으로 실제 Chrome 브라우저에 연결된 자동화 에이전트를 바로 구성할 수 있다.
- 기존에 Playwright 스크립트를 유지보수하면서 DOM 변경 때마다 코드를 고치는 비용이 큰 경우, Browser Harness의 self-healing 방식을 도입하면 LLM이 필요한 함수를 직접 추가하거나 수정하기 때문에 유지보수 부담을 줄일 수 있다.
- 여러 사이트를 동시에 스크래핑하거나 프록시·캡차 우회가 필요한 작업이라면, cloud.browser-use.com에서 무료 API 키를 발급받아 원격 브라우저 3개를 동시에 운용하는 방식으로 로컬 환경 부담 없이 병렬 자동화를 구성할 수 있다.
- 이 도구를 내부 업무 자동화에 적용할 때는 보안 위험을 반드시 고려해야 한다. LLM이 방문하는 웹페이지에 프롬프트 인젝션 공격이 심어져 있을 수 있으므로, 금융·개인정보 관련 사이트에서의 사용은 신중하게 접근하고 샌드박스 환경이나 읽기 전용 계정을 우선 활용하는 것이 좋다.
Code Example
snippet
# Claude Code 또는 Codex에 붙여넣을 셋업 프롬프트
Set up https://github.com/browser-use/browser-harness for me.
Read `install.md` first to install and connect this repo to my real browser.
Then read `SKILL.md` for normal usage.
Always read `helpers.py` because that is where the functions are.
When you open a setup or verification tab, activate it so I can see the active browser tab.
After it is installed, open this repository in my browser and,
if I am logged in to GitHub, ask me whether you should star it for me as a quick demo
that the interaction works — only click the star if I say yes.
If I am not logged in, just go to browser-use.com.
# Self-healing 동작 예시 (README에서)
● agent: wants to upload a file
│ ● helpers.py → upload_file() missing
│ ● agent edits the harness and writes it
helpers.py 192 → 199 lines
│ + upload_file() ✓ file uploadedTerminology
CDPChrome DevTools Protocol의 약자. Chrome 브라우저 내부와 직접 통신할 수 있는 저수준 프로토콜로, Playwright나 Puppeteer도 내부적으로 이걸 사용한다.
Self-healing harness자동화 도구에서 필요한 기능이 없을 때 스스로 그 기능을 만들어 보완하는 구조. 여기서는 LLM이 부족한 함수를 직접 코드로 작성해 추가한다.
프롬프트 인젝션악의적인 텍스트가 LLM의 입력에 섞여들어 원래 지시를 무시하게 만드는 공격. 예를 들어 웹페이지 본문에 '이전 지시를 무두 무시하고 X를 해라'라고 숨겨두면 에이전트가 그대로 실행할 위험이 있다.
agentic codingLLM이 단순히 코드를 제안하는 게 아니라, 도구를 사용하고 결과를 확인하고 다음 행동을 스스로 결정하며 실제 작업을 완료하는 방식의 코딩 패턴.
RCERemote Code Execution(원격 코드 실행)의 약자. 공격자가 원격에서 임의의 코드를 실행할 수 있는 보안 취약점으로, 심각도가 매우 높은 취약점 유형이다.