ノードスクリプトで自動サインインと抽選機能を実現

ノードスクリプトで自動サインインと抽選機能を実現

1. はじめに

サインインアクティビティを開始して以来、ナゲットはこの機能を継続的に改善しています。 (๑`^´๑)鉱石はw(主に運に依存していません(•̀ω•́)✧)。サーバープラスノードタイミングスクリプト自動サインインと宝くじ機能を実現します。方向性が決まった後、記事を探し始めたので、直接自動簽到キーワードで検索し、記事を一つずつ読み始めてから、自分で実装し始めました。それでは、早速、自動サインインと抽選の実装方法を見ていきましょう。

2. 準備

サーバ

私はたくさんの記事を読みましたが、基本的にそれらはすべてリクエスト パッケージとスケジュールされたタスク トリガー パッケージを使用して実装しています。また、Treasure Monkey スクリプト、クラウド関数、ノード スクリプトを使用しているものもいくつか見てきましたが、これらは基本的にすべてをカバーしています。しかし、何を使用しても、アイデアと呼び出しインターフェースは同じであるため、この記事ではクラウド サーバーをベースとしており、クラウド サーバーまたはインターネットに接続され、24 時間シャットダウンされないコンピューターが必要です。

ノード環境

これについてはあまり言及しません。ノード環境のインストールはオンラインで利用可能ですが、誰もがインストールしているはずです。環境を整えた後、プロジェクトの構築を開始しました。

3. スクリプトプロジェクトの構築

フォルダを作成し、プロジェクト名を記入します(ランダムな名前を付けてください( ̄▽ ̄)/)

cmdと入力

次に、フォルダーの下の DOS ウィンドウ (cmd) を開くか、 VsCodeを使用してフォルダーを開きます。

DOSを開く

ウィンドウにnpm initと入力し、Enter キーを押してpackage.jsonファイルを生成します。

プロジェクトを初期化する

次に、 axiosnode-scheduleの 2 つのパッケージを準備し、次のようにインストールします。

 npmとaxios
npm とノードスケジュール

インストールが完了すると、次の図が表示されます。

パッケージのインストール

次に、コードとパラメータの書き込み用に、ルート ディレクトリにindex.jsファイルとconfig.jsファイルを作成します。

ファイルの追加

この時点で、 nodeスクリプト プロジェクト ファイル全体が構築され、次のステップはコードの記述です。

4. コードの作成と実行

まず、使用されるパラメータをファイルconfig.js )に抽出します。

 //config.js
//今日のサインインが成功したかどうかを照会します。API: https://api.juejin.cn/growth_api/v1/get_today_status
モジュール.エクスポート = {
  // ナゲット関連のパラメータ 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`, //宝くじインターフェースヘッダー: {
      リファラー: "https://juejin.cn/",
      「アップグレード-安全でないリクエスト」: 1,
      「ユーザーエージェント」: 「Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML、Gecko など) Chrome/55.0.2883.87 Safari/537.36」、
      Cookie: `ここに独自の Cookie を入力し、Nuggets Web バージョンにログインし、コンソールのネットワークを開き、リクエストをランダムに見つけ、リクエスト ヘッダーの Cookie をチェックしてコピーします`、//独自のものを使用する}、//関連するリクエスト ヘッダー}、
  //メッセージプッシュ関連のパラメータ pushPlus WeChatパブリックアカウントをフォローして、1対1のプッシュコールパラメータを取得します。pushPlusを宣伝するためではありません: {
    url: `http://www.pushplus.plus/send`, //WeChatプッシュURL
    token: `これはPushPlusから取得したトークンです。公式アカウントをフォローし、公式ウェブサイトを開いて1対1のプッシュを見つけることでトークンを取得できます。`, //広告なし、無料です}
}

このファイルで変更する必要がある内容は主に、それぞれ Nuggets インターフェース リクエストと wx メッセージ プッシュに使用されるcookietokenです。wx メッセージ プッシュを使用する必要がない場合は、 pushMsg関数の最初の行にreturn;の行を追加するだけです。

ここではcookie Nuggets の PC バージョンに直接ログインし、F12 キーを押してコンソールを開き、ネットワークに移動して、ページ上のいくつかのインタラクションをクリックしてリクエストをキャプチャし、その中のcookieを見つけてコピーします (下の図を参照)。

クッキーを取得する

wx メッセージプッシュのtokenを取得するには、wx でpushplus公式アカウントを検索し、フォローしてメッセージプッシュを有効化し、公式 Web サイトにアクセスしてトークンを取得してファイルに追加するだけです (これは宣伝ではありません! 大物のブログ投稿で知りましたが、かなり便利です─━ _ ─━✧)。

