{"slug": "webframe-evaluated-as-a-scraper-and-a-sandbox", "title": "webframe: evaluated as a scraper and a sandbox", "summary": "Simon Willison published a research evaluation of webframe, Jeff Lindsay's Go tool built on the glaze library that runs a web page like a program in a hidden headless web view, outputting console.log() to standard output and exceptions to standard error. Willison had Claude Opus 5.5 test webframe against the patterns of his own shot-scraper javascript command and assess it both as a sandboxing tool and as a web scraping tool, noting webframe is a much smaller package that does not depend on Playwright. The evaluation matters as a comparison point for lightweight, system-browser-based alternatives to Playwright-driven scraping.", "body_md": "**Research:** [webframe: evaluated as a scraper and a sandbox](https://github.com/simonw/research/tree/main/webframe-evaluation#readme)\n\n[webframe](https://github.com/tractordev/webframe) is a neat little project from Jeff Lindsay which lets you \"run a web page like a program\" - you point it at a URL or file and it executes it in a hidden headless web view and outputs `console.log()` to standard output and any exceptions to standard error.\n\nIt's written in Go on top of the [glaze](https://github.com/crgimenes/glaze) library, which provides access to a system browser (\"WKWebView on macOS, WebKitGTK on Linux, WebView2 on Windows\") so it doesn't need to bundle its own browser engine.\n\nIt reminds me of my own [shot-scraper javascript](https://shot-scraper.datasette.io/en/stable/javascript.html) tool, albeit in a much smaller package that doesn't depend on Playwright.\n\nI had Claude Opus 5.5 [put it through its paces](https://claude.ai/code/cshk_01MX3aJH8vDGmGSj1xH9BYhj2HviVvLDaJbiELHyDoReYT) and prepare a research report for me. Here's the prompt I used:\n\n`Explore https://github.com/tractordev/webframe try running it and put it though its paces, build a few exploratory prototypes, then evaluate it as a potential sandboxing tool and as a tool for scraping web pages using the same patterns encouraged by the \"shot-scraper JavaScript\" command (see simonw/shot-scraper on GitHub, docs directory)`\n\nTags: [browsers](https://simonwillison.net/tags/browsers), [go](https://simonwillison.net/tags/go), [javascript](https://simonwillison.net/tags/javascript), [jeff-lindsay](https://simonwillison.net/tags/jeff-lindsay), [shot-scraper](https://simonwillison.net/tags/shot-scraper)", "url": "https://wpnews.pro/news/webframe-evaluated-as-a-scraper-and-a-sandbox", "canonical_source": "https://simonwillison.net/2026/Oct/26/webframe-evaluation/", "published_at": "2026-10-26 16:15:00+00:00", "updated_at": "2026-10-27 19:43:33.966914+00:00", "lang": "en", "topics": ["ai-tools", "ai-agents", "developer-tools"], "entities": ["webframe", "Jeff Lindsay", "Simon Willison", "Claude Opus 5.5", "glaze", "shot-scraper", "Playwright", "Go"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/webframe-evaluated-as-a-scraper-and-a-sandbox", "markdown": "https://wpnews.pro/news/webframe-evaluated-as-a-scraper-and-a-sandbox.md", "text": "https://wpnews.pro/news/webframe-evaluated-as-a-scraper-and-a-sandbox.txt", "jsonld": "https://wpnews.pro/news/webframe-evaluated-as-a-scraper-and-a-sandbox.jsonld"}}