headless 环境下所有浏览器命令因首页 domcontentloaded 等待超时失败
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 68/100
Direzione di ricerca
Inizia in client.py, all’interno di XhsClient.start() e della relativa chiamata a _goto, quindi riproduci il problema con un’esecuzione headless di xhs whoami o xhs feed. Controlla il comportamento esistente di timeout e wait_until e verifica che la modifica scelta consenta ai comandi che avviano il browser di completarsi senza che la navigazione alla home page vada in timeout.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
- Lingua principale
- Python
- Stelle
- 658
- Fork
- 68
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di jackwener/xhs-cli
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
-
评论回复可以带图片吗? Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
搜索页内容不渲染 Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
Unable to login via QR code Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
Tutte le issue di jackwener/xhs-cli
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100