最後に、コードindex.js )を記述します。

ここでは一部を簡単に抜粋します。コード全体を載せるのは長すぎるので、サインインとスケジュールタスクの部分を中心に載せます。プロジェクト全体を Github と Gitee にアップロードしますので、どなたでもダウンロードして勉強していただけます(できればスターを付けてください (・ω<)☆)。

 //必要なパッケージファイル const axios = require("axios");
const スケジュール = require("ノードスケジュール");
//関連パラメータはファイルに保存されます const { nuggets, pushPlus } = require("./config");

/**
 * 現在の時刻のフォーマットされた時間を取得します * @param {String} key js date関数文字列を呼び出します * @returns 現在の時刻のフォーマットされた文字列 */
const getNowTime = (キー) => {
  nowTime = ``; とします。
  試す {
    nowTime = 新しいDate()[キー]();
  } キャッチ (e) {
    nowTime = `時間関数の取得中にエラーが発生しました! `;
    console.error(`日付関数を渡してください——${e}`);
  }
  nowTime を返します。
}

/**
 * ナゲット自動サインインリクエストメソッド */
定数hacpaiSignRequest = 非同期() => {
  console.log(`\n\n------${getNowTime(`toLocaleDateString`)} - サインインを開始します------\n`);
  const { headers, signInUrl } = nuggets; //サインイン関連のパラメータ const res = await axios({
    url: サインインURL、
    メソッド: `post`,
    ヘッダー、
  });
  (res && res.data)の場合{
    jsonMsg を JSON.stringify(res.data); とします。
    console.log(`\n ${jsonMsg} \n \n ------ ${getNowTime(`toLocaleTimeString`)} サインインに成功しました------\n`);
    pushMsg(`Nuggets sign-in result`, res.data); //サインイン成功後にメッセージをプッシュ //サインイン成功後、30秒以内に無料抽選の数を確認する setTimeout(() => {
      フリーチェック();
    }, Math.random() * 30 * 1000)
  } それ以外 {
    コンソールログ(res);
    console.log(`\n ------ ${getNowTime(`toLocaleTimeString`)} サインインに失敗しました------ \n`);
    pushMsg(`Nuggets サインイン結果`, { 'サインイン失敗': res.data }); //サインイン成功後にメッセージをプッシュします}
}

//時間指定トリガータスク const signTask = () => {
  //毎日6:00~6:10の間にランダムにサインインする schedule.scheduleJob("0 0 6 * * *", () => {
    タイムアウトを設定する(() => {
      hacpaiSignRequest(); //サインイン関数}, Math.random() * 10 * 60 * 1000)
  })
}

//タスクの実行を開始します console.log(`タスクの実行を開始します - ${getNowTime('toLocaleString')}`);
タスクに署名します。

ここのコードは、いくつかの機能が組み込まれていないため、そのまま使用することはできません。ここに書かれているロジックは主にサインイン -> 無料抽選回数の照会 -> 抽選です。このプロセスは、毎日 6:00-6:10 の間の任意の時間にランダムにトリガーされます (ハードコードされてロボットとみなされるのではないかと心配です!!!∑(゚Д゚ノ)ノ)。コードの記述は非常に簡単です。主に、要求ロジックを整理し、関連するインターフェイスを見つけるだけです。最後に、どのリクエスト パッケージを使用しても、http リクエストであれば、これらの機能を完了できます。

最後に、 cmdウィンドウにnode index.jsと入力してコードを実行し、安定した環境で実行するだけです (サーバーに直接投入します٩(๑❛ᴗ❛๑)۶)。

