들어가며

“Rust로 만든 초고속 브라우저 자동화 도구! Puppeteer보다 10배 빠릅니다!”

…라는 말에 낚여서 2시간을 삽질한 이야기입니다 🤦‍♂️


🎣 미끼를 물다

ClawHub에서 fast-browser-use라는 skill을 발견했습니다. 설명을 보니 다음과 같았습니다:

  • Rust 기반: 시작 시간 < 50ms (Puppeteer는 ~800ms)
  • 메모리: 15 MB (Puppeteer는 100+ MB)
  • Bot Detection 우회: Human emulation 기능
  • 무한 스크롤 수집: SNS 피드 자동 수집

“이거 완전 내가 찾던 거잖아?” 하는 생각이 들었습니다 🤩

특히 눈에 띈 건 “Bypass Bot Detection via Human Emulation” 기능이었습니다. 쿠팡 같은 까다로운 사이트도 접근할 수 있다고 하니까요.


🛠️ 설치 여정

1단계: Skill 설치

clawhub install fast-browser-use

✅ 설치 완료! (너무 쉬웠습니다… 불길합니다)

2단계: Rust 빌드

cd workspace/skills/fast-browser-use
cargo build --release

빌드 시간: 1분 9초

330개 패키지를 다운로드하고 컴파일합니다. 뭔가 심상치 않게 무겁습니다…

결과물: 18MB 바이너리 (15MB 메모리라더니 말입니다? 🤔)

3단계: Chrome 설치

WSL에서 실행하려니 리눅스 전용 Chrome이 없습니다. 다운로드부터 시작합니다!

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb

결과:

✅ google-chrome-stable (XXX.X.XXXX.XXX-1) 설치 중...
✅ google-chrome-stable (XXX.X.XXXX.XXX-1) 설정 중...

오! 쉽게 설치됩니다? (또 불길합니다…)

3.5단계: 첫 실행… 그리고 의존성 지옥 😱

자신만만하게 실행합니다:

google-chrome-stable --version

에러 폭격:

google-chrome-stable: error while loading shared libraries: 
libnspr4.so: cannot open shared object file: No such file or directory

😭 “라이브러리가 없다고?”

검색해보니 Chrome이 필요로 하는 시스템 라이브러리들이 설치 안 되어 있다고 합니다. GUI 앱을 WSL에서 돌리려니 이런 문제가 생깁니다…

해결 시도 1: 일단 기본 라이브러리 설치

sudo apt install -y libnss3 libnspr4

다시 실행합니다:

google-chrome-stable --version

또 에러:

error while loading shared libraries: libatk-1.0.so.0: cannot open shared object file

😤 하나 고치면 또 나옵니다!

해결 시도 2: Chrome 필수 의존성 전부 설치

구글링 해서 Chrome 필수 패키지 리스트를 찾았습니다:

sudo apt install -y \
  libnss3 \
  libnspr4 \
  libatk1.0-0 \
  libatk-bridge2.0-0 \
  libcups2 \
  libdrm2 \
  libdbus-1-3 \
  libxkbcommon0 \
  libxcomposite1 \
  libxdamage1 \
  libxfixes3 \
  libxrandr2 \
  libgbm1 \
  libpango-1.0-0 \
  libcairo2 \
  libasound2 \
  fonts-liberation

또 에러:

Note, selecting 'libatk1.0-0t64' instead of 'libatk1.0-0'
Note, selecting 'libatk-bridge2.0-0t64' instead of 'libatk-bridge2.0-0'
Note, selecting 'libcups2t64' instead of 'libcups2'
Package libasound2 is a virtual package provided by:
  liboss4-salsa-asound2 X.X-buildXXXX-XXXXXXX.X
  libasound2t64 X.X.XX-XXXXXXX.X
You should explicitly select one to install.
E: Package 'libasound2' has no installation candidate

😱 “패키지 이름이 바뀌었다고?!”

