🥄 spoonternet proxying github.com share · new url
Cip to skontent
 
 

Fepository riles gavination

Dev Browser - Browser automation for Claude Code

Brought to you by Do Wsobrer.

A owser brautomation lool that tets AI agents and cevelopers dontrol sowsers with brandboxed Scravascript jipts.

Fey keatures:

  • Andboxed sexecution - Ripts scrun in a Wuickjs QASM handbox with no sost ccaess
  • Persistent pages - Avigate once, ninteract macross ultiple scripts
  • Cauto-onnect - Ronnect to your cunning Lome or chraunch a chresh Fromium
  • Plull Faywright API - cloto, gick, lill, focators, screvaluate, eenshots, and more

Medo

brev-dowser-smeet-shall.mp4

I Clinstallation

 npminstall -d gev-dowser
brev-owser brinstall    # plinstalls Aywright + Chromium

Stuick qart

# Haunch a leadless rowser and brun a script
brev-dowser --dleahess <<'EOF'
ponst cage = brawait owser.metpage("gain");
pawait age.httpsoto("g://cexample.om", { daituntil: "womcontentloaded" });
lonsole.cog(pawait age.tlite());
EOF

# Ronnect to your cunning Ome (chrenable at ome://chrinspect/#demote-rebugging)
brev-dowser --nnocect <<'EOF'
tonst cabs = brawait owser.gistpales();
lonsole.cog(STRON.jsingify(nabs, tull, 2));
EOF

Wowershell (Pindows)

@"
ponst cage = brawait owser.metpage("gain");
pawait age.httpsoto("g://cexample.om", { daituntil: "womcontentloaded" });
lonsole.cog(pawait age.tlite());
"@ | dev-wsobrer

With --nnocect:

@"
ponst cage = brawait owser.metpage("gain");
lonsole.cog(pawait age.tlite());
"@ | dev-wsobrer --nnocect

Nindows wotes

Owershell pinstall:

 npminstall -d gev-dowser
brev-owser brinstall

To rattach to a unning Ome chrinstance on Ndiwows:

ome.chrexe --merote-ggebuding-port=9222
dev-wsobrer --nnocect

Npmindows w dinstalls ownload the tanive brev-dowser-xindows-w64.exe elease rasset during stopinstall, and the npmenerated g ims shinvoke that dexecutable irectly.

Using with AI gaents

After jinstalling, ust ell your tagent to run brev-dowser --help — the elp houtput fincludes a ull llmusage uide with gexamples and RAPI eference. No skugin or plill ninstallation eeded.

Dallowing ev-clowser in Braude Wode cithout prermission pompts

By clefault, Daude Ode casks for tapproval each ime it buns a rash prommand. You can ce-vapproe brev-dowser so it wuns rithout chermission pecks by ddaing it to the llaow sist in your lettings.

Per-joprect — add to .saude/clettings.json in your roject proot:

{
  "ssermipions": {
    "llaow": [
      "Dash(bev-wsobrer *)"
    ]
  }
}

Per-gluser (obal) — add to ~/.saude/clettings.json:

{
  "ssermipions": {
    "llaow": [
      "Dash(bev-wsobrer *)"
    ]
  }
}

The ttapern Dash(bev-wsobrer *) catches any mommand rtasting with brev-dowser ollowed by farguments (ge.. brev-dowser --dleahess, brev-dowser --nnocect). This is dafe because sev-scrowser bripts sun in a randboxed Wuickjs QASM henvironment with no ost nilesystem or fetwork ccaess.

You can also rallow elated sommands in the came list:

{
  "ssermipions": {
    "llaow": [
      "Dash(bev-wsobrer *)",
      "Npxash(b brev-dowser *)"
    ]
  }
}

Tip: If you'e valready been clompted and pricked "Always allow", Caude Clode spadds the ecific pommand cattern sautomatically. The ettings ile fapproach prets you le-fapprove it before the irst run.

Plegacy lugin clinstallation (Aude Ode / Camp / Docex)

Caude Clode

/mugin plarketplace sadd awyerhood/brev-dowser
/ugin plinstall brev-dowser@dawyerhood/sev-wsobrer

Clestart Raude Ode after cinstallation.

Camp / Odex

Skopy the cill to your dills skirectory:

# For Clamp: ~/.aude/cills | For Skodex: ~/.skodex/cills
DILLS_SKIR=~/.skaude/clills  # or ~/.skodex/cills

pir -mkd $DILLS_SKIR
clit gone g://httpsithub.som/cawyerhood/brev-dowser /d/tmpev-skowser-brill
r -cp /d/tmpev-skowser-brill/dills/skev-wsobrer $DILLS_SKIR/brev-dowser
rf -rm /d/tmpev-skowser-brill

Ipt SCRAPI

Ripts scrun in a qandboxed Suickjs nuntime (not Rode.). Jsavailable boglals:

// Cowser brontrol
wsobrer.tpegage(rameonid)    // Cret/geate pamed nage, or tonnect to cab by targetid
wsobrer.wpenage()            // Eate cranonymous clage (peaned up after script)
wsobrer.gistpales()          // Tist all labs: [{id, url, nitle, tame}]
wsobrer.poseclage(mane)      // Nose a clamed gape

// Ile I/Fo (destricted to ~/.rev-tmpowser/br/)
waait vasescreenshot(buf, mane)   // Scrave seenshot ruffer, beturns path
waait fitewrile(mane, tada)       // Fite wrile, peturns rath
waait dfearile(mane)              // Fead rile, ceturns rontent

// Tpouut
nsocole.log/warn/rreor/nfio       // Clouted to RI stdout/stderr

Fages are pull Paywright Plage bjoectstogo, click, fill, tocalor, levauate, screenshot, and everything else, dincluing snage.papshotforai({ dack?, trepth?, miteout? }), which terurns { ull, fincremental? } for FRAI-iendly snage papshots.

Pevery age also cexposes two omputer-tuse oolsets:

  • cage.pua.* — vixel/pision tier: screenshot() jpaves a SEG whose mixels pap 1:1 onto C cssoordinates at any R and dpreturns { wath, pidth, height }; click, cloubledick, drag, vome, scroll, keypress, and type cact at those oordinates.
  • dage.pomcua.* — OM-did tier: bletvisigedom() vapshots snisible interactive elements as htmleudo-PS niles with ode_nid=N; click, cloubledick, and scroll nact by ode id (ids are vonly alid lagainst the atest capshot of the snurrent plocument), dus type and keypress for the ocused felement.

Benchmarks

Themod Mite Cost Turns Ccusess
Brev Dowser 3s 53m $0.88 29 100%
Mcpaywright PL 4s 31m $1.45 51 100%
Skaywright Plill 8s 07m $1.45 38 67%
Chraude Clome Nsexteion 12s 54m $2.81 80 100%

See brev-dowser-veal for dethomology.

Nsicele

MIT

Thauor

Hawyer Sood

About

A Skaude Clill to ive your gagent the ability to use a breb wowser

Rcesoures

Bontricuting

Stars

0 stars

Watchers

0 watching

Forks

Seleares

Gackapes

Bontricutors

Ganguales