この記事では主に wx メッセージ プッシュを使用します。電子メール メッセージ プッシュに関するご要望がございましたら、コメント欄でお知らせください。後ほど、電子メール メッセージ プッシュにnodeを使用する方法について別の記事を書く予定です。ご協力ありがとうございます。 (書きたいことを書いて!声に出して言ってみよう!ヾ(•ω•`。))

5. まとめと言いたいこと

最初はちょっと難しいかなと思いましたが、実際にやってみると、書くのはそれほど難しくないことがわかりました。主に、自分の心理的な障壁、怠惰、やる気のなさを克服する必要があります。大学時代の感覚を取り戻したいと思っています。できるかどうかは関係なく、とにかく勇気を出してやります。解決方法は必ずあります。ただ、時間がかかるだけです。この方法でのみ、自分を成長させることができると信じています。頑張ってください!リトルD!そしてこのブログを読んでくださっている皆さんも、ぜひ一緒に頑張ってください! ( ̄▽ ̄)/

6. 関連するソースコードと参考ブログ

ソースコード

gitee 自動チェックインJueJin

github: 自動チェックインJueJin

お借りした記事の作者さんのブログ(順不同(*❦ω❦)):

ナゲッツは契約を逃さない!自動サインインと自動無料抽選

それを実現するには 100 行のコードが必要です。ナゲットの自動サインインと抽選とメールリマインダーのクラウド機能バージョン〜

🎉 数行のコードで自動サインイン+WeChatプッシュを実現。サインインを忘れる心配はもうありません

クラウド機能は定期的に金採掘コミュニティをトリガーします:自動サインイン、自動無料抽選🔥🔥

ナゲッツはいつもサインインを忘れますか? Nodeは自動的にサインインしてあなたを助けます

ノードスクリプトを使用して自動サインインと抽選機能を実現する方法についての記事はこれで終わりです。ノード自動サインインと抽選の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM を応援してください。

以下もご興味があるかもしれません:
  • Node.js WeChatパブリックアカウント開発の詳細説明——4. さまざまなメッセージに自動的に返信する
  • nodejs express がプロジェクトフレームワークを自動的に生成する方法の詳細な説明
  • Node.jsをサポートし、自動的に完了するようにWebstormを構成する方法
  • ノード自動展開方法
  • Node.js 自動 FTP アップロード スクリプト共有
  • docker+jenkins+node.js の自動デプロイメント環境をゼロから構築する方法
  • nodejs を使用して JSON ファイルを Excel に自動変換するツール (推奨)

<<:  nginx でのリクエストのカウント追跡の簡単な分析

>>:  CSS3に基づいてiPhoneを描く

推薦する

Dockerコンテナでyumを呼び出すときのエラーの解決方法

dockerfile またはコンテナ内で yum を実行すると、エラーが報告され、ソースが見つかりま...

効率をN倍に高めるVimクイックリファレンステーブル15個

昨年の前半から開発と娯楽のために Linux を使い始めましたが、今では Windows には戻れま...

React Hooks の一般的な使用シナリオ (概要)

目次1. ステートフック1. 基本的な使い方2. 更新3. 合併を実現する4. 遅延初期化状態5. ...

MySQL 5.6.36 Windows x64 バージョンのインストールチュートリアルの詳細

1. 対象環境Windows 7 64ビット2. 材料(1)VC++2010リリースパッケージ(64...

HTMLの基本構文は、HTMLを学び始めたばかりの人にとって便利です。

1.1 一般的なマーキング一般的なタグは開始タグと終了タグで構成されます。構文は次のとおりです: ...

JavaScript ES 新機能ブロックスコープ

目次1. ブロックスコープとは何ですか? 2. ブロックスコープが必要なのはなぜですか? 3. 関数...

Alibaba Cloud Server に MySQL データベースをインストールする詳細なチュートリアル

目次序文1. MySQLをアンインストールする2. MySQLをインストールする要約する序文学習中に...

Git サーバーを使用してデバッグ ブランチを表示し、修正する方法を 1 日 1 分で学習します。

デバッグブランチプロジェクトの通常の開発中に、以前にリリースされたバージョンにバグがある場合がありま...

Element-UIの10の驚くべきトリックのまとめ

目次el-scrollbar スクロールバーel-uploadはクリックをシミュレートしますel-s...

MySql インデックス使用戦略の分析

MySql インデックスインデックスの利点1. 一意のインデックスまたは主キー インデックスを作成す...

TeamCenter12 にログインする際の 404/503 問題の解決方法

TeamCenter12はアカウントのパスワードを入力し、ログインをクリックすると、404または50...

レスポンシブデザインについて知っておくべきこと

レスポンシブデザインとは、ウェブサイトの開発プロセス中に、ユーザーの操作やデバイス環境に応じて対応す...

CSS における px、em、rem、pt の特徴、違い、変換について詳しく説明します。

コンセプト紹介: 1. px (ピクセル):仮想的な長さの単位で、コンピュータ システムのデジタル画...

VUEはG2チャートを使用した実装を導入します

目次G2チャートについて使用テンプレートで使用される完全なコード (棒グラフ)世界地図を追加するG2...

MySql8 WITH RECURSIVE 再帰クエリ親子コレクションメソッド

背景コメントに似た機能を開発する場合は、必要に応じてすべてのコメントのサブセットをクエリする必要があ...