BOSS直聘自动投简历的实现过程

news2025/1/20 13:19:40

        这两年疫情,公司业务越来越差,必须得准备后路了,每天睡前都会在直聘上打一遍招呼,一直到打哈欠有睡意为止...,这样持续了一周,发现很难坚持,身为一名资深蜘蛛侠,怎么能这样下去呢?于是便萌生了对BOSS下手的念头。

        boss的web端功能已经挺完整了,所以直接使用无头浏览器(puppetter/playwright)应该就能搞定了,然后再整几个简单的界面,应该就差不多了。先看前端它用了哪些技术。

web框架:vue+jQuery

熟悉的全家桶

 经典的$

 

 聊天:基于websocket的mqtt实现 paho

消息传输格式protobuf,和抖音一样,找到定义文件就能解析了

 

接口分析 

要实现自动投简历,会用到以下一些接口,安全起见完整地址就不贴了,懂得搜一下就能找到。

职位搜索joblist.json,看字段名就能猜到什么意思

{
    "code": 0,
    "message": "Success",
    "zpData": {
        "resCount": 415,
        "filterString": "",
        "lid": "xxx",
        "hasMore": true,
        "jobList": [
            {
                "securityId": "xxx",
                "bossAvatar": "xxx",
                "bossCert": 3,
                "encryptBossId": "xxx",
                "bossName": "xxx",
                "bossTitle": "渠道经理",
                "goldHunter": 0,
                "bossOnline": false,
                "encryptJobId": "xxx",
                "expectId": 0,
                "jobName": "需求分析工程师",
                "lid": "xxx",
                "salaryDesc": "10-15K·13薪",
                "jobLabels": [
                    "1-3年",
                    "本科"
                ],
                "jobValidStatus": 1,
                "iconWord": "",
                "skills": [
                    "需求分析"
                ],
                "jobExperience": "1-3年",
                "daysPerWeekDesc": "",
                "leastMonthDesc": "",
                "jobDegree": "本科",
                "cityName": "上海",
                "areaDistrict": "浦东新区",
                "businessDistrict": "张江",
                "jobType": 0,
                "proxyJob": 0,
                "proxyType": 0,
                "anonymous": 0,
                "outland": 0,
                "optimal": 0,
                "iconFlagList": [],
                "itemId": 1,
                "city": xxx,
                "isShield": 0,
                "atsDirectPost": false,
                "encryptBrandId": "xxx",
                "brandName": "xxx",
                "brandLogo": "xxx",
                "brandStageName": "已上市",
                "brandIndustry": "计算机软件",
                "brandScaleName": "1000-9999人",
                "welfareList": [
                    "零食下午茶",
                    "补充医疗保险",
                    "通讯补贴",
                    "五险一金",
                    "股票期权",
                    "带薪年假",
                    "员工旅游",
                    "节日福利",
                    "定期体检",
                    "交通补助",
                    "餐补",
                    "年终奖"
                ],
                "industry": 100021,
                "contact": false
            }
         ]
    }
}

 获取简历attachment/checkbox

{
    "code": 0,
    "message": "Success",
    "zpData": {
        "supportVideoResume": false,
        "resumeList": [
            {
                "resumeId": "xxx",
                "showName": "全栈开发.docx",
                "resumeSize": 10000,
                "resumeSizeDesc": "34.9KB",
                "suffixName": "docx",
                "annexType": 0,
                "uploadTime": "xxx",
                "parserId": "xxx",
                "syncStatus": 1,
                "previewType": 1,
                "restricted": false,
                "cvId": "",
                "securityStatus": 0,
                "restrictedDays": -1,
                "target": 0,
                "nlpParserType": 1
            },
            {
                "resumeId": "xxx",
                "showName": "资深前端.docx",
                "resumeSize": 12345,
                "resumeSizeDesc": "34.9KB",
                "suffixName": "docx",
                "annexType": 0,
                "uploadTime": "xxx",
                "parserId": "xxxx",
                "syncStatus": 1,
                "previewType": 1,
                "restricted": false,
                "cvId": "",
                "securityStatus": 0,
                "restrictedDays": -1,
                "target": 0,
                "nlpParserType": 1
            }
        ],
        "videoResumeList": [],
        "supportAnnexType": false,
        "supportCommonResume": true,
        "showUploadBtnType": false,
        "complete": true,
        "maxCount": 3,
        "resumeCount": 3
    }
}

打招呼friend/add post form

{
    "code": 0,
    "message": "Success",
    "zpData": {
        "showGreeting": true,
        "securityId": "xxx",
        "bossSource": 0,
        "source": "",
        "encBossId": "xxx",
        "greeting": "个人觉得我和贵公司这一岗位很匹配,可以聊聊么?"
    }
}

