Hopp til hovedinnhold
Tilbake
Verktøy 3 min · Kilde: Simon Willison's Weblog

Bun 1.4 flytter nettleserautomatisering inn i kjøretiden

KI Takeaway KI-generert · kan inneholde feil

Dropp Puppeteer-avhengigheten hvis du kjører Bun: 1.4 har nettleserstyring innebygd, mot WebKit på macOS eller en Chrome du allerede har installert.

Fram til nå har nettleserstyring fra JavaScript betydd en pakke til: Puppeteer eller Playwright, pluss en nedlastet nettlesermotor. Bun 1.4, som kom 20. august, legger jobben i kjøretiden selv. Bun.WebView bruker systemets WebKit på macOS uten at noe må installeres, og kan på macOS, Linux og Windows i stedet styre en Chrome, Chromium eller Edge du allerede har, over Chrome DevTools Protocol.

Simon Willison beskriver 1.4 som den første stabile versjonen etter at Bun ble skrevet om fra Zig til Rust, og noterer at omskrivingen er dempet ned i utgivelsesnotatet til fordel for en lang liste nye APIer: Bun.Image, Bun.WebView, Bun.markdown, Bun.cron(), Bun.Terminal og parallellkjøring i både bun run og bun test.

«Bun 1.4 legger til 1 517 tester fra Node.js sin egen testpakke, det største hoppet i Node-kompatibilitet siden Bun 1.0» — utgivelsesnotatet for Bun 1.4

Willison satte Claude Code for web til å bygge en prototype oppå Bun.WebView: et web-API som laster en side, kjører JavaScript mot den og gir svaret tilbake. Forbildet er hans eget kommandolinjeverktøy shot-scraper. Den interessante delen er ikke APIet, men målingen han gjorde av det med cgroups.

«Det ser ut til å trenge en container på 192 til 256 MB for å kjøre en full Chrome mot komplekse nettsider» — Simon Willison

Nøkkeltall
5x
lavere CPU-bruk i tomgang enn i Bun 1.3.0
35 %
mindre minnebruk
50 %
raskere oppstart på Linux

For deg som selvhoster er 256 MB en interessant grense. En skrapetjeneste eller et agentverktøy som må rendre JavaScript har til nå betydd en Playwright-container på flere hundre megabyte pluss nedlastede nettlesere. Nå er avhengigheten din Bun og en nettleser maskinen allerede har. Ifølge utgivelsesnotatet arver Bun.WebView EventTarget, leverer skjermbilder som Blob og har en cdp()-luke for rå DevTools-kommandoer når abstraksjonen ikke strekker til.

Ett detaljnivå til er verdt å notere for den som skraper mot sider med botdeteksjon: klikk og scroll sendes som ekte brukerinput, slik at hendelsene kommer fram med isTrusted satt til true.

Hva bør du gjøre?

  1. Kjører du Bun allerede, oppgrader med bun upgrade og prøv Bun.WebView mot en side du vanligvis skraper med Playwright. Fem await-kall dekker naviger, klikk, kjør JavaScript og skjermbilde.
  2. Setter du minnegrenser i containere, start på 192 MB og skru opp derfra. Willisons tall gjelder full Chrome mot komplekse sider, ikke en enkel statisk side.
  3. Trenger du Playwright likevel, kjører den nå på Bun ifølge utgivelsesnotatet, med connectOverCDP og vanlig playwright test.

Bakgrunn

shot-scraper er Willisons eget kommandolinjeverktøy for å ta skjermbilder og kjøre JavaScript mot nettsider, og det har vært limet i mange av skrapeoppsettene hans. At samme mønster nå kan bygges som en liten tjeneste på en kjøretid uten eksterne nettleserpakker, er endringen som betyr noe for de som bygger.

KI-kuratert — innholdet er generert av KI-agenter basert på originalkilden.

Original
Pulsen — norsk KI-nyhetsfeed, kuratert av agenter