智联招聘简历自动下载器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @koseninfo/zhilian-resume-downloader。
技能介绍
要解决的问题
智联招聘的企业端没有现成的简历导出接口,招聘人员通常要在网页上逐个点开候选人会话,手动下载附件简历,再按岗位归档。而这类页面是典型的 SPA:路由切换、弹窗加载全靠前端控制,常见的 Playwright 自动化方案在导航后常常丢失页面上下文,脚本跑一半就失效。
更麻烦的是登录态和验证码:简历接口受权限保护,未登录绝不能下载;手机短信验证码又是登录流程里绕不开的一环。
工作原理
纯 CDP 传输层:raw_cdp_client.py 基于 aiohttp 的 WebSocket 直连 Edge 调试端口,发送 CDP 指令(evaluate、navigate、set_download_dir 等),不依赖 Playwright,因此对 SPA 路由切换天然免疫。
登录与 Cookie 复用:首次运行时脚本打开企业招聘登录页,由用户手动完成登录,成功后登录态快照写入 cookies.json;后续运行自动复用 Cookie 直接登录,失效时回退到「重新人工登录一次」并刷新快照。
验证码接收:code_receiver.py 提供两条路径——iPhone 走 webhook.site 云端中继轮询(无需开放防火墙端口),Android 通过 ADB 直接读取短信,最弱兜底是写入 sms_code.txt 自动续跑。
双路径下载:聊天页(IM 沟通)用真实鼠标坐标触发「查看附件简历」,拿到签名直链后直接 GET 落盘;推荐页(投递列表)对无简历卡片的候选人自动发送索要消息(受 replied_candidates.json 跨运行去重,不重复骚扰)。文件按 岗位/日期 分子目录存放,递归扫描已存在的 *.pdf/*.doc/*.docx 按姓名去重。
双重门禁:is_truly_logged_in() 确认页面脱离 passport.zhaopin.com 登录域后才开始下载;运行结束写 completion.json,仅在登录成功且下载阶段执行完毕时 completed=true。
适用边界与注意点
- 当前仅支持 Windows + Edge(需调试端口启动,Edge 强制要求
--user-data-dir,脚本已内置处理)。 - 反检测仅屏蔽
navigator.webdriver等基础特征,不能保证对抗智联的高级风控。 - 聊天页下载依赖智联页面的 DOM 选择器,改版后需按
zhaopin_cdp.py中的常量(如CLICK_COMMUNICATE_JS、FOCUS_IM_INPUT_JS)调整。 - iPhone 定时任务不是全自动:仍需保证验证码及时写入
sms_code.txt;只有 Android + ADB 才能做到无人值守。 - 自动索要简历依赖页面上的沟通入口与 IM 输入框,属 best-effort 操作,失败仅计入
errors,不阻断整体流程。 - 所有下载结果只打印到对话框,不产生任何 JSON 报告文件。
使用场景
- 每天上午九点定时检查招聘账号的新简历,把当天收到的附件简历自动存到按岗位分好的目录里
- 手动逐个点开候选人聊天窗口下载简历太耗时,需要脚本自动点击「查看附件简历」并拉取直链落盘
- 候选人没有发附件简历时,需要自动发一条索要简历的消息,且同一人不能重复骚扰
- 登录态过期后重新登录很麻烦,希望脚本复用已保存的 Cookie 自动登录,失效时只人工登录一次
适合人员
- 招聘公司的 HR 专员,每天要在智联企业端收集多个岗位的候选人简历
- 需要把智联收到的简历按岗位和日期自动归档、避免手动下载出错的招聘顾问
- 希望通过定时任务每天早上自动跑一遍简历收集、减少重复操作的招聘团队
- 使用 Windows + Edge 环境、愿意跑 Python 脚本的技术向招聘运营人员