📄 Paper Downloader
通过 DOI 从 Sci-Hub 下载学术论文 PDF,自动绕过 DDoS-Guard 保护。
原理
| 层 | 技术 | 作用 |
|---|---|---|
| 显示器 | Xvfb | 虚拟显示器,让浏览器以非 headless 模式运行 |
| 浏览器 | Playwright | 控制 Chromium 加载 Sci-Hub 页面 |
| 反检测 | puppeteer-extra-plugin-stealth | 隐藏自动化特征,绕过 DDoS-Guard |
| 下载 | in-page fetch | 在已认证的页面中通过 JS fetch() 下载 PDF |
前置条件
# Xvfb (服务器环境)
sudo apt install -y xvfb
# Node.js (含 npm)
sudo apt install -y nodejs npm
首次使用时,脚本会自动安装 Node.js 依赖。
使用方法
通过 Claude
当用户提供 DOI 时,Claude 自动触发此 skill 下载论文。
命令行
python3 {SKILL_DIR}/scripts/download_paper.py <DOI> [output_path]
示例:
# 最简用法
python3 {SKILL_DIR}/scripts/download_paper.py 10.1021/bi001522u
# 指定输出路径
python3 {SKILL_DIR}/scripts/download_paper.py 10.1016/0167-4781(93)90285-l ./paper.pdf
# 不启动 Xvfb(桌面环境)
python3 {SKILL_DIR}/scripts/download_paper.py 10.1038/nature12345 --no-xvfb
批量下载
for doi in "10.1021/bi001522u" "10.1016/0167-4781(93)90285-l"; do
python3 ~/.claude/skills/paper-downloader/scripts/download_paper.py "$doi"
done
直接使用 Node.js 脚本
node {SKILL_DIR}/scripts/stealth_download.js <DOI> [output_path]
输出
- 默认目录:
~/research/papers/ - 文件名:
paper_{DOI_safe}.pdf - 自动验证 PDF 头部
支持的 Sci-Hub 域名
| 域名 | 优先级 |
|---|---|
sci-hub.sg |
最高 (首选) |
sci-hub.ru |
回退 |
sci-hub.st |
二级回退 |
注意事项
- DDoS-Guard 保护级别动态变化,若失败可稍后重试
- 部分旧论文 (1990s) 可用性取决于 Sci-Hub 数据集
- 需要网络能访问 Sci-Hub 域名
- 仅供科研教育用途