feat(scripts): 添加 PEP 723 脚本元数据并修复 HTTP/2 伪头过滤问题
- 为 build_studio_urls.py 和 lookup_groups.py 添加 PEP 723 依赖声明 - 修复 HTTP/2 伪头导致 requests 抛 InvalidHeader 的问题 - 添加 CDP 端口连通性预检查及启动指引
This commit is contained in:
@@ -14,6 +14,12 @@
|
||||
- 原因:方式 A 时浏览器未关闭(用户数据目录被占用);方式 B 时调试端口没起。
|
||||
- 解决:方式 A 关闭 Chrome/Edge 后重试;方式 B 先 `chrome.exe --remote-debugging-port=9222`(或 msedge)再运行。
|
||||
|
||||
### CDP 端口不可达(脚本前置探测)
|
||||
- 现象:`[!] CDP 端口不可达: http://localhost:9222`(Playwright 连接之前就报出)。
|
||||
- 原因一:浏览器根本没带 `--remote-debugging-port=9222` 启动。按提示命令重启。
|
||||
- 原因二:**带参数启动了但仍不通**——有 Chrome/Edge 残留进程占着默认 profile,新实例的调试端口参数被已运行实例吞掉(Chrome 单实例复用机制)。彻底退出所有该浏览器进程(任务管理器确认)后重启;或改用独立目录启动:`chrome.exe --remote-debugging-port=9222 --user-data-dir="C:/yts-cdp"`。
|
||||
- 脚本已在附加前先探测端口并区分这两种情况,遇到即按输出指引处理,无需先跑 Playwright 再排错。
|
||||
|
||||
### channel 不匹配
|
||||
- 现象:启动后用 --user-data-dir 报告浏览器品牌不符。
|
||||
- 原因:`--channel` 与用户数据目录指向的浏览器不是同一品牌(chrome / msedge)。
|
||||
@@ -43,6 +49,16 @@
|
||||
|
||||
## 回放查询
|
||||
|
||||
### 回放报 InvalidHeader(Invalid leading whitespace / 伪头)
|
||||
- 现象:`requests` 抛 `InvalidHeader: Invalid leading whitespace, expected field value...`。
|
||||
- 原因:套件 headers 里残留 HTTP/2 伪头(`:authority`、`:method`、`:path`、`:scheme`),不能当普通头发送。
|
||||
- 解决:脚本已双保险——捕获时自动过滤(输出 `已过滤 HTTP/2 伪头 N 个`),回放时再滤一次兜住旧 bundles.json;新版本无需人工处理。
|
||||
|
||||
### 跳转到 Google 登录页但 profile 里看得到 cookie
|
||||
- 现象:Cookies 文件里有 SAPISID/SID/__Secure-3PSID 等,页面仍停在 accounts.google。
|
||||
- 原因:cookie 存在不等于会话有效,Google 已在服务端让该会话过期。
|
||||
- 解决:由用户在该浏览器手动重新登录一次,之后继续复用该会话;不要试图靠改 cookie 文件修复。
|
||||
|
||||
### 回放全量 401
|
||||
- 现象:结果备注大量 `HTTP401(鉴权失败:套件缺 Authorization/Cookie 或已过期,请重新捕获)`。
|
||||
- 原因:套件过期(鉴权头是逐请求计算的),或头不全。
|
||||
@@ -93,4 +109,4 @@
|
||||
|
||||
### 缺依赖报 ModuleNotFoundError
|
||||
- 现象:`ModuleNotFoundError: No module named 'requests'` 或 `'playwright'` 或 `'openpyxl'`。
|
||||
- 解决:项目根 `uv sync` 后统一用 `uv run` 前缀执行;或单独 `pip install requests playwright openpyxl`。
|
||||
- 解决:项目根 `uv sync` 后统一用 `uv run` 前缀执行;脱离项目时直接 `uv run <脚本>`(脚本头部 PEP 723 声明会自动装依赖,见 `uv-env-setup` 技能);或单独 `pip install requests playwright openpyxl`。
|
||||
|
||||
Reference in New Issue
Block a user