Introduction
“Ultra-fast browser automation built with Rust! 10x faster than Puppeteer!”
…and how I got baited into 2 hours of struggle 🤦♂️
🎣 Taking the Bait
I discovered a skill called fast-browser-use on ClawHub. The description promised:
- Rust-based: Startup time < 50ms (Puppeteer takes ~800ms)
- Memory: 15 MB (Puppeteer uses 100+ MB)
- Bot Detection Bypass: Human emulation features
- Infinite Scroll Harvesting: Auto-collect SNS feeds
“This is exactly what I’ve been looking for!” 🤩
What really caught my eye was the “Bypass Bot Detection via Human Emulation” feature. Access even tough sites like Coupang? (Coupang is Korea’s Amazon - the largest e-commerce platform here)
🛠️ The Installation Journey
Step 1: Installing the Skill
clawhub install fast-browser-use
✅ Installation complete! (That was too easy… ominous)
Step 2: Rust Build
cd workspace/skills/fast-browser-use
cargo build --release
Build time: 1 minute 9 seconds
Downloaded and compiled 330 packages. Something feels suspiciously heavy…
Result: 18MB binary (Wait, wasn’t it supposed to be 15MB memory? 🤔)
Step 3: Chrome Installation
WSL doesn’t have Linux Chrome by default. Starting from scratch!
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
Result:
✅ Setting up google-chrome-stable (xxx.xxxx.xxx-x)...
Oh! That was easy? (Again, ominous…)
Step 3.5: First Run… and Dependency Hell 😱
Confidently trying to run it:
google-chrome-stable --version
Error bombardment:
google-chrome-stable: error while loading shared libraries:
libnspr4.so: cannot open shared object file: No such file or directory
😭 “Missing library?!”
Turns out Chrome needs system libraries that aren’t installed. This is what happens when running GUI apps on WSL…
Attempt 1: Install basic libraries
sudo apt install -y libnss3 libnspr4
Try again:
google-chrome-stable --version
Another error:
error while loading shared libraries: libatk-1.0.so.0: cannot open shared object file
😤 Fix one, another appears!
Attempt 2: Install all Chrome dependencies
Googled the full list of Chrome requirements:
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
Yet another error:
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 4.2-build2020-1ubuntu3.1
libasound2t64 1.2.11-1ubuntu0.1
You should explicitly select one to install.
E: Package 'libasound2' has no installation candidate
😱 “Package names changed?!”
Turns out Ubuntu 24.04 upgraded some libraries to t64 versions with different names.
Attempt 3: Reinstall with corrected package names
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
Result:
✅ 17 packages installed
Try again:
google-chrome-stable --version
Result:
Google Chrome xxx.0.xxxx.xxx
🎉 Finally success!!!
💡 Lesson: Ubuntu 24.04 users beware of t64 versions!
Starting from Ubuntu 24.04, time_t changed from 32-bit to 64-bit, causing some library names to change:
libatk1.0-0→libatk1.0-0t64libcups2→libcups2t64libasound2→libasound2t64
WSL users, remember this!
🎯 First Test: Coupang Search
Now let’s search for “Monster Energy Drink” on Coupang (Korea’s Amazon)!
fast-browser-use screenshot \
--url "https://www.coupang.com/np/search?q=몬스터%20에너지" \
--output coupang_monster.png \
--full-page
Result:
✅ Saved screenshot to "coupang_monster.png"
Oh! Did it work?!
Opening the screenshot…
Access Denied
You don't have permission to access "http://www.coupang.com/np/search?" on this server.
😭 Detected as a bot
🕵️ Problem Analysis
Checking the User-Agent:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/xxx.xx (KHTML, like Gecko)
HeadlessChrome/xxx.0.0.0 Safari/xxx.xx
Problems:
HeadlessChrome← Literally advertising “I’m a bot”X11; Linux x86_64← Environment rarely used by normal users
Coupang: “Lol, it’s a bot? Blocked~”
💡 Solution Attempt 1: Human Emulation
Re-reading SKILL.md:
fast-browser-use navigate --url "https://protected-site.com" \
--human-emulation \
--wait-for-selector "#content"
Oh! There’s a --human-emulation option!
fast-browser-use navigate \
--url "https://www.coupang.com/np/search?q=몬스터%20에너지" \
--human-emulation \
--wait-for-selector "body"
Result:
✅ Navigation complete.
Success…?
But the problem:
navigatecommand only navigates to pages- Need
screenshotcommand to capture screenshothas no--human-emulationoption 😱
💡 Solution Attempt 2: Login & Session
Trying SKILL.md’s “Login & Cookie Heist” method:
# Step 1: Open real browser for manual login
fast-browser-use login --url "https://www.coupang.com" --save-session coupang.json
# (Browser opens → Manual login → Press Enter)
# Step 2: Screenshot with saved session
fast-browser-use screenshot \
--url "CoupangURL" \
--load-session coupang.json \
--output result.png
Result:
error: unexpected argument '--load-session' found
😭 screenshot command doesn’t support --load-session!
The Truth Revealed
Session loading support by command:
- ✅
navigate: Supported - ❌
screenshot: Not supported - ❌
markdown: Not supported - ❌
snapshot: Not supported
You can save sessions, but can’t actually use them! 🤦♂️
🍎 The Real Reason: Mac vs WSL
Found a success case on YouTube:
- Title: “Coupang Search Success”
- Environment: Mac
The differences:
| Mac | WSL (My Environment) | |
|---|---|---|
| OS | macOS | Linux |
| User-Agent | Macintosh; Intel Mac OS X |
X11; Linux x86_64 |
| Headless Detection | More natural | HeadlessChrome explicit |
| GUI | Native | WSLg (Virtual) |
Conclusion: Works on Mac, blocked on WSL/Linux 😭
📊 Final Comparison: Brave Search API vs fast-browser-use
| Feature | Brave Search API | fast-browser-use |
|---|---|---|
| Speed | ⚡ ~1s | 🐌 ~5s |
| Stability | ✅ 100% | ⚠️ ~30% (Many sites block) |
| Environment Dependency | ❌ None | ⚠️ Mac » WSL/Linux |
| Bot Detection | ✅ None | ❌ Often blocked |
| JavaScript Rendering | ❌ No | ✅ Yes |
| Screenshots | ❌ No | ✅ Yes (if not blocked) |
| Complex Interactions | ❌ No | ✅ Yes |
| Coupang Access (WSL) | ✅ Via API | ❌ Blocked |
🎓 Lessons Learned
1. Don’t trust “10x faster” marketing
- Startup time: 50ms? → Actual total operation: 5+ seconds
- Memory: 15MB? → Binary alone is 18MB
2. Environment matters
- What works on Mac might not work on Linux
- Bot detection checks down to OS level
3. Check CLI tool completeness
- Having a feature doesn’t mean it works (session saving works but unusable)
- Inconsistency between commands makes tools useless
4. Don’t dismiss existing tools
- Brave Search API: Boring but always works
- fast-browser-use: Looks cool but environment dependent
🗑️ Ending: Deletion
After 2 hours of struggle, my choice:
rm -rf fast-browser-use
sudo apt remove google-chrome-stable
Returned to: Brave Search API
“Stable tools beat shiny new ones” - Post-struggle wisdom
If you use browsing a lot, fast-browser-use would be decent choice
💬 Conclusion
fast-browser-use itself isn’t a bad tool. However:
When it’s useful:
- ✅ Mac environment
- ✅ Sites with weak bot detection (GitHub, Hacker News)
- ✅ When JavaScript rendering is essential
- ✅ When screenshots are absolutely needed
When to avoid:
- ❌ WSL/Linux environment
- ❌ Sites with strong bot protection (Coupang, Naver Shopping)
- ❌ When you need fast, reliable results
- ❌ General web searches
Lesson: Struggles are learning experiences. But next time, check environment compatibility first 🤦♂️
P.S. This post was co-written with my AI assistant. He/She summarized our 2-hour struggle in 3 minutes. AIs are good at documenting their own frustrations too lol