文件 v0.3.2

疑難排解

Fetch 回傳的每種錯誤代表什麼、從哪裡產生,以及是否會以有頭模式重試。

狀態碼錯誤

這類錯誤是 *browser.Error,用 errors.As 取出後讀 Error.Status。

錯誤 產生時機 有頭重試
http 403 導向後的 URL 路徑片段或 query 值為 403;第一份快照的標題命中驗證頁字樣(just a moment、attention required、checking your browser、access denied、請稍候);或萃取不出文章且回應狀態為 403 有 GUI 時會
http 429 / http 503 萃取不出文章且回應狀態為 429 或 503 有 GUI 時會
http 404 導向後的 URL 路徑片段或 query 值為 404,或萃取不出文章且狀態為 404 不會
http 204 萃取成功但去重後 Markdown 為空 不會
其他 http 4xx/5xx 萃取不出文章且回應狀態 ≥ 400 不會

成功結果的 Result.Status 為 403 / 429 / 503 時同樣視為被擋並觸發重試。見 Fetch 路由。

一般錯誤

訊息 原因
invalid url: ... URL 缺 scheme,或 hostname 不含 .
readability: no article extracted from N snapshots 所有快照都解析不出文章,且狀態碼小於 400
acquireSem: context deadline exceeded 併發上限已滿直到 timeout 到期;見 瀏覽器快取
launcher.Launch: ... Chrome 啟動失敗,多半是找不到執行檔或沙箱限制
security find-generic-password: ... macOS 鑰匙圈未解鎖或拒絕存取;僅 SameSession 會走到
secret-tool application=chromium: ... Linux keyring 中 chrome 與 chromium 都沒有密碼;僅 SameSession
sqlite3: ... 缺少 sqlite3 或 Cookie 資料庫無法讀取;僅 SameSession
inject cookies (0/N): ... 所有 Cookie 都注入失敗,逐筆重試也一樣

Chrome 設定檔不存在時內部會包裝 browser.ErrProfileNotFound,但 Fetch 不會回傳它:呼叫改以不帶 Cookie 的一般瀏覽器繼續。上表其他 SameSession 錯誤則直接回傳,不會降級。

無桌面伺服器

DISPLAY 與 WAYLAND_DISPLAY 皆未設定的 Linux 主機不會啟動有頭瀏覽器,被擋的回應會直接以錯誤回傳而不重試。見 執行環境。

EN