web-dev-qa-db-ja.com

Node JS HTTPプロキシがハングアップ

任意のWebサイトをプロキシし、クライアントにHTMLを提供する前にカスタムJSファイルを挿入するhttp-proxyがあります。プロキシされたWebサイトにアクセスしようとすると、いつでもハングアップするか、ブラウザが不確定にロードされるようです。しかし、HTMLソースを確認したところ、カスタムJavaScriptファイルを正常に挿入できました。これがコードです:

const cheerio = require('cheerio');
const http = require('http');
const httpProxy = require('http-proxy');
const { ungzip } = require('node-gzip');

_initProxy(Host: string) {
    let proxy = httpProxy.createProxyServer({});
    let option = {
        target: Host,
        selfHandleResponse: true
    };

    proxy.on('proxyRes', function (proxyRes, req, res) {
        let body = [];
        proxyRes.on('data', function (chunk) {
            body.Push(chunk);
        });
        proxyRes.on('end', async function () {
            let buffer = Buffer.concat(body);
            if (proxyRes.headers['content-encoding'] === 'gzip') {
                try {
                    let $ = null;
                    const decompressed = await ungzip(buffer);
                    const scriptTag = '<script src="my-customjs.js"></script>';
                    $ = await cheerio.load(decompressed.toString());
                    await $('body').append(scriptTag);
                    res.end($.html());
                } catch (e) {
                    console.log(e);
                }
            }
        });
    });

    let server = http.createServer(function (req, res) {
        proxy.web(req, res, option, function (e) {
            console.log(e);
        });
    });

    console.log("listening on port 5051");
    server.listen(5051);
}

私が何か悪いことをしている場合、誰かが教えてもらえますか?node-http-proxyは非常に死んでいるように見え、プロキシはときどき動作し、次の実行時に何回か死ぬことがあるので、それに頼ることはできませんサーバーを実行しました。

7
Nizar B.

私は小さなPythonサーバーをCherryPyを使用して作成し、ウェブアプリケーションをmitmproxyでプロキシしました。すべてがスムーズに機能しています。node-http-proxyで間違っていたのかもしれませんが、懐疑的になりました本番環境での使用について。

0
Nizar B.