node腳本實現自動化簽到和抽獎功能
一、前言
掘金自從推出簽到活動後,就不斷的完善這個功能,現在礦石能抽獎還能兌換物品(簡直不要太爽!✧*。٩(ˊᗜˋ*)و✧*。),樓主本人很早之前就在用掘金瞭(掘金簽到功能出來之前),但是本人很懶導致打卡簽到斷斷續續的,所以隻能眼睜睜看著別人兌換獎品(羨慕、嫉妒٩(๑`^´๑)۶),現在礦石也沒有過w(主要碰運氣去瞭( • ̀ω•́ )✧),而正好前不久看過一些掘金的博主發瞭自動簽到的相關文章,感覺這是個不錯的辦法,所以趁著元旦好好支棱一下,因為前不久買瞭個便宜的騰訊雲服務器加上本人是個前端老白菜,所以決定使用雲服務器加node定時腳本的方法來實現自動化簽到抽獎功能。決定好方向後就開始查文章,所以直接搜瞭自動簽到
關鍵字,開始一篇篇看文章,然後著手自己實現,廢話不多說瞭,接下來看看如何實現自動簽到抽獎吧。
二、準備
服務器
看瞭很多文章,基本都是使用一個請求包和定時任務觸發包來實現,看瞭一下有用油猴腳本的、雲函數的、node腳本,基本涵蓋全瞭。但是不管用啥,思想和調用的接口都是一樣的,所以本文是基於雲服務器來實現,需要一個雲服務器或者一臺聯網的24小時不關機的電腦。
node環境
這個就不多說瞭,node環境安裝網上都有,但是想必大傢一定都安裝好瞭。整理好環境就開始著手建工程。
三、腳本工程搭建
創建一個文件夾,寫上工程名(隨便起個名字( ̄▽ ̄)/);
然後打開文件夾下的dos窗口(cmd),或者用VsCode
打開文件夾;
在窗口裡面輸入npm init
,然後一路回車,生成package.json
文件;
然後這裡準備兩個包,一個是axios
,另一個是node-schedule
,分別安裝如下:
npm i axios npm i node-schedule
完成安裝後如下圖;
然後在根目錄中新建index.js
和config.js
文件,用於代碼和參數編寫;
至此就搭建完整個node
腳本的工程文件瞭,接下來就是代碼編寫。
四、代碼編寫&運行
先將使用的參數抽取到一個文件內(config.js
)
//config.js //查詢今日是否簽到成功接口 https://api.juejin.cn/growth_api/v1/get_today_status module.exports = { //掘金相關參數 nuggets: { signInUrl: `https://api.juejin.cn/growth_api/v1/check_in`, //簽到接口 freeCheckUrl: `https://api.juejin.cn/growth_api/v1/lottery_config/get`, //免費抽獎次數查詢 drawUrl: `https://api.juejin.cn/growth_api/v1/lottery/draw`, //抽獎接口 headers: { Referer: "https://juejin.cn/", "Upgrade-Insecure-Requests": 1, "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36", cookie: `這裡填寫自己的cookie,登錄掘金網頁版後打開控制臺的network,隨便找一個請求,查看請求頭裡面的cookie復制過來即可`, //用自己的 }, //相關請求頭 }, //消息推送相關參數 關註pushplus微信公眾號可以獲得一對一推送的調用參數,不是推廣 pushPlus: { url: `http://www.pushplus.plus/send`, //微信推送URL token: `這個是pushplus裡面獲取的token,關註公眾號然後打開官網找到一對一推送就可以拿到token瞭`, //沒有廣告啊,這是免費的 } }
這個文件內需要修改內容主要是cookie
和token
,分別用於掘金接口請求和wx消息推送,如果不需要使用wx消息推送直接在pushMsg
函數的第一行加一行return;
就可以瞭。
這裡cookie
直接登錄PC端掘金,按F12打開控制臺,去network,然後點一下頁面的一些交互,就能捕獲到請求,然後在裡面找到cookie
然後復制過來就行瞭,如下圖。
wx消息推送的token
獲取方法直接在wx上搜pushplus
的公眾號,然後關註後激活消息推送,去官網拿到token添到文件裡面即可(這裡不是廣告啊!看大佬博客借鑒的,還是挺好用的 ─━ _ ─━✧)。
最後進行代碼編寫 (index.js
)
這裡簡要摘出一部分來說吧,整個代碼放上來太多瞭,主要就放簽到和定時任務這一部分吧,整個項目我會上傳到Github和Gitee上,歡迎大傢下載學習(可以的話,給個star也行(・ω<)☆)。
//需要使用的包文件 const axios = require("axios"); const schedule = require("node-schedule"); //相關參數保存在文件內 const { nuggets, pushPlus } = require("./config"); /** * 獲取當前時間的格式化時間 * @param {String} key 調用js日期函數字符串 * @returns 當前時間格式化的字符串 */ const getNowTime = (key) => { let nowTime = ``; try { nowTime = new Date()[key](); } catch (e) { nowTime = `獲取時間函數錯誤!`; console.error(`請傳入日期函數 —— ${e}`); } return nowTime; } /** * 掘金自動簽到 請求方法 */ const hacpaiSignRequest = async () => { console.log(`\n\n------${getNowTime(`toLocaleDateString`)} - 開始簽到------\n`); const { headers, signInUrl } = nuggets; //簽到相關參數 const res = await axios({ url: signInUrl, method: `post`, headers, }); if (res && res.data) { let jsonMsg = JSON.stringify(res.data); console.log(`\n ${jsonMsg} \n \n ------ ${getNowTime(`toLocaleTimeString`)} 簽到成功 ------\n`); pushMsg(`掘金簽到結果`, res.data); //簽到成功後推送消息 //簽到成功後,30s內查詢免費抽獎次數 setTimeout(() => { freeCheck(); }, Math.random() * 30 * 1000) } else { console.log(res); console.log(`\n ------ ${getNowTime(`toLocaleTimeString`)} 簽到失敗 ------ \n`); pushMsg(`掘金簽到結果`, { '簽到失敗': res.data }); //簽到成功後推送消息 } } //定時觸發任務 const signTask = () => { //每天在6:00-6:10隨機簽到 schedule.scheduleJob("0 0 6 * * *", () => { setTimeout(() => { hacpaiSignRequest(); //簽到函數 }, Math.random() * 10 * 60 * 1000) }) } //開始執行任務 console.log(`開始執行任務-${getNowTime('toLocaleString')}`); signTask();
這裡代碼不能直接使用,因為有些函數沒有放上去,這裡編寫邏輯主要就是簽到—》查詢免費抽獎次數—》抽獎,這個流程,每天6:00-6:10內任意一個時段隨機觸發(害怕寫死被當成機器人!!!∑(゚Д゚ノ)ノ)。代碼還是挺好寫的,主要把需求邏輯理順,然後找到相關的接口就行,最後不管用什麼請求包,隻要是http請求就可以完成這些功能。
最後在cmd
窗口內輸入node index.js
就可以執行代碼瞭,然後一直放在穩定的環境中運行就行瞭(我直接扔服務器٩(๑❛ᴗ❛๑)۶)。
本文主要使用瞭wx消息推送,如果各位看官有需要郵箱消息推送的需求可以在評論區告訴我,我可以之後再寫一篇關於使用node
進行郵箱消息推送的文章,感謝大傢支持!(自己想寫就寫唄!還說出來!ヾ(•ω•`。))
五、總結以及想說的話
剛開始想著這個應該可能有點難做,但實際接觸後發現也沒有那麼難寫,主要還是需要克服自己心理上的障礙,克服懶惰以及不想幹的情緒,我希望能找回大學時候的那種感覺,不管能不能做成,先硬著頭皮接下來,總會有辦法解決的,大不瞭多花一些時間,相信隻有這樣才能讓自己成長,繼續加油吧!小D!還有正在讀這篇博客的同學,大傢也要一起加油喲!( ̄▽ ̄)/
六、相關源碼和借鑒的博客
源代碼
gitee AutomaticCheck-inJueJin
github: AutomaticCheck-inJueJin
借鑒過的文章 大佬們的博客(順序不分先後(*❦ω❦)):
掘金免漏簽!自動簽到&自動免費抽獎
一百行代碼實現!雲函數版掘金自動簽到&抽獎&郵件提醒~
🎉 幾行代碼實現掘金自動簽到+微信推送 再也不怕漏簽瞭
雲函數定時觸發掘金社區:自動簽到 、自動免費抽獎 🔥🔥
掘金簽到總是忘記?node自動簽到來幫你
到此這篇關於node腳本實現自動化簽到和抽獎功能的文章就介紹到這瞭,更多相關node自動簽到抽獎內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Node使用koa2實現一個簡單JWT鑒權的方法
- 如何利用Node.js做簡單的圖片爬取
- Node.js 中使用fetch 按JSON格式發post請求的問題解析
- Vue項目中封裝axios的方法
- vue中axios封裝使用的完整教程