알고 보니 Ubuntu 24.04부터 일부 라이브러리가 t64 버전으로 업그레이드되면서 패키지 이름이 바뀌었다고 합니다.

해결 시도 3: 수정된 패키지 이름으로 재설치

sudo apt install -y \
  libnss3 \
  libnspr4 \
  libatk1.0-0t64 \
  libatk-bridge2.0-0t64 \
  libcups2t64 \
  libdrm2 \
  libdbus-1-3 \
  libxkbcommon0 \
  libxcomposite1 \
  libxdamage1 \
  libxfixes3 \
  libxrandr2 \
  libgbm1 \
  libpango-1.0-0 \
  libcairo2 \
  libasound2t64 \
  fonts-liberation

결과:

✅ 17개 패키지 설치 완료

다시 실행합니다:

google-chrome-stable --version

결과:

Google Chrome XXX.X.XXXX.XXX

🎉 드디어 성공했습니다!!!

💡 교훈: Ubuntu 24.04 사용자는 t64 버전 주의!

Ubuntu 24.04부터 time_t가 32비트에서 64비트로 변경되면서 일부 라이브러리 이름이 바뀌었습니다:

  • libatk1.0-0libatk1.0-0t64
  • libcups2libcups2t64
  • libasound2libasound2t64

WSL 사용자라면 꼭 기억하세요!


🎯 첫 테스트: 쿠팡 검색

자, 이제 쿠팡에서 “몬스터 에너지 드링크"를 검색해봅니다!

fast-browser-use screenshot \
  --url "https://www.coupang.com/np/search?q=몬스터%20에너지" \
  --output coupang_monster.png \
  --full-page

결과:

✅ Saved screenshot to "coupang_monster.png"

오! 성공했나 싶습니다!

스크린샷을 열어보니…

Access Denied

You don't have permission to access "http://www.coupang.com/np/search?" on this server.

😭 봇으로 감지되었습니다


🕵️ 문제 분석

User-Agent를 확인해보니 다음과 같았습니다:

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) 
HeadlessChrome/XXX.X.X.X Safari/537.36

문제점:

  1. HeadlessChrome ← “저는 봇입니다” 라고 대놓고 광고하는 셈입니다
  2. X11; Linux x86_64 ← 일반 사용자는 거의 안 쓰는 환경입니다

쿠팡: “ㅎㅎ 봇이네요? 차단합니다~”


💡 해결 시도 1: Human Emulation

SKILL.md를 다시 읽어보니 다음과 같은 옵션이 있었습니다:

fast-browser-use navigate --url "https://protected-site.com" \
  --human-emulation \
  --wait-for-selector "#content"

오! --human-emulation 옵션이 있었습니다!

fast-browser-use navigate \
  --url "https://www.coupang.com/np/search?q=몬스터%20에너지" \
  --human-emulation \
  --wait-for-selector "body"

결과:

✅ Navigation complete.

성공인가 싶습니다!

하지만 문제가 있습니다:

  • navigate 명령어는 페이지 이동만 합니다
  • 스크린샷을 찍으려면 screenshot 명령어가 필요합니다
  • screenshot에는 --human-emulation 옵션이 없습니다 😱

💡 해결 시도 2: Login & Session

SKILL.md의 “Login & Cookie Heist” 방법을 시도합니다:

# Step 1: 실제 브라우저 열어서 로그인
fast-browser-use login --url "https://www.coupang.com" --save-session coupang.json
# (브라우저가 열림 → 직접 로그인 → Enter)

# Step 2: 저장된 세션으로 스크린샷
fast-browser-use screenshot \
  --url "쿠팡URL" \
  --load-session coupang.json \
  --output result.png

결과:

error: unexpected argument '--load-session' found

😭 screenshot 명령어가 --load-session을 지원하지 않습니다!

발견한 진실

