メインコンテンツへスキップ
見出し画像

ゲーム攻略サイトをとってきたい(その2)

    この投稿は次の投稿の続編です。

    なんかちがうっぽい

    「curl」を使えば攻略サイトのHTML内容を取ってこれることが分かった。
    でも、いちいちコマンドを入力するのは、かなり面倒。
    ひとつの策としては「バッチ」をつくればいいのだろうけど、自動化というイメージではちょっと違う気がした。

    代行業者をつくろう!

    そもそも、なんで「CORS」という仕様なのかというと、
    ・自作のWebアプリをブラウザで動かして
    ・そこから「fetch」を実行した場合に
    ・依頼先(攻略サイト)がデータ取得をWebアプリ間では許してくれない
    ということなので。
    Webアプリを動かしているデバイスに代行する仕組みを用意して、代行先に依頼すればいいという。

    代行業者のしくみ

    javascriptで実装し、nodeで動かすアプリを作る前提で。
    代行業者を「express」というパッケージを使ってつくっていく。
    ちなみに、「express」は、こんな感じでインストールするとのこと。
    npm install express open

    依頼を許可する

    代行業者がWebアプリからの依頼を許可する必要があるらしい。
    こんな感じで、代行業者が依頼を許可する。

    const express = require('express');
    const app = express();
    app.use((req, res, next) => {
        res.header("Access-Control-Allow-Origin", "*");
        res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        next();
    });

    代行業者「server.js」

    あとは、受付窓口と受付内容の処理を実装していく。

    受付窓口の形式指定

    //フォルダをブラウザに見せる
    app.use(express.static('public'));
    //"application/json" の生データを、オブジェクトに変換して req.body に格納する
    app.use(express.json());

    代行業者「server.js」

    受付窓口の開通

    app.listen(3000, () => {
    console.log("受付開始しました!");
    });

    代行業者「server.js」

    各受付内容の部署

    app.get('/hello', (req, res) => {
        //Webアプリから「/hello?name=だれですか?」みたいに送られた文字をキャッチする!
        console.log("hello きた~! http://localhost:3000");
        const name = req.query.name || "ごお~!";
        res.send({ status: `おうむがえし!:${name}` });
    });

    代行業者「server.js」

    代行業者への受付確認

    こっちも javascript で、こんな感じで実装し、nodeで実行する。

    async function hello() {
        console.log("代行業者へ仕事依頼を送ります");
        try {
            const response = await fetch('http://localhost:3000/hello');
            const result = await response.json();
            console.log("サーバーからの応答:", result.status);
        } catch (error) {
            console.error("サーバーが応答しません!", error);
        }
    }

    (async () => {
        await hello();})();
    }

    依頼元「client.js」

    確認

    代行業者を先に起動する
    node.exe server.js
    そして、依頼元を起動する
    node.exe client.js

    次回は


    curl窓口を作ろうと思う。
    つづく。

    あなたへのおすすめ