headless 环境下所有浏览器命令因首页 domcontentloaded 等待超时失败

Aperta Adatta ai principianti
#15 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
68/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
python
Ambito
cli

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.pystart()

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

  1. 无头环境安装 xhs-cli 0.1.4 并完成登录
  2. 运行 xhs whoamixhs feed
  3. 观察 Page.goto: Timeout 20000ms exceeded

Expected behavior

  • 首页初始化应该用更宽松的超时(例如 40s+),或者
  • 允许通过环境变量 / CLI 参数 / 配置文件覆盖 timeoutwait_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

  1. 最简:start() 中把超时从 20000 提高到 40000;
  2. 更好: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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di jackwener/xhs-cli

Tutte le issue di jackwener/xhs-cli

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.