manus-skills/.kortix/opencode/skills/data/scrapling/references/troubleshooting.md
zhukang 1c7abd81d1 All 310 Manus skill-hub community skills as a Kortix marketplace registry
- 310 registry:skill items, 1528 files, 7 categories (hub tags)
- registry.json generated by @kortix/registry buildRegistry
- nested SKILL.md in sn-da-* renamed SUBSKILL.md (no phantom skills)
- provenance + licenses: SOURCES.md
2026-09-15 13:37:20 +08:00

3.3 KiB
Raw Blame History

Scrapling 踩坑记录与解决方案

ModuleNotFoundError: curl_cffi

错误信息: ModuleNotFoundError: No module named 'curl_cffi' 原因: 安装了基础包 pip install scrapling,不含抓取依赖 解决方案:

pip install "scrapling[fetchers]"

Cloudflare 403 + "Just a moment"

错误信息: 返回 403,页面内容包含 "Just a moment" 或 "Checking your browser" 原因: Fetcher(curl_cffi)无法通过 Cloudflare 验证 解决方案: 换用 StealthyFetcher + solve_cloudflare=True

from scrapling.fetchers import StealthyFetcher
page = StealthyFetcher.fetch(url, headless=True, solve_cloudflare=True, timeout=60000)

错误信息: 手动传入 cf_clearance cookie 但仍被 Cloudflare 拦截 原因: cf_clearance 绑定浏览器指纹(TLS/JA3/UA),不可跨客户端复用 解决方案: 不要手动传 cf_clearance,让 StealthyFetcher 自己通过 Cloudflare 获取

Expected array, got object at $.cookies

错误信息: Expected array, got object at $.cookies 原因: 浏览器 Fetcher(StealthyFetcher/DynamicFetcher)cookie 必须是 list[dict],不能是 dict 解决方案:

# ❌ 错误
cookies = {'name': 'value'}

# ✅ 正确
cookies = [{'name': 'cookie_name', 'value': 'cookie_value', 'domain': '.site.com', 'path': '/'}]

错误信息: Cookie should have a url or a domain/path pair 原因: cookie dict 缺少 domain 和 path 字段 解决方案: 每个 cookie dict 必须包含 domain(以 . 开头)和 path(通常 /)

cookies = [
    {'name': 'token', 'value': 'abc', 'domain': '.example.com', 'path': '/'},
]

404 "page is private"

错误信息: 返回 404,页面提示内容为私有 原因: Cloudflare 已通过,但目标页面需要登录态 解决方案: 带上登录 cookie(从浏览器手动获取)。字段模板见 cookie-vault.md;真实 cookie 值只能保存到本地未提交的 cookie-vault.local.md,输出时必须 redact

page = StealthyFetcher.fetch(
    url,
    solve_cloudflare=True,
    cookies=[{'name': '_session', 'value': '...', 'domain': '.site.com', 'path': '/'}],
    timeout=60000,
)

Cloudflare 多轮 Turnstile

现象: StealthyFetcher 运行时间很长(30-90 秒),日志显示多次 Turnstile 验证 原因: 正常现象,Cloudflare 有时需要 2-3 轮验证 解决方案: 耐心等待,确保 timeout 足够长(至少 60000ms)。如果超时失败,增加到 120000ms 重试

scrapling: command not found

错误信息: scrapling: command not found 原因: Python Scripts 目录不在 PATH 中 解决方案:

# 方式 1: 使用 python -c
python -c "from scrapling.cli import main; main(['install'])"

# 方式 2: 使用 python -m(如果支持)
python -m scrapling install

StealthyFetcher/DynamicFetcher 报浏览器未安装

错误信息: 类似 "browser not found" 或 Playwright/Camoufox 相关错误 原因: 未安装浏览器依赖 解决方案:

# 安装 scrapling 浏览器依赖
scrapling install
# 或
python -c "from scrapling.cli import main; main(['install'])"