Post

이제 마우스에서 손 떼셔도 됩니다: Browser-use로 시작하는 진짜 'AI 에이전트' 라이프

이제 마우스에서 손 떼셔도 됩니다: Browser-use로 시작하는 진짜 'AI 에이전트' 라이프

☕️ 커피 한 잔하며 나누는 ‘요즘 자동화’ 이야기

여러분, 혹시 오늘도 Selenium이나 Playwright 잡고 씨름하셨나요? “아, 왜 갑자기 이 버튼 ID가 바뀐 거야?”라며 한숨 쉬며 Inspect Element를 열고 계시진 않았나요? 저도 사실 며칠 전까지만 해도 그랬거든요. 셀렉터 하나 바뀌었다고 애써 짠 코드가 터질 때면 정말 ‘이게 최선인가?’ 싶더라고요.

그러다 운명처럼 Browser-use라는 녀석을 만났습니다. 처음엔 “또 흔한 AI 래퍼(Wrapper)겠지” 싶었는데, 직접 써보고 나서 생각이 완전히 바뀌었어요. 이건 그냥 자동화 툴이 아니라, 내 브라우저를 대신 써줄 인턴 한 명을 고용한 기분이랄까요? 오늘은 제가 이 물건을 써보며 느꼈던 전율과, 솔직히 좀 아쉬웠던 부분까지 아주 가감 없이 털어놓아 보려 합니다.

🚀 한 마디로 요약하자면?

  1. 브라우저를 직접 ‘보고’ ‘이해해서’ 클릭하는 지능형 에이전트 프레임워크예요.
  2. CSS 셀렉터 노가다 없이 “구글에서 최신 AI 뉴스 5개 찾아서 정리해줘” 같은 자연어 명령만으로 충분합니다.
  3. Playwright의 강력함에 LLM의 두뇌를 얹은, 현시점 가장 섹시한 자동화 도구입니다.

🧠 Browser-use, 도대체 뭐가 다른 걸까요?

기존의 자동화는 ‘어떻게(How)’에 집중했습니다. “#submit-btn을 클릭하고, 3초 기다린 뒤에 .result를 긁어와.”라고 아주 상세하게 지시해야 했죠. 하지만 Browser-use는 ‘무엇을(What)’에 집중합니다.

이 라이브러리의 핵심은 LLM(두뇌) + Playwright(손) + Vision(눈)의 조합이에요. 단순히 HTML 코드를 읽는 게 아니라, 페이지의 스크린샷을 찍어서 시각적으로 분석합니다. 사람이 웹사이트를 볼 때처럼 “아, 저기 오른쪽 위에 로그인 버튼이 있네?”라고 인지하는 방식이죠.

📊 기존 도구 vs Browser-use 한눈에 보기

특징기존 방식 (Selenium/Playwright)Browser-use (Agentic)
지시 방식복잡한 코드 (XPath, CSS Selectors)자연어 (일상적인 말)
유지보수UI 바뀌면 코드가 깨짐 (유지보수 지옥)스스로 판단해서 적응 (Self-healing)
의사결정고정된 로직만 수행상황에 맞는 최선의 액션 결정
학습 곡선DOM 구조 공부 필수프롬프트 잘 쓰면 끝

사실 이 ‘Self-healing’ 능력이 진짜 미쳤습니다. 버튼 이름이 ‘Submit’에서 ‘Confirm’으로 바뀌어도, Browser-use의 에이전트는 당황하지 않아요. “음, 문맥상 이게 제출 버튼이겠군” 하고 알아서 눌러버리거든요. 개발자 입장에선 정말 눈물 나게 고마운 기능이죠. 😂


💻 코드 5줄로 에이전트 만들기 (진짜예요!)

백문이 불여일코드죠. 파이썬 좀 하시는 분들이라면 아래 코드를 보고 무릎을 탁 치실 겁니다. 환경 설정? pip install browser-use 하나면 끝납니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import asyncio
from browser_use import Agent
from langchain_openai import ChatOpenAI

async def main():
    # 1. 우리의 에이전트 '두뇌' 설정 (GPT-4o 추천!)
    llm = ChatOpenAI(model="gpt-4o")
    
    # 2. 수행할 작업 던져주기
    agent = Agent(
        task="애플 공식 홈페이지에 들어가서 최신 아이폰의 가격을 찾고, 삼성 공홈의 갤럭시 S24와 가격을 비교해서 표로 정리해줘.",
        llm=llm,
    )
    
    # 3. 실행!
    result = await agent.run()
    print(result)

