←News detail

Simon WillisonUpdated Oct 27 13:04

Research: An evaluation of webframe as a scraping tool and sandbox

AI summary

An evaluation of webframe shows that it is a fast, lightweight browser JavaScript runner suitable for web scraping, with performance comparable to shot-scraper, but it has notable issues such as CSP failures, a 0×0 viewport, loading hangs, missing HTTP metadata, and limited browser control. webframe was developed by Jeff Lindsay, is written in Go, and uses the glaze library to invoke the system browser without bundling its own browser engine. Simon Willison had Claude Opus 5.5 actually run it and build a prototype before completing this evaluation.

Body

#smallhead

26th October 2026

Research webframe: evaluated as a scraper and a sandbox — An evaluation of webframe found it to be a fast, lightweight browser-JavaScript runner suitable for scraping, with performance comparable to shot-scraper, but with important rough edges including CSP failures, a 0×0 viewport, hanging loads, missing HTTP metadata, and limited browser controls.

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.

It's written in Go on top of the 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.

It reminds me of my own shot-scraper javascript tool, albeit in a much smaller package that doesn't depend on Playwright.

I had Claude Opus 5.5 put it through its paces and prepare a research report for me. Here's the prompt I used:

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)

Posted 26th October 2026 at 4:15 pm

Recent articles

Battle Drones - a vibe coded RTS with audio-based multiplayer - 20th October 2026

Hello Python 3.15, goodbye 3.10, and now I can use 3.11 - 12th October 2026

A new feature for my blog, built using my voice - 9th October 2026

Claude Haiku 5.5 - 7th October 2026

This is a beat by Simon Willison, posted on 26th October 2026.

Source

Simon Willison