Skip to content

feat(url): read JavaScript pages and refuse challenges honestly - #67

Merged
kochetkov-ma merged 3 commits into
mainfrom
feat/url-reading-hardening
Oct 19, 2026
Merged

kochetkov-ma merged 3 commits into
mainfrom
feat/url-reading-hardening

Conversation

@kochetkov-ma

Copy link
Copy Markdown
Owner

--url no longer reports success on JavaScript shells and captcha pages. It refuses them with a plain reason, the HTTP status and the challenge vendor. --render-js auto runs JavaScript only when the static page is a shell. JS capture falls back to the fetched HTML on heap, DOM-guard and timer-quota limits, and the soft window now also bounds script and module loading. Legacy and mislabelled charsets decode with the source recorded in the receipt. Link records become standard Markdown, and --no-links drops destinations. The receipt stays brewdoc.receipt/2 with additive fields. Version 0.7.0. Closes #66.

Live bench, 54 URLs (static / auto / always): 39 / 40 / 38 successes and 0 false successes (0.6.0: 6). Median latency 0.65 / 0.75 / 2.74 s. JS maximum 13.7 s, down from 28-33 s. hn.algolia recovers in auto mode. acloserlisten and therecoup convert (TLS ALPN http/1.1). The heap and DOM fallbacks recover the code.claude.com changelog and yakutia-daily.

Validation: full suite on macOS and in a linux/arm64 container (all tests, including Linux-only native suites), self-check, npm launcher test, and wheel/sdist installs on CPython 3.12-3.14 all pass locally.

Still open: the macOS Python trust store lacks GlobalSign Root R46 (3 bench pages), and pages that need more than the bounded engine (crates.io, dvnovosti) refuse at javascript_required.

@kochetkov-ma
kochetkov-ma merged commit 6c846e7 into main Oct 19, 2026
11 checks passed
@kochetkov-ma
kochetkov-ma deleted the feat/url-reading-hardening branch October 19, 2026 19:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make --url reading work on JavaScript pages and refuse pages honestly

1 participant