asyncio.run(main())

이 코드가 실행되는 걸 보고 있으면 정말 경이롭습니다. 브라우저가 혼자 뜨더니(Headless 설정 가능!), 마우스 커서가 애플 사이트를 뒤지고, 탭을 하나 더 열어서 삼성 사이트로 가고… 마지막엔 깔끔하게 정리된 텍스트를 내뱉더라고요. 마치 제 뒤에서 누군가 대신 일해주고 있는 것 같은 기분이 듭니다.


🤔 실무에서 어떻게 써먹을 수 있을까?

이걸 단순히 ‘크롤링’ 도구로만 생각하면 좀 아쉽습니다. 제가 머릿속으로 그려본 몇 가지 ‘에이전틱(Agentic) 시나리오’는 이렇습니다.

  • 🎯 자동화된 경쟁사 모니터링: 매일 아침 경쟁사 쇼핑몰에 들어가서 신상품 가격을 확인하고, 우리보다 저렴하면 슬랙(Slack)으로 알림을 주는 에이전트.
  • 🛠️ QA 엔지니어의 구원투수: “회원가입 폼에 이상한 데이터를 넣었을 때 에러 메시지가 잘 나오는지 확인해줘”라는 한 문장으로 E2E 테스트 완료.
  • 💼 비즈니스 인텔리전스: 링크드인에서 특정 키워드를 가진 잠재 고객 리스트를 뽑아서 스프레드시트에 정리하는 작업.

사실 브라우저에서 일어나는 모든 반복 업무가 대상이에요. 저는 요즘 제 개인 블로그의 링크들이 깨진 게 없는지 검사하는 작업을 이 친구한테 맡기고 있는데, 아주 만족스럽더라고요. 👍


⚠️ 솔직한 리뷰: 장점만 있지는 않더라고요

기술에 열광하는 저이지만, 냉정하게 짚고 넘어갈 한계점도 분명히 있습니다. 여러분이 삽질하지 않도록 제가 먼저 겪은 아쉬운 점들을 공유할게요.

  1. 💸 토큰 비용은 각오하셔야 해요: 브라우저 화면을 LLM에게 계속 전달하다 보니, 토큰 사용량이 꽤 많습니다. 특히 비전(Vision) 기능을 켜면 비용이 훅 올라가죠. 단순한 데이터 추출이라면 기존 크롤러가 훨씬 경제적입니다.

  2. ⏳ 조금 느립니다: 사람처럼 생각하고 페이지를 분석하는 과정이 필요하다 보니, 쌩쌩 돌아가는 스크립트보다는 느려요. 실시간 응답이 중요한 서비스보다는 백그라운드 작업(Batch)에 적합합니다.

  3. 🤖 캡차(CAPTCHA)는 여전히 숙제: 아무리 똑똑한 AI라도 ‘로봇이 아닙니다’ 체크박스나 복잡한 퍼즐 앞에서는 주춤할 때가 있습니다. (물론 유료 우회 서비스를 붙일 수는 있지만요!)


✨ 마치며: ‘How’의 시대에서 ‘What’의 시대로

Browser-use를 써보면서 느낀 가장 큰 변화는 제 사고방식이었어요. 예전에는 “어떤 라이브러리를 써서 이 HTML 구조를 파싱할까?”를 고민했다면, 이제는 “어떤 작업을 자동화해서 내 시간을 더 가치 있게 쓸까?”를 고민하게 되더라고요.

이 기술은 아직 완벽하지 않습니다. 하지만 우리가 코드를 한 줄 한 줄 짜서 기계를 가르치던 시대에서, 기계가 우리의 의도를 이해하고 도구를 다루는 시대로 넘어가는 아주 중요한 변곡점에 있다는 사실은 분명해 보입니다.

동료 개발자 여러분, 이번 주말에는 반복적인 노가다 스크립트 대신 Browser-use로 나만의 작은 ‘웹 대리인’을 하나 만들어보시는 건 어떨까요? 처음 그 친구가 스스로 클릭에 성공하는 장면을 볼 때의 짜릿함, 여러분도 꼭 느껴보셨으면 좋겠습니다!

다음에 더 흥미로운 기술 이야기로 찾아올게요. 궁금한 점은 언제든 댓글로 남겨주세요! 😊

References

  • https://github.com/browser-use/browser-use
  • https://browser-use.com/
  • https://playwright.dev/
This post is licensed under CC BY 4.0 by the author.