| name | human-browser-use |
| description | Human Browser Use |
human-browser-use Skill
Human-like browser automation extension for browser-use.
When to use
Use human-browser-use instead of raw browser-use when:
- The target site has anti-bot detection (Cloudflare, reCAPTCHA, DataDome, etc.)
- You need mouse movements to look like a real person
- You need typing to have natural rhythm and occasional typos
- You need to hide automation fingerprints (
navigator.webdriver, WebGL, etc.)
Installation
pip install human-browser-use
CLI (preferred for quick tasks)
hbu open https://example.com
hbu state
hbu click 5
hbu type "Hello"
hbu screenshot page.png
hbu close
All browser-use CLI commands work with hbu. The browser stays alive between commands.
Python API
import asyncio
from human_browser_use import HumanBrowserSession, HumanBrowserProfile, HumanBehaviorConfig
async def main():
session = HumanBrowserSession(
human_config=HumanBehaviorConfig(),
browser_profile=HumanBrowserProfile(headless=False),
)
await session.start()
await session.navigate_to("https://example.com")
page = await session.get_current_page()
els = await page.get_elements_by_css_selector("input")
await els[0].click()
await els[0].fill("hello world")
await page.press("Enter")
await session.reset()
asyncio.run(main())
With browser-use Agent
from browser_use import Agent
from langchain_openai import ChatOpenAI
from human_browser_use import HumanBrowserSession, HumanBrowserProfile, HumanBehaviorConfig
agent = Agent(
task="Your task here",
llm=ChatOpenAI(model="gpt-4o"),
browser_session=HumanBrowserSession(
human_config=HumanBehaviorConfig(),
browser_profile=HumanBrowserProfile(headless=False),
),
)
await agent.run()
API reference
| Class | Replaces | Purpose |
|---|
HumanBrowserSession | BrowserSession | Session with human behavior + stealth JS |
HumanBrowserProfile | BrowserProfile | Chrome flags to hide automation fingerprints |
HumanBehaviorConfig | — | Master config (mouse, keyboard, scroll, timing) |
HumanBrowserSession
session = HumanBrowserSession(human_config=config, browser_profile=profile)
await session.start()
await session.navigate_to(url)
page = await session.get_current_page()
pages = await session.get_pages()
await session.reset()
HumanPage (returned by session)
elements = await page.get_elements_by_css_selector("selector")
element = await page.get_element("selector")
await page.press("Enter")
await page.goto("https://...")
HumanElement (returned by page)
await element.click()
await element.fill("text")
await element.fill("text", clear=False)
Configuration cheatsheet
config = HumanBehaviorConfig()
config.mouse.overshoot_probability = 0.15
config.mouse.click_offset_sigma = 3.0
config.mouse.press_duration_range = (0.05, 0.15)
config.keyboard.delay_mu = 4.17
config.keyboard.typo_probability = 0.02
config.keyboard.common_bigram_factor = 0.7
config.scroll.impulse_delta_range = (80, 200)
config.scroll.inertia_decay = 0.85
config.timing.pre_action_delay_range = (0.1, 0.3)
config.enable_stealth = True
config.enable_human_mouse = True
config.enable_human_keyboard = True
config.enable_human_scroll = True
Important rules
- Always import from
human_browser_use, not browser_use
- Use
HumanBrowserSession + HumanBrowserProfile (not BrowserSession / BrowserProfile)
- Get elements via
page.get_elements_by_css_selector() — they return HumanElement with human-like behavior
- Do NOT use base
Element class directly — it bypasses human behavior
- If using a local proxy, set
os.environ['no_proxy'] = 'localhost,127.0.0.1' before creating the session