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

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

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

推薦する

MySQLの遅いクエリ問題の詳細な分析データ送信

例を通して、MySQL のデータ テーブル送信のクエリが遅い問題の解決策を共有しました。最近、コード...

オンライン MYSQL 同期エラーのトラブルシューティング方法の概要 (必読)

序文フェイルオーバーが発生した後、よくある問題は同期エラーです。データベースが小さい場合は、ダンプし...

MySQL で 1 つのテーブルのフィールドを使用して別のテーブルのフィールドを更新する方法

1. 1列を変更する 学生の更新、都市c s.city_name = c.name を設定します こ...

koa2 サービスに SSL を設定する方法

I. はじめに1: SSL証明書私のドメイン名は Tencent Cloud にあります。第 3 レ...

MySQLでANDとORを組み合わせる問題を解決する

以下のように表示されます。 SELECT prod_name,prod_price FROM pro...

Dockerでイメージ情報を表示する方法

この記事では、Dockerでイメージ情報を表示する方法を学ぶ必要があります。 1. imagesコマ...

CSSでフレックス配置を表示する(レイアウトツール)

display: flex レイアウトに関しては、深く理解している人もいますし、私も他の人の作業か...

MySQL ステートメントロックの実装の分析

概要: 2 つの MySQL SQL ステートメント ロックの分析次のSQL文にどのようなロックが追...

JavaScript タイマーの種類の概要

目次1.setInterval() 2.タイムアウトを設定する() 1.setInterval()指...

Nginx+ModSecurity セキュリティモジュールの導入

目次1. ダウンロード2. 展開1.Nginxのデプロイメント2. ModSecurityの展開3....

HTML でフォームを中央揃えにする

以前、写真が与えられ、その写真スタイルに基づいてフォームを作成するという課題に遭遇しました。しかし、...

MySQL InnoDB ロック メカニズムの詳細な例

1. InnoDBのロック機構InnoDB ストレージ エンジンは、行レベルのロックとトランザクショ...

Linux で Squid プロキシ サーバーを構築するための完全な手順

序文この記事では、Linux で Squid プロキシ サーバーを設定することに関する関連コンテンツ...

MySQL 8.0.20でNavicatをインストールして接続する方法と注意すべき点

注意事項1. まず、mysql インストール ディレクトリに次の内容の my.ini ファイルを作成...