【玩轉雲函數】騰訊雲函數幫我定時和 HR 打招呼,找工作不再愁!

以下內容來自「玩轉騰訊雲」用戶原創文章,已獲得授權。

<img src="https://z3.ax1x.com/2021/06/30/RDauGD.png" width="700"/>

最近看很多人跑路,所以就想着造福自己,想去自動的在某招聘軟件中跟 HR 打招呼,由於買個服務器來單獨配個 corntab 確實有點浪費,所以就選擇了雲函數,畢竟雲函數的免費額度夠用了。

WJqPMQ.md.png

所以,開始吧!

01. 腳本編寫

我使用的是 Node.js 進行編寫,總共文件分爲三個:

  • common.js 存放公共的頭部參數, 和公共方法
  • request.js 用於請求接口
  • index.js 用於雲函數的觸發器配置運行的文件

代碼都沒啥,就是帶參數請求接口,公共參數,主要是配置請求的 header;

const headers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat',
  'content-type': 'application/x-www-form-urlencoded',
  mpt: '',
  platform: '',
  scene: '',
  ua: '{"model":"microsoft"}',
  v: '',
  ver: '',
  wt2: '',
  zpAppId: '',
  Referer: '',
  'Accept-Encoding': 'gzip, deflate, br'
}

function sleep (delay) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve()
    }, delay)
  })
}

exports.headers = headers

exports.sleep = sleep

接口請求,主要就是先獲取指定城市的崗位列表,然後挨個打招呼;

const got = require('got')
const fs = require('fs')
const { headers, sleep } = require('./common')

function getJobList(page = 1) {
  return got('自己去抓包哦', {
    method: 'GET',
    headers,
    searchParams: {
      appId: 10002,
      expectId: 185008765,
      sortType: 1,
      cityCode: 101020100,
      districtCode: '',
      businessCode: '',
      subwayLineId: '',
      subwayStationId: '',
      page: page,
      pageSize: 10,
      salary: '',
      degree: '',
      experience: '',
      stage: '',
      scale: '',
      industry: '',
      longitude: '',
      latitude: '',
      positionCode: ''
    }
  })
}

function addJob(jobId, lid, securityId) {
  const body = {
    appId: '',
    jobId: jobId,
    lid: lid,
    securityId: securityId
  }
  return got('自己去抓包哦', {
    method: 'POST',
    headers,
    body: new URLSearchParams(body).toString()
  }).then(res => {
    console.log(res.body)
    return res
  })
}

async function main () {
  try {
    let jobList = []
    for (let i = 1;;i++) {
      const res = await getJobList(i)
      const data = JSON.parse(res.body)
      jobList.push(...data.zpData.jobList)
      if (!data.zpData.hasMore) {
        break
      }
    }
    const asyncArr = []
    jobList.forEach(async job => {
      console.log(job.jobName)
      asyncArr.push(addJob(job.encryptJobId, job.lid, job.securityId))
    })
    Promise.all(asyncArr)
  } catch (error) {
    console.log(error)
  }
}

main()

然後就是獲取觸發器中附加信息的主函數,通過獲取附加信息中寫的文件名,來調用指定文件,因爲我還有發簡歷的文件,所以要區分下;

'use strict';
exports.main_handler = async (event, context, callback) => {
  for (const v of event["Message"].split("\r\n")) {
    console.log(v);
    require(`./${v}.js`)
  }
}

02. 創建雲函數

  1. 直接首頁搜索雲函數

WJqirj.md.png

  1. 進入 雲函數控制檯

WJqFqs.md.png

  1. 創建雲函數,創建方式選擇自定義創建,運行環境選擇 Node.js,函數代碼我們直接選擇上傳文件夾,方便快捷啊,把我們的代碼文件夾直接選中上傳即可;

WJqSG8.md.png

  • 注意:這裏的超時時間可以設置長一點,畢竟是接口請求,還是得花點時間的,設少了,還沒請求完成,就給斷了;

WJbvIP.md.png

  1. 接下來,配置觸發器,選擇定時觸發,我們可以選擇它寫死的一些時間點,例如每一分鐘,每一天等,也可以使用自定義觸發週期,自己配置cron表達式,例如每天晚上九點就是0 0 9 * * * *

  2. 最後,附加信息選擇,然後寫我們要跑的文件名,即request

WJbXVI.md.png

WJq9xg.md.png

  1. 點擊「完成」即可創建雲函數,隨後我們可以在列表中,查看到我們的雲函數,進入詳情,也可以修改代碼並部署。

03. 效果展示

WJqDeA.png

WJbzPf.png

Web Function 體驗官招募令

驚喜福利滿滿,點擊查看活動詳情

<img src="https://main.qcloudimg.com/raw/545c2c8589959c675b8c501e8b41e363.png" width="700"/>

Web Function 使用體驗

當前已在國內各大區域發佈上線,歡迎體驗使用!

<img src="https://main.qcloudimg.com/raw/4ee70db1b518d4c0064711d1caf1572c.jpg" width="700"/>


One More Thing

立即體驗騰訊雲 Serverless Demo,領取 Serverless 新用戶禮包 👉 騰訊雲 Serverless 新手體驗

歡迎訪問:Serverless 中文網

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章