投简历exchange/request post form

mqtt消息分析

分析这里面的消息类型,花了不少时间找规律,通过type+body.type+biztype基本就能确定唯一的消息类型

{
        "from": {
            "uid": xxx,
            "name": "xxx",
            "avatar": "xxx",
            "company": "xxx",
            "headImg": 8,
            "certification": 3,
            "source": 0
        },
        "to": {
            "uid": xxx,
            "name": "xxx",
            "avatar": "xxx",
            "company": "",
            "headImg": 0,
            "certification": 0,
            "source": 0
        },
        "type": 1,
        "mid": xxx,
        "time": xxx,
        "body": {
            "type": 1,
            "templateId": 1,
            "headTitle": "",
            "text": "好",
            "sound": null,
            "image": null,
            "action": null,
            "articles": [],
            "notify": null,
            "dialog": null,
            "jobDesc": null,
            "resume": null,
            "redEnvelope": null,
            "orderDetail": null,
            "hyperLink": null,
            "video": null,
            "interview": null,
            "jobShare": null,
            "resumeShare": null,
            "atInfo": null,
            "sticker": null,
            "chatShare": null,
            "interviewShare": null,
            "listCard": null,
            "starRate": null,
            "frame": null,
            "multiImage": null,
            "extend": ""
        },
        "offline": false,
        "received": false,
        "pushText": "xxx",
        "taskId": 0,
        "cmid": xxx,
        "status": 0,
        "uncount": 0,
        "pushSound": 0,
        "flag": xxx,
        "encryptedBody": null,
        "bizId": null,
        "bizType": null,
        "securityId": "xxx",
        "isPresenceMsg": false,
        "isSelf": false
    }

这是我做的工具消息界面

我有两个boss账号,投两种不同类型的职位,一个偏管理,一个偏技术,所以得支持多账号同时投递,理论上支持无限账号,只要电脑配置够高。

 然后就是要支持多个投递计划,比如我是全栈,那么后端和前端的职位都可以投,那么就可以分两个求职计划来投递,理论上支持无限多个,但是boss每天只允许打120次招呼,所以要合理分配

 在消息处理方面,目前做到了,自动接受简历投递邀请,自动接收交换联系方式,自动将各类标准消息设为已读,比如让你评价猎头,发来的职位卡片之类的。然后还添加了自动回复规则,有点类似微信公众号的自动回复设置

 目前我只需要每天晚上打开我的工具,让他自动去打招呼并处理消息,只有那些真正需要认真答复的消息才会出现app的提醒里,趁午休一一回复即可!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/116489.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3D模型的生成式AI

生成式 AI 席卷了 2022 年,我们最近决定 Physna 不应错过这个热点。 因此,尽管生成 AI 并不是我们的商业模式—Physna 是一家 3D 搜索和分析公司,专注于 AR/VR 和制造中的工程和设计应用—我们还是决定为 3D 模型和场景生成 AI 构建一个非常基…

Node.js——初识Node.js与内置模块(一)

1.初识 Node.js 1.1 浏览器中的 JavaScript运行环境 1.浏览器中的 JavaScript 的组成部分 2.为什么 JavaScript 可以在浏览器中被执行 3.为什么 JavaScript 可以操作 DOM 和 BOM 4.浏览器中的 JavaScript 运行环境 Javascript可以借助node,js进行后端开发 1.2 Node.js 简介 …

virtio前端驱动通知机制分析

virtio前端驱动通知机制分析 virtio 前后端主要通过PCI配置空间的寄存器来完成通信,I/O 请求的数据地址存放于 vring 中,并通过共享vring这个区域来实现 I/O 请求数据的共享。 由上图可知,虚拟机与主机之间交互用到了两个结构体:p…

智能网联汽车行业发展

智能网 联汽车信息安全发展趋势 智能网联汽车行业发展 根据工信部发布的《国家车联网产业标准体系建设 指南(智能网联汽车)》的定义,智能网联汽车是指搭载先进的车载传感器 、控制器、执行器等装置,并融合现代通信与网络技术&a…

明道云联合思迈特打造会员管理应用可视化联合解决方案

背景介绍 明道云在协助企业数字化转型过程中,发现客户对利用业务数据形成企业级报表和数据可视化大屏的需求十分强烈。为了满足这种需求,企业通常需要成立专门的数据分析团队,但这需要巨大的人力和财力投入,时间周期也较长。为了…

信息数智化招采系统源码——信息数智化招采系统

信息数智化招采系统 服务框架:Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构:VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术:Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、Stre…

