headless 环境下所有浏览器命令因首页 domcontentloaded 等待超时失败
まだ誰も着手していません。
評価
調査の方向性
client.py の XhsClient.start() とその _goto 呼び出しから始め、続いて headless な xhs whoami または xhs feed の実行で失敗を再現します。既存の timeout と wait_until の動作を確認し、選択した変更によって、ブラウザーを起動するコマンドがホームページへのナビゲーションをタイムアウトさせずに完了できることを検証します。
索引モデルが issue の本文から書いたものです。
説明
Bug: headless 环境下所有浏览器命令因首页 domcontentloaded 等待超时失败
Describe the bug
在 headless(无头)运行环境中,xhs whoami / xhs feed / xhs search 等所有需要启动浏览器的命令都会在 client.start() 阶段失败:
❌ Failed to get profile: Page.goto: Timeout 20000ms exceeded.
Call log:
- navigating to "https://www.xiaohongshu.com/", waiting until "domcontentloaded"
根因在 client.py 的 start():
self._goto(
"https://www.xiaohongshu.com",
timeout=20000,
wait_min=1,
wait_max=2,
context="establishing browser session",
)
默认 wait_until="domcontentloaded" 且超时固定 20s。在小红书首页 + headless 冷启动场景下,domcontentloaded 经常需要 10~20s 甚至更久,加上 camoufox 冷启动开销,很容易撞上 20s 上限。
To Reproduce
- 无头环境安装 xhs-cli 0.1.4 并完成登录
- 运行
xhs whoami或xhs feed - 观察
Page.goto: Timeout 20000ms exceeded
Expected behavior
- 首页初始化应该用更宽松的超时(例如 40s+),或者
- 允许通过环境变量 / CLI 参数 / 配置文件覆盖
timeout与wait_until
实测数据(有头/无头对照)
| 方式 | wait_until | 耗时 |
|---|---|---|
camoufox 手动导航 https://www.xiaohongshu.com/ |
commit |
~1.2s |
camoufox 手动导航 https://www.xiaohongshu.com/ |
domcontentloaded |
~9.1s |
站点本身连通性正常(HTTP 302,connect <0.1s),问题在等待策略而非网络。
Suggested fix
- 最简:
start()中把超时从 20000 提高到 40000; - 更好:
XhsClient.__init__(timeout=...)支持传入或读取环境变量(如XHS_CLI_NAV_TIMEOUT/XHS_CLI_WAIT_UNTIL),默认值保持 20000/domcontentloaded以兼容现有行为。
Environment
- xhs-cli: 0.1.4
- OS: Debian 13 (Linux)
- Python: 3.11
- Browser: camoufox headless
- 主要言語
- Python
- スター
- 658
- フォーク
- 68
- PR マージ指標
- 30日以内にマージされた PR はありません
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
jackwener/xhs-cli のほかの issue
-
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
-
评论回复可以带图片吗? オープン
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
-
搜索页内容不渲染 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
jackwener/xhs-cli の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100