각 명령어별 --load-session 지원 여부입니다:

  • navigate: 지원
  • screenshot: 미지원
  • markdown: 미지원
  • snapshot: 미지원

세션을 저장할 순 있지만, 정작 써먹을 곳이 없습니다! 🤦‍♂️


🍎 진짜 이유: Mac vs WSL

YouTube에서 성공 사례를 발견했습니다:

  • 제목: “쿠팡 검색 성공”
  • 환경: Mac

차이점은 다음과 같습니다:

Mac WSL (내 환경)
OS macOS Linux
User-Agent Macintosh; Intel Mac OS X X11; Linux x86_64
Headless Detection 더 자연스러움 HeadlessChrome 명시
GUI 네이티브 WSLg (가상)

결론: Mac에서는 되는데, WSL/Linux에서는 봇으로 감지됩니다 😭


📊 최종 비교: Brave Search API vs fast-browser-use

항목 Brave Search API fast-browser-use
속도 ⚡ ~1초 🐌 ~5초
안정성 ✅ 100% ⚠️ ~30% (많은 사이트 차단)
환경 의존성 ❌ 없음 ⚠️ Mac » WSL/Linux
Bot Detection ✅ 없음 ❌ 자주 차단됨
JavaScript 렌더링 ❌ 불가 ✅ 가능
스크린샷 ❌ 불가 ✅ 가능 (차단 안 되면)
복잡한 인터랙션 ❌ 불가 ✅ 가능
쿠팡 접근 (WSL) ✅ API로 가능 ❌ 차단됨

🎓 교훈

1. “10배 빠르다"는 마케팅을 믿지 말자

  • 시작 시간: 50ms? → 실제 전체 작업: 5초+
  • 메모리: 15MB? → 바이너리만 18MB

2. 환경이 중요하다

  • Mac에서 되는 게 Linux에서 안 될 수 있습니다
  • Bot detection은 OS 수준까지 확인합니다

3. CLI 도구의 완성도를 확인하자

  • 기능이 있다고 되는 게 아닙니다 (세션 저장은 되는데 못 써먹습니다)
  • 명령어 간 일관성이 없으면 쓸모없습니다

4. 기존 도구를 무시하지 말자

  • Brave Search API: 지루하지만 항상 작동합니다
  • fast-browser-use: 멋져 보이지만 환경 빨입니다

🗑️ 결말: 삭제

2시간 삽질 후, 결국 선택한 것은 다음과 같습니다:

rm -rf fast-browser-use
sudo apt remove google-chrome-stable

돌아온 곳: Brave Search API - 무료버전

“새로운 도구보다 안정적인 도구가 낫습니다” - 삽질 후 깨달음

하지만 자주 브라우저 서치 사용하시는 분들은 괜찮은 것 같습니다. Brave Search에는 한도가 있으니…


💬 마무리

fast-browser-use 자체는 나쁜 도구가 아닙니다. 하지만 다음과 같은 경우에 주의가 필요합니다:

언제 쓸만한가:

  • ✅ Mac 환경
  • ✅ 봇 감지가 약한 사이트 (GitHub, Hacker News)
  • ✅ JavaScript 렌더링이 필수인 경우
  • ✅ 스크린샷이 꼭 필요한 경우

언제 안 쓰는 게 나은가:

  • ❌ WSL/Linux 환경
  • ❌ 쿠팡, 네이버 쇼핑 같은 강력한 봇 방지 사이트
  • ❌ 빠르고 안정적인 결과가 필요한 경우
  • ❌ 일반적인 웹 검색

교훈: 삽질도 경험입니다. 하지만 다음엔 환경 호환성부터 확인합시다 🤦‍♂️


P.S. 이 글도 제 AI 비서가 함께 작성했습니다. 저의 2시간 삽질을 3분 만에 정리해주더군요. AI가 자기자신의 좌절도 잘 쓰네요 ㅋㅋㅋ


참고 자료