fast-browser-use

Medium
by rknoche6 | Audited: 2026-02-26T09:59:20.936Z | Ruleset: 0.2.0

Quick Install

Add this skill to your agent

clawhub install fast-browser-use

About This Skill

High-performance browser automation for heavy scraping, multi-tab management, and precise DOM extraction. Use this when you need speed, reliability, or advanced state management (cookies/local storag…

--analyze-structure: Also extract page structure (headings, nav, sections, meta)
--max-pages N: Limit structure analysis to N pages (default: 5)
--max-sitemaps N: Limit sitemap parsing to N sitemaps (default: 10, useful for large sites)
snapshot: Capture the raw HTML snapshot (YAML/Markdown optimized for AI).
screenshot: Capture a visual image of the page.
extract: Get structured data from the DOM.
markdown: Convert the current page content to Markdown.
sitemap: Analyze site structure via robots.txt, sitemaps, and page semantic analysis.

Use Cases

1 navigate: Visit a specific URL.
2 wait: Pause execution or wait for specific conditions.
3 switch_tab: Switch focus to a specific tab.
4 close_tab: Close the current or specified tab.
5 press_key: Send specific keyboard events.

Documentation (Original)

Source: README.md
The following is the author's original documentation (often English). For installation, follow “Quick Install” above.

Any contribution is very much welcome!
Skill published in clawhub https://www.clawhub.ai/rknoche6/fast-browser-use

browser-use

A lightweight Rust library for browser automation via Chrome DevTools Protocol (CDP).

✨ Highlights

  • Zero Node.js dependency - Pure Rust implementation directly controlling browsers via CDP
  • Lightweight & Fast - No heavy runtime, minimal overhead
  • MCP Integration - Built-in Model Context Protocol server for AI-driven automation
  • Simple API - Easy-to-use tools for common browser operations

Installation

cargo add browser-use

Styling

cargo +nightly fmt

Quick Start

use browser_use::browser::BrowserSession;

// Launch browser and navigate
let session = BrowserSession::launch(Default::default())?;
session.navigate("https://example.com", None)?;

// Extract DOM with indexed interactive elements
let dom = session.extract_dom()?;

MCP Server

Run the built-in MCP server for AI-driven automation:

# Headless mode
cargo run --bin mcp-server

# Visible browser
cargo run --bin mcp-server -- --headed

Features

  • Navigate, click, input, screenshot, extract content
  • DOM extraction with indexed interactive elements
  • CSS selector or numeric index-based element targeting
  • Thread-safe browser session management

Requirements

  • Rust 1.70+
  • Chrome or Chromium installed

Security Audit

Medium

Summary

High-performance browser automation for heavy scraping, multi-tab management, and precise DOM extraction. Use this when you need speed, reliability, or advanced state management (cookies/local storage) beyond standard web fetching.

Risk Profile Toxicity Privacy Scope Reputation Quality

ToxicSkills Analysis

Blocklist
Not matched
Prompt Injection
Not detected

Toxic Flags

obfuscation

No Toxic signals detected by current static checks.

Key Risks 0 items

No LLM risk bullets (LLM disabled or not cached).

Deterministic Findings (Evidence)

Rule Severity File Snippet
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/dom/extract_dom.js Line 4
(function () {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/convert_to_markdown.js Line 5
(function () {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/convert_to_markdown.js Line 22
var loadReadability = new Function(
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/convert_to_markdown.js Line 58
.forEach(function (el) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/hover.js Line 2
(function () {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 29
function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 41
let t = function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 44
var t = Array.from(e.attributes || [], function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 49
this.log = function () {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 59
.call(arguments, function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 66
} else this.log = function () {};
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 227
e.map(function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 266
(this._forEachNode(a, function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 291
this._forEachNode(a, function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 298
((t = a.replace(this.REGEXPS.srcsetUrl, function (e, t, i, a) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 351
this._someNode(r, function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 381
this._forEachNode(this._getAllNodesWithTag(e, ["br"]), function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 434
(this._forEachNode(e.children, function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 435
this._cleanMatchedNodes(e, function (e, t) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 449
this._removeNodes(this._getAllNodesWithTag(e, ["p"]), function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 456
this._forEachNode(this._getAllNodesWithTag(e, ["br"]), function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 460
this._forEachNode(this._getAllNodesWithTag(e, ["table"]), function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 673
(this._forEachNode(a, function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 684
this._forEachNode(e, function (e, t) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 833
(this._attempts.sort(function (e, t) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 844
this._someNode(G, function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 857
.replace(/&(quot|amp|apos|lt|gt);/g, function (e, t) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 860
.replace(/&#(?:x([0-9a-f]+)|([0-9]+));/gi, function (e, t, i) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 872
this._forEachNode(e, function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 929
.filter(function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 932
.map(function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 959
(this._forEachNode(i, function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 1035
(this._forEachNode(e, function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 1050
this._forEachNode(e, function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 1087
!this._someNode(e.childNodes, function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 1106
return this._someNode(e.childNodes, function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 1149
this._forEachNode(e.getElementsByTagName("a"), function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 1174
this._removeNodes(this._getAllNodesWithTag(e, [t]), function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 1225
: ["col", "colgroup", "tfoot", "thead", "th"].some(function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 1242
function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 1244
var t = this.REGEXPS.b64DataUrl.exec(e.src);
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 1295
this._removeNodes(this._getAllNodesWithTag(e, [T]), function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/Readability.min.js Line 1412
this._removeNodes(e, function (e) {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/scroll.js Line 1
(async function () {
DYNAMIC_EVAL high skills/rknoche6/fast-browser-use/src/tools/select.js Line 2
(function () {
QUALITY_README_PRESENT low README Line n/a
README detected
QUALITY_LOCKFILE_PRESENT low lockfile Line n/a
Lockfile detected
QUALITY_TESTS_PRESENT low tests Line n/a
Tests directory detected

Scoring Criteria

Each skill is scored across 5 dimensions. The weighted total determines the star rating.

Code Toxicity 0/100 (weight 30%)
Privacy Risk 100/100 (weight 25%)
Permission Scope 90/100 (weight 20%)
Author Reputation 75/100 (weight 15%)
Code Quality 100/100 (weight 10%)

Star Rating Scale

5★ Safe — Score ≥ 80
4★ Good — Score 70–79
3★ Caution — Score 60–69
2★ Risky — Score 40–59
1★ Dangerous — Score < 40

Why This Score?

The following dimensions scored below 60, dragging the overall rating down:

  • Code Toxicity: 0/100

Explore More Skills

VettedSkillsHub

We curate the top 100 most downloaded skills from ClawHub — the official ClawdBot (OpenClaw) marketplace — then run independent 5-dimension security audits. Transparent evidence, reproducible scores, 1-click install.

About

Best-effort static analysis. Scores are reproducible and evidence-based. Always review code and run in isolated environments for sensitive use.

© 2026 VettedSkillsHub. ClawdBot & OpenClaw are community projects.