zbook
一句话从 Z-Library 下载任意电子书。
技术栈: Z-Library eapi 搜索 + Playwright headless 绕 Cloudflare 下载
无需 Telegram bot,无需额外 API key,只需 Z-Library 账号。
用法(对我说)
- "帮我下载《Atomic Habits》"
- "下载三体 epub"
- "下载 Designing Data-Intensive Applications"
命令
python3 skills/zbook/scripts/zbook.py "书名或作者"
python3 skills/zbook/scripts/zbook.py --format epub --lang en "Atomic Habits"
python3 skills/zbook/scripts/zbook.py --lang zh "三体 刘慈欣"
python3 skills/zbook/scripts/zbook.py --index 1 "深度工作" # 选第2个结果
python3 skills/zbook/scripts/zbook.py --json "Atomic Habits" # JSON 输出
python3 skills/zbook/scripts/zbook.py --setup # 首次配置
配置
配置文件:~/.zbook/config.json
{
"email": "your@email.com",
"password": "your_password",
"download_dir": "~/Downloads/ebooks"
}
运行 --setup 进入交互配置向导。
Cookie 缓存在 ~/.zbook/cookies.json(24h 有效),避免频繁登录触发限制。
依赖安装
pip3 install playwright aiohttp --break-system-packages
python3 -m playwright install chromium
工作原理
- 登录: POST
z-library.sk/rpc.php获取认证 cookies(缓存 24h) - 搜索: POST
/eapi/book/search,参数名message,form-urlencoded(注意:不是q,不是 JSON) - 排序: 按语言+格式偏好打分排序
- 下载: Playwright 注入 cookies,导航到
/dl/xxx触发文件下载(绕 Cloudflare)
注意事项
- Z-Library 免费账号每日下载限额 10 本
- 搜索参数名是
message(不是q),格式必须是application/x-www-form-urlencoded - 下载端点有 Cloudflare 保护,纯 HTTP 请求会被 503,必须用 Playwright
- 登录频繁会触发 "Too many logins" 限制,cookie 缓存机制解决此问题