Boss直聘简历下载器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @koseninfo/boss-resume-downloader。
技能介绍
要解决的问题
BOSS 直聘招聘者在「沟通」页收到的简历多为在线简历,DOM 渲染且通常没有独立的下载按钮。手动逐份打开、另存为 PDF 既重复又难以批量化;而 BOSS 的页面结构与企业版差异大、改版频繁,自动填手机号 / 解滑块的登录方式也容易触发风控。这个技能把「人工确认登录」和「按岗位归档落盘」串成一条可重复运行的流程。
核心能力
- 人工登录 + Cookie 持久化:脚本打开 BOSS 企业登录页后由用户自行完成滑块 / 扫码 / 账号密码登录;成功后通过 CDP 的
Network.getCookies保存httpOnlyCookie 到~/.zhipin_downloader/cookies.json,后续直接恢复登录。 - 三策略简历落盘:优先点击「下载简历 / 导出」;失败则捕获 BOSS CDN 的 PDF 直链并用 Python 拉取、校验
%PDF-头;仍无直链时用Page.printToPDF把当前在线简历弹层打印为 PDF。 - 招聘者入口与按索引点击:固定走
/web/boss/→/web/chat/index,候选人列表用.user-list .geek-item按可见索引精确点击,避免姓名文本随排版变化而匹配失败。 - 索要简历与冷却:检测不到「在线简历 / 附件简历」时自动发送索要消息,同一候选人在 3 天冷却期内不重复发送,记录持久化在
processed.json。 - 按岗位 / 日期归档:下载结果写入
岗位/日期/子目录,无法识别时回退为未分类岗位/当天日期。 - 硬性门禁与结果回报:只有
is_truly_logged_in()命中后才允许扫描下载;登录成功且下载跑完时写completion.json并exit 0,由对话层弹窗汇报摘要。
适用边界与注意点
- 仅面向招聘者(企业)账号;求职者页面
/web/im、/web/geek会被踢回首页,导致扫描到 0 个候选人。 - 所有带「需按实际页面验证」的 JS 选择器常量(如
IS_TRULY_LOGGED_IN_JS、CANDIDATE_JS、OPEN_RESUME_JS)依据公开页面结构推断,首次运行前必须用 F12 核对,改版后通常只需调整这些常量。 - BOSS 对频繁自动恢复 Cookie 与反复跳转敏感,可能触发滑块或让
.geek-item不渲染。触发风控后不要反复自动重试,应关闭调试 Edge、删除cookies.json与edge_profile/,重新走一次人工登录。 - 人工登录期间脚本会阻塞等待(默认最长 300 秒),适合后台运行并提示用户在浏览器中完成登录。
- 任务完成以
completion.json.completed == true为准;未真正登录、登录超时或扫描失败都会以非零退出,不会被误报为完成。
使用场景
- 在BOSS沟通页收到大量在线简历,需要批量另存为PDF并按岗位和日期自动归档
- 候选人未上传简历时,需要自动发送索要消息并在3天冷却期内不重复打扰
- 调试浏览器触发BOSS风控导致列表不渲染时,需要清理环境并重新走一次人工登录
- 首次上线前需要核对选择器,用--limit参数只处理前几个候选人验证流程
适合人员
- 负责技术招聘的HR,每天要在BOSS沟通页整理大量在线简历并分岗位归档
- 深耕特定行业的猎头,需要按岗位批量收集候选人简历且常因频繁访问触发风控
- 搭建自动化招聘流程的开发者,需要对接BOSS页面结构并验证DOM选择器稳定性