Skip to content

Latest commit

 

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

网络安全顶会论文爬虫

自动下载网络安全四大顶会论文,并支持 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 sync

下载论文

cd 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 2023

ACM 浏览器补漏

ACM 页面触发浏览器挑战时,可使用持久 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_KEYDEEPSEEK_BASE_URLDEEPSEEK_MODEL 作为别名。浏览器状态保存在被 Git 忽略的 ACM_CCS/.browser-profile/。 请仅在 ACM 访问协议或文本与数据挖掘授权允许自动下载时使用。

PDF 转 Markdown

使用 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 运行全部开放副本来源 关闭

转换(convert_pdf.py

参数 说明 默认值
--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 S&P

  • 优先探测 IEEE Xplore 官方 PDF,不假定固定的开放年份
  • 官方端点要求登录时,依次使用 Semantic Scholar、OpenAlex、OpenAIRE、NSF PAR,以及由 Jina Reader 渲染的 Semantic Scholar 作者副本链接
  • --ieee-web-search 使用限速的 Brave/Yahoo 检索,只接受标题严格匹配的公开副本,不绕过登录或付费墙
  • Xplore 元数据接口暂时不可用时,--ieee-recovery 自动从已有的 metadata.jsonmetadata.csv 继续补漏
  • 下载后校验标题、页数和页面方向,自动拒绝海报、幻灯片及错误论文
  • 开放仓储查询缓存在 IEEE_SP/ 的隐藏 JSON 文件中;删除对应缓存可强制重新查询

USENIX Security

  • 论文 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 CCS

  • 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 可选的兼容方案

注意事项

  1. 遵守版权:下载的论文仅用于个人研究
  2. 合理使用:设置适当延迟,避免对服务器造成压力
  3. 存储空间:四大会议近三年约 3300 篇论文,PDF 加转换后的 Markdown 实测约 16GB (USENIX 7.6G、ACM CCS 4.5G、IEEE S&P 2.4G、NDSS 1.1G)
  4. 转换耗时:单卡 16GB 显存、3 分片并行,3000 余篇约需 5~6 小时

许可证

本项目仅供学习和研究使用。请遵守相关会议和论文的版权规定。

About

Cybersecurity Top Conference Paper Crawling

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages