Documentation v0.3.2

Troubleshooting

What each error returned by Fetch means, where it comes from, and whether a headed retry will happen.

Status errors

These are *browser.Error values; read the code with errors.As and Error.Status.

Error Raised when Headed retry
http 403 The post-redirect URL has a 403 path segment or query value; the first snapshot's title matches a challenge page (just a moment, attention required, checking your browser, access denied, 請稍候); or no article was extracted and the response status is 403 Yes, when a GUI is available
http 429 / http 503 No article was extracted and the response status is 429 or 503 Yes, when a GUI is available
http 404 The post-redirect URL has a 404 path segment or query value, or no article was extracted and the status is 404 No
http 204 Extraction succeeded but the Markdown is empty after deduplication No
other http 4xx/5xx No article was extracted and the response status is 400 or higher No

A 403 / 429 / 503 that arrives as Result.Status on a successful result also counts as blocked and triggers the same retry. See Fetch Routing.

Plain errors

Message Cause
invalid url: ... The URL has no scheme, or the hostname contains no .
readability: no article extracted from N snapshots No snapshot parsed into an article and the status was below 400
acquireSem: context deadline exceeded The concurrency cap was full until timeout expired; see Browser Cache
launcher.Launch: ... Chrome failed to start, usually a missing binary or a sandbox restriction
security find-generic-password: ... macOS keychain locked or access denied; only reached with SameSession
secret-tool application=chromium: ... Neither chrome nor chromium has a secret in the Linux keyring; only with SameSession
sqlite3: ... sqlite3 missing or the cookie database unreadable; only with SameSession
inject cookies (0/N): ... Every cookie failed to inject, even one by one

A missing Chrome profile wraps browser.ErrProfileNotFound internally, but Fetch does not return it: the call continues on a regular browser without cookies. The other SameSession errors above are returned as-is and do not fall back.

Headless servers

A Linux host with neither DISPLAY nor WAYLAND_DISPLAY never launches a headed browser, so blocked responses come back as errors instead of being retried. See Environment.

中文