들어가며
“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-0→libatk1.0-0t64libcups2→libcups2t64libasound2→libasound2t64
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
문제점:
HeadlessChrome← “저는 봇입니다” 라고 대놓고 광고하는 셈입니다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가 자기자신의 좌절도 잘 쓰네요 ㅋㅋㅋ