自动下载网络安全四大顶会论文,并支持 PDF 转 Markdown 功能。
| 会议 | 下载状态 | 说明 |
|---|---|---|
| USENIX Security | ✅ 免费下载 | 完全开放获取 |
| NDSS | ✅ 免费下载 | 完全开放获取 |
| IEEE S&P | ✅ 多源下载 | 官方 PDF + 作者或机构仓储开放副本 |
| ACM CCS | ✅ 开放获取 | ACM 出版物已于 2026 年 1 月起全面开放 |
# 安装 uv(如果还没有安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 克隆项目
git clone https://github.com/your-username/CybersecurityPaperCrawling.git
cd CybersecurityPaperCrawling/cybersec_papers
# 安装依赖(uv 会自动管理)
uv synccd cybersec_papers
# USENIX Security(Cloudflare 页面在浏览器内渲染解析)
# 前置依赖:uv run playwright install chromium;Linux 无显示器还需 xvfb
uv run playwright install chromium
xvfb-run -a uv run python -m cybersec_papers download usenix \
-y 2025 2024 2023 --usenix-browser
# NDSS
uv run python -m cybersec_papers download ndss -y 2025 2024 2023
# IEEE S&P(近期卷登录受限时检索作者/机构仓储副本)
uv run python -m cybersec_papers download ieee_sp \
-y 2025 2024 2023 --ieee-web-search
# ACM CCS 近三届
uv run python -m cybersec_papers download acm_ccs -y 2025 2024 2023ACM 页面触发浏览器挑战时,可使用持久 Chromium 与 DeepSeek Tool Calls 补充缺失论文。模型配置只从环境变量读取:
cd cybersec_papers
uv run playwright install chromium
export ACM_BROWSER_LLM_API_KEY='你的 API Key'
export ACM_BROWSER_LLM_BASE_URL='https://api.deepseek.com'
export ACM_BROWSER_LLM_MODEL='deepseek-v4-flash'
export ACM_BROWSER_LLM_MAX_ROUNDS=3
export ACM_BROWSER_CHALLENGE_TIMEOUT=12
export ACM_BROWSER_MAX_RETRIES=1
# 建议先测试 5 篇
xvfb-run -a uv run python -m cybersec_papers download acm_ccs \
-y 2025 2024 2023 --acm-browser-only --acm-browser-limit 5
# 授权允许时再取消数量限制
xvfb-run -a uv run python -m cybersec_papers download acm_ccs \
-y 2025 2024 2023 --acm-browser-only也支持 DEEPSEEK_API_KEY、DEEPSEEK_BASE_URL 和 DEEPSEEK_MODEL
作为别名。浏览器状态保存在被 Git 忽略的 ACM_CCS/.browser-profile/。
请仅在 ACM 访问协议或文本与数据挖掘授权允许自动下载时使用。
使用 MinerU 的 pipeline 后端将 PDF 转换为
Markdown。模型在常驻进程中只加载一次,按批处理,已有 Markdown 会自动跳过,可随时中断续跑。
默认使用 GPU(cuda:0);无 GPU 的机器可用 MINERU_DEVICE_MODE=cpu 前缀运行,
能正常出结果但单篇约需 5 分钟以上。
cd cybersec_papers
# 查看转换进度
uv run python convert_pdf.py --status
# 转换近三年全部论文
uv run python convert_pdf.py
# 调整每批文件数和显存上限
uv run python convert_pdf.py --batch-size 6 --vram 14
# 转换任意目录下的 PDF
uv run python convert_pdf.py --path /path/to/pdfs --output /path/to/markdown转换的瓶颈不在 GPU:表格识别(MinerU 把表格模型固定在 CPU 上)和 Markdown
后处理都是串行的 CPU 工作,单进程会让 GPU 大部分时间在空等。用 --shard I/N
起多个进程分担,PDF 按路径 crc32 划分,各分片互不重叠:
# 3 个分片并行,每片限制 4GB 显存
for i in 0 1 2; do
uv run python convert_pdf.py --shard $i/3 --batch-size 4 --vram 4 &
done
# 看门狗:分片挂掉自动拉起,全部转完自动退出
uv run python watch_shards.py --shards 3 --batch-size 4 --vram 4
# 只看状态不拉起进程
uv run python watch_shards.py --once --dry-run在 16GB 显存的单卡上实测:单进程 4.9 篇/分 → 3 分片 9~10 篇/分,GPU 利用率 32% → 73%。分片数受显存限制,每个分片都要加载一份完整模型权重,3 片已接近 16GB 上限。
需要更快时可以牺牲精度:--no-formula 跳过公式识别、--no-table 跳过表格识别,
对应内容会退化成图片。
CybersecurityPaperCrawling/
├── cybersec_papers/ # 主程序包
│ ├── src/cybersec_papers/ # 源代码
│ │ ├── crawlers/ # 各会议爬虫
│ │ ├── converter/ # PDF 转 Markdown
│ │ ├── services/ # 外部服务(FlareSolverr、Crossref、OpenAlex 等)
│ │ └── core/ # 基础类和工具
│ ├── convert_pdf.py # PDF 转 Markdown 脚本
│ ├── watch_shards.py # 分片转换的看门狗
│ ├── tests/ # 单元测试
│ └── pyproject.toml
├── {CONFERENCE}/YYYY/ # 下载的论文(不在 git 中)
│ ├── papers/*.pdf
│ ├── markdown/*/ # 转换后的 Markdown
│ └── metadata.csv
└── logs/ # 日志文件(不在 git 中)
| 参数 | 说明 | 默认值 |
|---|---|---|
-y, --years |
下载年份 | 按会议配置(ACM CCS 默认 2023–2025) |
--workers |
并发下载数 | 5 |
--delay |
请求延迟(秒) | 1.0 |
--acm-browser-only |
仅用本地元数据运行 ACM 浏览器补漏 | 关闭 |
--acm-browser-limit |
限制浏览器补漏数量,0 表示不限 | 0 |
--usenix-browser |
用持久 Chromium 获取并复用 USENIX 会话 | 关闭 |
--ieee-web-search |
为登录受限的 IEEE 论文查找开放副本 | 关闭 |
--ieee-web-search-delay |
IEEE 开放副本检索间隔(秒) | 3.0 |
--ieee-recovery |
只对仍缺失的 IEEE PDF 运行全部开放副本来源 | 关闭 |
| 参数 | 说明 | 默认值 |
|---|---|---|
--shard I/N |
分片,N 个并行进程中的第 I 片 | 0/1(不分片) |
--batch-size |
每批送入常驻模型的 PDF 数 | 6 |
--vram |
MinerU 可用显存上限(GB) | 14 |
--years |
转换年份 | 2025 2024 2023 |
--path / --output |
转换任意目录,忽略会议与年份 | 无 |
--no-formula / --no-table |
跳过公式/表格识别换取速度 | 关闭 |
--status |
只显示进度 | — |
convert_pdf.py采用常驻模型批处理,没有 worker 池,因此没有--workers; 并行度由--shard控制。模块命令python -m cybersec_papers convert是另一条 基于MineruConverter的路径,那里仍有--workers(默认 6)。
- 优先探测 IEEE Xplore 官方 PDF,不假定固定的开放年份
- 官方端点要求登录时,依次使用 Semantic Scholar、OpenAlex、OpenAIRE、NSF PAR,以及由 Jina Reader 渲染的 Semantic Scholar 作者副本链接
--ieee-web-search使用限速的 Brave/Yahoo 检索,只接受标题严格匹配的公开副本,不绕过登录或付费墙- Xplore 元数据接口暂时不可用时,
--ieee-recovery自动从已有的metadata.json或metadata.csv继续补漏 - 下载后校验标题、页数和页面方向,自动拒绝海报、幻灯片及错误论文
- 开放仓储查询缓存在
IEEE_SP/的隐藏 JSON 文件中;删除对应缓存可强制重新查询
- 论文 PDF(
/system/files/)完全公开、不受 Cloudflare 保护,但列表页会触发浏览器挑战 - Cloudflare 的
cf_clearance绑定浏览器 TLS 指纹,requests 无法复用浏览器 cookie; 因此--usenix-browser在 Chromium 内渲染列表页并直接解析其 HTML, 下载线程只用 requests 抓取不受挑战的 PDF 端点 - 需要先
uv run playwright install chromium;Linux 无显示器时使用xvfb-run -a(需安装xvfb)。--usenix-browser-headless可免去 xvfb,但无头模式通常过不了挑战 - 浏览器状态保存在 Git 忽略的
USENIX_Security/.browser-profile/ - 仅保留正式论文,自动排除 Keynote、Enigma 演讲、勘误、封面和整卷 proceedings 文件
- ACM 数字图书馆已于 2026 年 1 月起全面开放获取
- 脚本通过 Crossref 精确枚举主会论文,并排除 Poster/Demo 短摘要
- 优先尝试 ACM 官方 PDF;若当前网络被 Cloudflare 拦截,使用 Semantic Scholar、OpenAlex、arXiv 和机构仓储镜像
- Python >= 3.10
- uv - Python 包管理器
- MinerU - PDF 转 Markdown(可选,需要 GPU)
- FlareSolverr - IEEE S&P 可选的兼容方案
- 遵守版权:下载的论文仅用于个人研究
- 合理使用:设置适当延迟,避免对服务器造成压力
- 存储空间:四大会议近三年约 3300 篇论文,PDF 加转换后的 Markdown 实测约 16GB (USENIX 7.6G、ACM CCS 4.5G、IEEE S&P 2.4G、NDSS 1.1G)
- 转换耗时:单卡 16GB 显存、3 分片并行,3000 余篇约需 5~6 小时
本项目仅供学习和研究使用。请遵守相关会议和论文的版权规定。