feat: add browser launch --args, --user-agent, --proxy-bypass configuration support. (#35)

* feat: add browser launch args, user-agent, and proxy configuration support

* fix: User Agent env need added

* fix: command pass error

---------

Co-authored-by: Chris Tate <chris@ctate.dev>
This commit is contained in:
Oanakiaja
2026-01-22 00:19:37 -06:00
committed by GitHub
co-authored by Chris Tate
parent e892bceadf
commit 083a946aac
12 changed files with 1075 additions and 198 deletions
+188 -92
View File
@@ -239,7 +239,8 @@ pub fn print_response(resp: &Response, json_mode: bool) {
pub fn print_command_help(command: &str) -> bool {
let help = match command {
// === Navigation ===
"open" | "goto" | "navigate" => r##"
"open" | "goto" | "navigate" => {
r##"
agent-browser open - Navigate to a URL
Usage: agent-browser open <url>
@@ -261,8 +262,10 @@ Examples:
agent-browser open localhost:3000
agent-browser open api.example.com --headers '{"Authorization": "Bearer token"}'
# ^ Headers only sent to api.example.com, not other domains
"##,
"back" => r##"
"##
}
"back" => {
r##"
agent-browser back - Navigate back in history
Usage: agent-browser back
@@ -276,8 +279,10 @@ Global Options:
Examples:
agent-browser back
"##,
"forward" => r##"
"##
}
"forward" => {
r##"
agent-browser forward - Navigate forward in history
Usage: agent-browser forward
@@ -291,8 +296,10 @@ Global Options:
Examples:
agent-browser forward
"##,
"reload" => r##"
"##
}
"reload" => {
r##"
agent-browser reload - Reload the current page
Usage: agent-browser reload
@@ -306,10 +313,12 @@ Global Options:
Examples:
agent-browser reload
"##,
"##
}
// === Core Actions ===
"click" => r##"
"click" => {
r##"
agent-browser click - Click an element
Usage: agent-browser click <selector>
@@ -326,8 +335,10 @@ Examples:
agent-browser click @e1
agent-browser click "button.primary"
agent-browser click "//button[@type='submit']"
"##,
"dblclick" => r##"
"##
}
"dblclick" => {
r##"
agent-browser dblclick - Double-click an element
Usage: agent-browser dblclick <selector>
@@ -342,8 +353,10 @@ Global Options:
Examples:
agent-browser dblclick "#editable-text"
agent-browser dblclick @e5
"##,
"fill" => r##"
"##
}
"fill" => {
r##"
agent-browser fill - Clear and fill an input field
Usage: agent-browser fill <selector> <text>
@@ -359,8 +372,10 @@ Examples:
agent-browser fill "#email" "user@example.com"
agent-browser fill @e3 "Hello World"
agent-browser fill "input[name='search']" "query"
"##,
"type" => r##"
"##
}
"type" => {
r##"
agent-browser type - Type text into an element
Usage: agent-browser type <selector> <text>
@@ -375,8 +390,10 @@ Global Options:
Examples:
agent-browser type "#search" "hello"
agent-browser type @e2 "additional text"
"##,
"hover" => r##"
"##
}
"hover" => {
r##"
agent-browser hover - Hover over an element
Usage: agent-browser hover <selector>
@@ -391,8 +408,10 @@ Global Options:
Examples:
agent-browser hover "#dropdown-trigger"
agent-browser hover @e4
"##,
"focus" => r##"
"##
}
"focus" => {
r##"
agent-browser focus - Focus an element
Usage: agent-browser focus <selector>
@@ -406,8 +425,10 @@ Global Options:
Examples:
agent-browser focus "#input-field"
agent-browser focus @e2
"##,
"check" => r##"
"##
}
"check" => {
r##"
agent-browser check - Check a checkbox
Usage: agent-browser check <selector>
@@ -421,8 +442,10 @@ Global Options:
Examples:
agent-browser check "#terms-checkbox"
agent-browser check @e7
"##,
"uncheck" => r##"
"##
}
"uncheck" => {
r##"
agent-browser uncheck - Uncheck a checkbox
Usage: agent-browser uncheck <selector>
@@ -436,8 +459,10 @@ Global Options:
Examples:
agent-browser uncheck "#newsletter-opt-in"
agent-browser uncheck @e8
"##,
"select" => r##"
"##
}
"select" => {
r##"
agent-browser select - Select a dropdown option
Usage: agent-browser select <selector> <value...>
@@ -452,8 +477,10 @@ Examples:
agent-browser select "#country" "US"
agent-browser select @e5 "option2"
agent-browser select "#menu" "opt1" "opt2" "opt3"
"##,
"drag" => r##"
"##
}
"drag" => {
r##"
agent-browser drag - Drag and drop
Usage: agent-browser drag <source> <target>
@@ -467,8 +494,10 @@ Global Options:
Examples:
agent-browser drag "#draggable" "#drop-zone"
agent-browser drag @e1 @e2
"##,
"upload" => r##"
"##
}
"upload" => {
r##"
agent-browser upload - Upload files
Usage: agent-browser upload <selector> <files...>
@@ -482,10 +511,12 @@ Global Options:
Examples:
agent-browser upload "#file-input" ./document.pdf
agent-browser upload @e3 ./image1.png ./image2.png
"##,
"##
}
// === Keyboard ===
"press" | "key" => r##"
"press" | "key" => {
r##"
agent-browser press - Press a key or key combination
Usage: agent-browser press <key>
@@ -513,8 +544,10 @@ Examples:
agent-browser press Control+a
agent-browser press Control+Shift+s
agent-browser press Escape
"##,
"keydown" => r##"
"##
}
"keydown" => {
r##"
agent-browser keydown - Press a key down (without release)
Usage: agent-browser keydown <key>
@@ -529,8 +562,10 @@ Global Options:
Examples:
agent-browser keydown Shift
agent-browser keydown Control
"##,
"keyup" => r##"
"##
}
"keyup" => {
r##"
agent-browser keyup - Release a key
Usage: agent-browser keyup <key>
@@ -544,10 +579,12 @@ Global Options:
Examples:
agent-browser keyup Shift
agent-browser keyup Control
"##,
"##
}
// === Scroll ===
"scroll" => r##"
"scroll" => {
r##"
agent-browser scroll - Scroll the page
Usage: agent-browser scroll [direction] [amount]
@@ -567,8 +604,10 @@ Examples:
agent-browser scroll down 500
agent-browser scroll up 200
agent-browser scroll left 100
"##,
"scrollintoview" | "scrollinto" => r##"
"##
}
"scrollintoview" | "scrollinto" => {
r##"
agent-browser scrollintoview - Scroll element into view
Usage: agent-browser scrollintoview <selector>
@@ -584,10 +623,12 @@ Global Options:
Examples:
agent-browser scrollintoview "#footer"
agent-browser scrollintoview @e15
"##,
"##
}
// === Wait ===
"wait" => r##"
"wait" => {
r##"
agent-browser wait - Wait for condition
Usage: agent-browser wait <selector|ms|option>
@@ -613,10 +654,12 @@ Examples:
agent-browser wait --load networkidle
agent-browser wait --fn "window.appReady === true"
agent-browser wait --text "Welcome back"
"##,
"##
}
// === Screenshot/PDF ===
"screenshot" => r##"
"screenshot" => {
r##"
agent-browser screenshot - Take a screenshot
Usage: agent-browser screenshot [path]
@@ -635,8 +678,10 @@ Examples:
agent-browser screenshot
agent-browser screenshot ./screenshot.png
agent-browser screenshot --full ./full-page.png
"##,
"pdf" => r##"
"##
}
"pdf" => {
r##"
agent-browser pdf - Save page as PDF
Usage: agent-browser pdf <path>
@@ -650,10 +695,12 @@ Global Options:
Examples:
agent-browser pdf ./page.pdf
agent-browser pdf ~/Documents/report.pdf
"##,
"##
}
// === Snapshot ===
"snapshot" => r##"
"snapshot" => {
r##"
agent-browser snapshot - Get accessibility tree snapshot
Usage: agent-browser snapshot [options]
@@ -677,10 +724,12 @@ Examples:
agent-browser snapshot -i
agent-browser snapshot --compact --depth 5
agent-browser snapshot -s "#main-content"
"##,
"##
}
// === Eval ===
"eval" => r##"
"eval" => {
r##"
agent-browser eval - Execute JavaScript
Usage: agent-browser eval <script>
@@ -695,10 +744,12 @@ Examples:
agent-browser eval "document.title"
agent-browser eval "window.location.href"
agent-browser eval "document.querySelectorAll('a').length"
"##,
"##
}
// === Close ===
"close" | "quit" | "exit" => r##"
"close" | "quit" | "exit" => {
r##"
agent-browser close - Close the browser
Usage: agent-browser close
@@ -714,10 +765,12 @@ Global Options:
Examples:
agent-browser close
agent-browser close --session mysession
"##,
"##
}
// === Get ===
"get" => r##"
"get" => {
r##"
agent-browser get - Retrieve information from elements or page
Usage: agent-browser get <subcommand> [args]
@@ -750,10 +803,12 @@ Examples:
agent-browser get box "#header"
agent-browser get styles "button"
agent-browser get styles @e1
"##,
"##
}
// === Is ===
"is" => r##"
"is" => {
r##"
agent-browser is - Check element state
Usage: agent-browser is <subcommand> <selector>
@@ -773,10 +828,12 @@ Examples:
agent-browser is visible "#modal"
agent-browser is enabled "#submit-btn"
agent-browser is checked "#agree-checkbox"
"##,
"##
}
// === Find ===
"find" => r##"
"find" => {
r##"
agent-browser find - Find and interact with elements by locator
Usage: agent-browser find <locator> <value> [action] [text]
@@ -814,10 +871,12 @@ Examples:
agent-browser find testid "login-form" click
agent-browser find first "li.item" click
agent-browser find nth 2 ".card" hover
"##,
"##
}
// === Mouse ===
"mouse" => r##"
"mouse" => {
r##"
agent-browser mouse - Low-level mouse operations
Usage: agent-browser mouse <subcommand> [args]
@@ -841,10 +900,12 @@ Examples:
agent-browser mouse down right
agent-browser mouse wheel 100
agent-browser mouse wheel -50 0
"##,
"##
}
// === Set ===
"set" => r##"
"set" => {
r##"
agent-browser set - Configure browser settings
Usage: agent-browser set <setting> [args]
@@ -874,10 +935,12 @@ Examples:
agent-browser set credentials admin secret123
agent-browser set media dark
agent-browser set media light reduced-motion
"##,
"##
}
// === Network ===
"network" => r##"
"network" => {
r##"
agent-browser network - Network interception and monitoring
Usage: agent-browser network <subcommand> [args]
@@ -904,10 +967,12 @@ Examples:
agent-browser network requests
agent-browser network requests --filter "api"
agent-browser network requests --clear
"##,
"##
}
// === Storage ===
"storage" => r##"
"storage" => {
r##"
agent-browser storage - Manage web storage
Usage: agent-browser storage <type> [operation] [key] [value]
@@ -933,10 +998,12 @@ Examples:
agent-browser storage local set theme "dark"
agent-browser storage local clear
agent-browser storage session get userId
"##,
"##
}
// === Cookies ===
"cookies" => r##"
"cookies" => {
r##"
agent-browser cookies - Manage browser cookies
Usage: agent-browser cookies [operation] [args]
@@ -957,10 +1024,12 @@ Examples:
agent-browser cookies get
agent-browser cookies set session_id "abc123"
agent-browser cookies clear
"##,
"##
}
// === Tabs ===
"tab" => r##"
"tab" => {
r##"
agent-browser tab - Manage browser tabs
Usage: agent-browser tab [operation] [args]
@@ -985,10 +1054,12 @@ Examples:
agent-browser tab 2
agent-browser tab close
agent-browser tab close 1
"##,
"##
}
// === Window ===
"window" => r##"
"window" => {
r##"
agent-browser window - Manage browser windows
Usage: agent-browser window <operation>
@@ -1004,10 +1075,12 @@ Global Options:
Examples:
agent-browser window new
"##,
"##
}
// === Frame ===
"frame" => r##"
"frame" => {
r##"
agent-browser frame - Switch frame context
Usage: agent-browser frame <selector|main>
@@ -1026,10 +1099,12 @@ Examples:
agent-browser frame "#embed-iframe"
agent-browser frame "iframe[name='content']"
agent-browser frame main
"##,
"##
}
// === Dialog ===
"dialog" => r##"
"dialog" => {
r##"
agent-browser dialog - Handle browser dialogs
Usage: agent-browser dialog <response> [text]
@@ -1048,10 +1123,12 @@ Examples:
agent-browser dialog accept
agent-browser dialog accept "my input"
agent-browser dialog dismiss
"##,
"##
}
// === Trace ===
"trace" => r##"
"trace" => {
r##"
agent-browser trace - Record execution trace
Usage: agent-browser trace <operation> [path]
@@ -1071,7 +1148,8 @@ Examples:
agent-browser trace start ./my-trace
agent-browser trace stop
agent-browser trace stop ./debug-trace.zip
"##,
"##
}
// === Record (video) ===
"record" => r##"
@@ -1110,7 +1188,8 @@ Examples:
"##,
// === Console/Errors ===
"console" => r##"
"console" => {
r##"
agent-browser console - View console logs
Usage: agent-browser console [--clear]
@@ -1127,8 +1206,10 @@ Global Options:
Examples:
agent-browser console
agent-browser console --clear
"##,
"errors" => r##"
"##
}
"errors" => {
r##"
agent-browser errors - View page errors
Usage: agent-browser errors [--clear]
@@ -1145,10 +1226,12 @@ Global Options:
Examples:
agent-browser errors
agent-browser errors --clear
"##,
"##
}
// === Highlight ===
"highlight" => r##"
"highlight" => {
r##"
agent-browser highlight - Highlight an element
Usage: agent-browser highlight <selector>
@@ -1162,10 +1245,12 @@ Global Options:
Examples:
agent-browser highlight "#target-element"
agent-browser highlight @e5
"##,
"##
}
// === State ===
"state" => r##"
"state" => {
r##"
agent-browser state - Save/load browser state
Usage: agent-browser state <operation> <path>
@@ -1183,10 +1268,12 @@ Global Options:
Examples:
agent-browser state save ./auth-state.json
agent-browser state load ./auth-state.json
"##,
"##
}
// === Session ===
"session" => r##"
"session" => {
r##"
agent-browser session - Manage sessions
Usage: agent-browser session [operation]
@@ -1209,10 +1296,12 @@ Examples:
agent-browser session
agent-browser session list
agent-browser --session test open example.com
"##,
"##
}
// === Install ===
"install" => r##"
"install" => {
r##"
agent-browser install - Install browser binaries
Usage: agent-browser install [--with-deps]
@@ -1225,7 +1314,8 @@ Options:
Examples:
agent-browser install
agent-browser install --with-deps
"##,
"##
}
_ => return false,
};
@@ -1324,8 +1414,14 @@ Options:
--session <name> Isolated session (or AGENT_BROWSER_SESSION env)
--headers <json> HTTP headers scoped to URL's origin (for auth)
--executable-path <path> Custom browser executable (or AGENT_BROWSER_EXECUTABLE_PATH)
--extension <path> Load browser extensions (repeatable).
--proxy <url> Proxy server (http://[user:pass@]host:port)
--extension <path> Load browser extensions (repeatable)
--args <args> Browser launch args, comma or newline separated (or AGENT_BROWSER_ARGS)
e.g., --args "--no-sandbox,--disable-blink-features=AutomationControlled"
--user-agent <ua> Custom User-Agent (or AGENT_BROWSER_USER_AGENT)
--proxy <server> Proxy server URL (or AGENT_BROWSER_PROXY)
e.g., --proxy "http://user:pass@127.0.0.1:7890"
--proxy-bypass <hosts> Bypass proxy for these hosts (or AGENT_BROWSER_PROXY_BYPASS)
e.g., --proxy-bypass "localhost,*.internal.com"
--json JSON output
--full, -f Full page screenshot
--headed Show browser window (not headless)