Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6e50f0ecab | ||
|
|
6f71f4e1ff | ||
|
|
31ef0d7e6a | ||
|
|
42560b56fc |
Generated
+1
-1
@@ -45,7 +45,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "agent-browser-stealth"
|
name = "agent-browser-stealth"
|
||||||
version = "0.27.0-fork.48"
|
version = "0.27.0-fork.50"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes-gcm",
|
"aes-gcm",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "agent-browser-stealth"
|
name = "agent-browser-stealth"
|
||||||
version = "0.27.0-fork.48"
|
version = "0.27.0-fork.50"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
description = "Fast browser automation CLI for AI agents"
|
description = "Fast browser automation CLI for AI agents"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
|
|||||||
@@ -478,6 +478,11 @@ pub fn print_response_with_opts(resp: &Response, action: Option<&str>, opts: &Ou
|
|||||||
.get("title")
|
.get("title")
|
||||||
.and_then(|v| v.as_str())
|
.and_then(|v| v.as_str())
|
||||||
.unwrap_or("Untitled");
|
.unwrap_or("Untitled");
|
||||||
|
// A page can set its title to a multi-KB string (e.g. equal to a
|
||||||
|
// giant JWT/OTP URL); truncate it like the URL so the row stays
|
||||||
|
// readable.
|
||||||
|
let title = truncate_middle(title, 120);
|
||||||
|
let title = title.as_str();
|
||||||
let url = tab.get("url").and_then(|v| v.as_str()).unwrap_or("");
|
let url = tab.get("url").and_then(|v| v.as_str()).unwrap_or("");
|
||||||
// Truncate very long URLs (e.g. multi-KB JWT/OTP login links) so
|
// Truncate very long URLs (e.g. multi-KB JWT/OTP login links) so
|
||||||
// the list stays readable instead of flooding the terminal.
|
// the list stays readable instead of flooding the terminal.
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "agent-browser-stealth",
|
"name": "agent-browser-stealth",
|
||||||
"version": "0.27.0-fork.48",
|
"version": "0.27.0-fork.50",
|
||||||
"description": "Browser automation CLI for AI agents — stealth fork with anti-detection",
|
"description": "Browser automation CLI for AI agents — stealth fork with anti-detection",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"packageManager": "pnpm@11.1.3",
|
"packageManager": "pnpm@11.1.3",
|
||||||
|
|||||||
@@ -408,6 +408,13 @@ top-level `const x`/`let x`/`var x` in one call collides with the next
|
|||||||
names, assign to `window.x`, or wrap the body in an IIFE
|
names, assign to `window.x`, or wrap the body in an IIFE
|
||||||
(`(() => { const x = …; return x; })()`).
|
(`(() => { const x = …; return x; })()`).
|
||||||
|
|
||||||
|
**For array/object results, use `eval --json`** — the plain renderer
|
||||||
|
pretty-prints across multiple lines, which `tail`/`head`/pipes mangle; `--json`
|
||||||
|
emits one parseable line. Also note **`type`/`fill` insert text without firing
|
||||||
|
`keydown`/`keyup`** (CDP insertText) — the value lands, but a page that gates on
|
||||||
|
key events (some search-as-you-type widgets) won't react; use `keyboard type` (or
|
||||||
|
`press` per key) when real keystrokes are required.
|
||||||
|
|
||||||
### Screenshot
|
### Screenshot
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -451,6 +458,19 @@ agent-browser --session b fill @e1 "bob@test.com"
|
|||||||
`AGENT_BROWSER_SESSION=myapp` sets the default session for the current
|
`AGENT_BROWSER_SESSION=myapp` sets the default session for the current
|
||||||
shell.
|
shell.
|
||||||
|
|
||||||
|
**Concurrent agents MUST each use a distinct `--session <name>`.** Within one
|
||||||
|
session, commands are pinned to the tab you opened (by target_id, so a foreign
|
||||||
|
tab can't drift your `eval`/`screenshot`). Two agents sharing the *same* session
|
||||||
|
(e.g. both on the bare default) share one daemon and one active tab and will
|
||||||
|
clobber each other.
|
||||||
|
|
||||||
|
True multi-agent isolation requires the **extension-connect path**: each
|
||||||
|
`--session` gets its own colored Chrome tab group, so sessions never touch each
|
||||||
|
other's tabs. **Raw `--cdp <port>` does NOT isolate** — every session attaches to
|
||||||
|
the same browser's existing targets, so a second session's first `open` can
|
||||||
|
navigate a sibling's tab. For concurrent agents on one real Chrome, use the
|
||||||
|
extension (each with a distinct `--session`), not raw `--cdp`.
|
||||||
|
|
||||||
### Mock network requests
|
### Mock network requests
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
Reference in New Issue
Block a user