Skip to content
AI News HubLIVE
Original source2 min read

webframe: evaluated as a scraper and a sandbox

Summary

Simon Willison had Claude Opus 5.5 test and evaluate webframe, a small Go project by Jeff Lindsay that runs a web page like a program by executing its JavaScript in a hidden system-backed web view. The verdict: it is a fast, lightweight runner suitable for scraping, with performance on par with shot-scraper, but it has notable rough edges including CSP failures, a 0x0 viewport, hanging loads, missing HTTP metadata, and limited browser controls.

webframe: evaluated as a scraper and a sandbox
Report an error

The correction channel is not available yet. You can copy the article reference below for later.

Correction instructions
Read article

Research: webframe: evaluated as a scraper and a sandbox

Simon Willison’s Weblog

Newsletter

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)

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.

browsers 108

go 54

javascript 769

jeff-lindsay 4

shot-scraper 72

Monthly briefing

Sponsor me for $10/month and get a curated email digest of the month's most important LLM developments.

Pay me to send you less!

Sponsor & subscribe

Disclosures

Colophon

©

2002

2003

2004

2005

2006

2007

2008

2009

2010

2011

2012

2013

2014

2015

2016

2017

2018

2019

2020

2021

2022

2023

2024

2025

2026

Key points and analysis

Article intelligence

InvestorsAdvanced

Key points

  • webframe is written in Go on top of the glaze library, which uses the system browser (WKWebView, WebKitGTK, WebView2) instead of bundling an engine.
  • It pipes console.log() to stdout and exceptions to stderr, treating a URL or file like an executable program.
  • The evaluation found it fast and scraping-capable, comparable to shot-scraper, but hampered by CSP failures, a 0x0 viewport, hanging loads, missing HTTP metadata, and limited browser control.
  • Simon compares it to his own shot-scraper javascript tool, noting webframe's much smaller footprint and lack of a Playwright dependency.

Highlights and analysis are generated automatically and may contain errors. Check the original source.