大专捞中捞就得海投,靠着工具重新做牛马
手动投递两个月之后,我发现问题不在简历怎么写,而在重复点 Boss 这条链路人扛不住。后来做了一套本地桌面端自动化(AI摸鱼求职)。
如果感兴趣欢迎试用,下载地址在结尾
技术栈长什么样
先把用到的技术说清楚,对应到分层上:
| 层级 | 技术 | 干什么 |
|---|---|---|
| 客户端 UI | Vue 3 + Vite + Vuex | 配置、开关、统计、日志展示 |
| 桌面壳 | Electron | 主窗口、子浏览器窗口、进程生命周期 |
| 进程通信 | Electron IPC | UI ↔ 主进程 ↔ 自动化引擎 |
| 页面操控 | Chromium DevTools Protocol(CDP) | 导航、取元素状态、执行页面脚本、听网络 |
| 自动化引擎 | Node.js 远程 bundle(可热更) | 投递、沟通、同步、调度逻辑 |
| 后端 | Node.js + Koa2 + Sequelize + MySQL | 账号、职位、沟通记录、授权、Token |
| 管理端 | Vue(独立后台) | 账号/授权/版本发布等运营能力 |
| AI 沟通 | 大模型 API(Token 计费) | 复杂会话回复,规则挡不住的那一层 |
| 打包发布 | electron-vite + electron-builder | 安装包构建、版本更新 |
不是「Vue + Electron 拼个壳」那么简单——难点在 Electron 里的子浏览器怎么稳、CDP 怎么用、自动化怎么热更。下面拆开说。
先说架构:壳和自动化为什么要拆开
如果不拆开,常见结局是:招聘站改版一次,你得发一整个安装包;或者业务逻辑跟桌面进程缠死,改一处炸一片。
我们按四层来:
UI(Vue):配置 / 开关 / 统计
↓ IPC
桌面壳(Electron):窗口 / 远程包加载
↓
自动化引擎(Node bundle,可热更):投递 / 沟通 / 调度
↓ CDP
本地子浏览器(Chromium):用户真实登录态
↓ HTTP
后端 API(Koa2 + MySQL):账号 / 职位 / 授权 / Token
拆开的收益很直接:
- 壳用 Electron 稳住,少发版
- 自动化用远程 bundle,跟着网页改版走热更
- 登录态留在本机子浏览器,不走代登
难点一:开源自动化框架为什么不好直接套
第一反应通常是:Puppeteer / Playwright 现成的,自己搭 Electron 干嘛?
结论很硬:不是框架差,是 Boss 对自动化环境太敏感。
体感上最直观的一条:子浏览器里按 F12,页面直接关。不是禁用面板,是防调试。外围还有环境指纹、行为识别等,规则还会更新。
市面方案常见翻车:
- Puppeteer / Playwright:自动化路径太标准化,容易被针对性识别
- headless:环境和真人桌面浏览器差太远
- stealth / 改 UA:能缓一阵,规则一更新就成片挂
- Selenium:自动化特征更「老面孔」
所以业务没有绑死在「标准开箱自动化方案」上,而是桌面壳 + 本地子浏览器自己跑。对抗怎么做,是黑科技,本文不分享。
难点二:页面状态比点击更难
RPA 新人容易高估 click,低估「现在页面到哪一步了」。
列表页、详情页、沟通弹窗是多步链路。任一步没到位就继续点,整批失败,还很难复盘。
页面驱动层要统一几件事:
- 导航别并发踩乱
- 重定向中断别当硬失败
- 登录检测和投递业务用不同等待策略
一句话:不是会不会点,是状态判不判得准。
难点三:投递必须是调度,不能是死循环
while(true) click() 撑不住挂机。我们做成定时 tick:
tick → 检查登录 → 检查权限 → 拉职位 → 过滤 → 投递 → 落库
过滤(薪资、关键词、排除词、同公司冷却)服务端配置、客户端执行。投递和沟通共用同一浏览器实例时必须互斥,否则互相改页面。
难点四:沟通自动化只要接住第一轮
聊天侧分三层就够:
- 感知新消息
- 简单意图(要简历、确认)走规则
- 复杂对话再走 LLM(耗 Token)
定位:接住 HR 第一轮,不替代面试。简历问句拖太久,机会经常就没了。
难点五:热更和授权必须是两道闸
| 能力 | 策略 |
|---|---|
| 自动化热更 | 有新包静默更新 |
| 账号授权 | 过期可登录,自动任务执行前校验 |
| Token | 开自动沟通前检查余额 |
热更管「逻辑能不能修好」,授权管「自动任务能不能跑」。合成一道,用户就收不到修复包。
另外几个工程坑
登录态检测很脆。没有稳定公开 API,只能靠页面状态。未登录时用长超时等元素,刷新像卡死;轮询和手动刷新一叠就更慢。原则:检测路径要短,别堆并发。
招聘站改版是常态。选择器批量失效消不掉,只能靠边界集中 + 热更追。
Windows 打包会锁文件。第二次构建经常删不掉旧产物(测试进程、IDE 索引都可能占着)。构建用独立临时目录,再拷安装包到发布目录,少和旧目录硬抢。
调试链路长。UI → 进程通信 → 主进程 → 子浏览器 → 页面,单点断点不够用,得靠分层日志。
小结
做这类工具,真正难的是:
- 本地会话能不能长期稳住
- 强反爬站点上,开源自动化为什么不好直接套
- 调度和互斥能不能撑住挂机
- 壳和引擎拆开后,热更能不能跟上改版
- 第三方变动能不能关在边界外
还没做完美的:登录检测仍不稳、自动沟通质量与 Token 成本、多平台扩展。
如果你也在做招聘站自动化,欢迎聊调度、登录态、热更。反爬对抗那块各凭本事,细节就不写了。
项目入口:AI摸鱼求职