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

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

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を描く

推薦する

Vue-cli4 ルーティング構成の詳細な理解

目次序文 - Vue ルーティング1. 最も基本的なルーティング構成1. router/index....

一般的な JavaScript 文字列メソッド 28 個と使用方法のヒントのまとめ

目次序文1. 文字列の長さを取得する2. 文字列の指定された位置の値を取得する(1) charAt(...

ウェブサイトのパフォーマンスを向上させるために画像を最適化する方法

目次概要画像圧縮とはJPEG/JPG JPGの利点JPGの使用シナリオJPGの欠点MozJPEG を...

Linux (CentOS7) に Tomcat をインストールし、Tomcat をスタートアップ項目として設定します (tomcat8 を例に挙げます)

目次TomcatをインストールするTomcat 圧縮パッケージをダウンロードTomcatには3つの主...

一般的なMySQLストレージエンジンの長所と短所

目次すべてのストレージエンジンを表示InnoDB ストレージ エンジンMyISAM ストレージエンジ...

MySQLデータ内の多数の改行と復帰に対する解決策

目次問題を見つける1. 改行と復帰を削除する方法2. SELECTクエリで「改行と復帰」を無視する方...

Vue3.0 は虫眼鏡効果のケーススタディを実装します

達成される効果は、固定ズームが 2 倍になり、マウスが左側の画像領域に入るとマスク レイヤーが表示さ...

Node の SMS API で検証コード ログインを実装するためのサンプル コード

1. ノードサーバーのセットアップ + データベース接続ここでの操作は比較的簡単でわかりやすいです。...

Vue 値転送の 12 の方法の概要

目次1. 父から息子へ2. 息子から父へ3. ブラザーコンポーネント通信(バス) 4. ref/re...

【HTML要素】タグテキストの詳細説明

1. 基本的なテキスト要素を使用してコンテンツをマークアップするまず表示効果を見てみましょう:対応す...

MySQL ストアド プロシージャで if ステートメントを使用する詳細な例

この記事では、例を使用して、MySQL ストアド プロシージャでの if ステートメントの使用方法を...

n 個のコンテナ要素による無限スクロールの実装コード

シナリオ最大 10000 要素のリストを正しくレンダリングする方法。無限ドロップダウン読み込みテクノ...

Vue 初心者ガイド: 環境の構築と開始方法

目次初期ビューVue開発環境の構築Vueインスタンスの作成Vue テンプレート構文Vue データバイ...

Tomcat 例外の解決方法 (リクエスト ターゲットに無効な文字が見つかりました。有効な文字は RFC 7230 および RFC 3986 で定義されています)

1. シナリオ表示Tomcat ログに次の例外情報が時々報告されます。何が起こっているのでしょうか...

html mailto(メール)の実用化について

ご存知のとおり、mailto は Web デザインと制作において非常に実用的な HTML タグです。...