React 学习笔记总结(五)

文章目录1. React 嵌套路由(多级路由)2. params参数 与 query参数3. React路由组件 传递params参数数据4. React路由组件 传递search参数5. React路由组件 传递search参数6. React路由组件 特殊情况: 刷新页面7. React路由 的 push 和 replace8. React的 编程式路由9. React路由…

Transformer架构:位置编码

2017年,Google等人提出了Vaswani提出了一种新颖的纯注意力序列到序列架构,闻名学术界与工业界的Transformer架构横空出世,它的可并行化训练能力和优越的性能称为自然语言处理领域和计算机视觉领域研究人员的热门选择,本文将重点讨…

elasticsearch--Master选举

最近一直在学习elasticsear相关的东西,在这学习的过程中记录一下比较重要的学习内容。方便以后看的时候加深印象。 假如宕机的节点是Master节点 下面是Maste节点选举 的流程图 在findMaster的方法中每隔一段时间就会ping所有的节点,看看有没有哪个节…

java设计模式三

文章目录4) 创建IOC容器相关的类5) 自定义IOC容器测试6) 案例中使用到的设计模式7.2 剖析MyBatis框架中用到的经典设计模式7.2.1 MyBatis回顾7.2.1.1 MyBatis与ORM框架7.2.1.1 MyBatis的基础使用7.2.2 MyBatis中使用到的设计模式7.2.2.1 Builder模式7.2.2.2 工厂模式7.2.2.3 单…

基于Java开发(PC)小说自检测系统【100010061】

Java 语言与系统设计课程(小说自检测系统) 一、目的与要求 ​ 自行下载最喜爱的小说 1 部。存到服务器中,格式自定。一般存储为文本文档。要求长篇小说,20 万字以上。举例说明:下载《三国演义》保存在服务器端。 ​…

Secure Boot功能简析

在数据中心中,云服务器由各种处理设备和外围组件(如加速器和存储设备)组成,这些设备通常都运行着固件。对云平台服务商来说,为保证这些设备的安全可靠,需要一种或多种机制,来保证这些设备在测试…

XYplorer使用教程

XYplorer使用教程 XYplorer是Windows的文件管理器。它具有标签式浏览,强大的文件搜索功能,多功能预览,高度可定制的界面,可选的双窗格以及一系列独特的方法,可以有效地自动执行频繁重复的任务。它快速,轻便…

【DCDC转换器】BUCK电路的演进

本文将是对BUCK型DCDC转换器的起步介绍,从BUCK电路模型的建立出发,可以对转换器原理有更清晰的认识。其次对三种不同类型开关电源转换器的原理进行计算,转换器的原理基本是类似的,相同的分析方法可以套用在其他模型上。最后引入了…

PHP基本语法(1)

前言:PHP是什么呢?PHP是一种后端开发用的语言,简单点说制作的网页分为静态和动态,静态网页用户体验性差,动态网页用户可以进行交互,而这种交互就需要PHP了。所以PHP他就是一门用于后端开发的语言。 注意&a…

操作系统实验1:操作系统的引导

操作系统实验1:操作系统的引导 现在是2022年12月22日,本人一如既往又是ddl战神😅 (虽然一周前刚立过flag) 两个月前就布置了的内容硬是拖到现在,这波实在是看不下去自己了😅😅😅 拖到了ddl的最后一天&…

String、StringBuffer、StringBuilder的区别

文章目录一、StringBuffer1、介绍2、StringBuffer中方法二、StringBuilder1.介绍2.常用方法总结一、StringBuffer 1、介绍 是可以存储和操作字符串,即包含多个字符的字符串数据。对于StringBuffer而言,本身是一个具体的操作类,所以不能像St…

推送MOBPUSH-API说明

消息监听接口 MobPushReceiver: 消息监听接口(包含接收自定义消息、通知消息、通知栏点击事件、别名和标签变更操作等) MobPush.addPushReceiver(MobPushReceiver receiver): 设置消息监听 MobPush.removePushReceiver(MobPushReceiver receiver): 移除…

2022年全国最新消防设施操作员模拟试题题库及答案

百分百题库提供消防设施操作员考试试题、消防设施操作员考试预测题、消防设施操作员考试真题、消防设施操作员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 38.下列说法正确的是()。 A.低压供配电系统中&…

vue的基本概念与vue2的指令

目录 一、 Vue的基本概念 1、前端技术的发展(html、CSS、JavaScript) ​ 2、MVVM架构: 数据的双向绑定: 二、Vue开发的方式 1、基本方式:在页面中引入vue.js文件。(vscode) 2、组件…