Как выполнить команду в терминале из браузера?

Есть программа которая собирает данные с сайте по критериям и для того что бы не менять данные на backend я решил залить это все в верстку (что бы критерии добавлялись через input) она написана на puppeteer

const puppeteer = require('puppeteer');
const {
    promisify
} = require('util');

const credentials = {
    login: '[email protected]', //! тут должен быть записан твой логин
    password: 'alex07112005' //! а здесь пароль
};

(async () => {
    try {
        await spy();
        process.exit(0);
    } catch (err) {
        console.error(err);
        process.exit(1);
    }
})();

async function spy() {
    const browser = await puppeteer.launch({
        headless: true
    });

    const page = await browser.newPage();
    await page.goto(
        'https://etfdb.com/members/login/', {
            waitUntil: 'networkidle2',
            timeout: 0
        }
    );
    await page.click('#user_login');
    await page.keyboard.type(credentials.login);
    await page.click('#password');
    await page.keyboard.type(credentials.password);
    await page.click('#login-button');

    await promisify(setTimeout)(2000);

    const etfData = await page.evaluate(async () => {
        const sleep = (timeout = 500) => new Promise((r) => setTimeout(r, timeout));

        let resultData = [];

        //! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!

        const structure = 'ETF', 
        dividend = 'Monthly';

        //! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!


        const fetchBody = {
            structure: [structure],
            dividend_frequency: [dividend],
            only: ['meta', 'data', 'count']
        };

        const fetchOptions = {
            method: 'post',
            headers: {
                'Content-Type': 'application/json',
                'Access-Control-Allow-Origin': '*',
                'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS'
            },
        };

        for (let i = 1, curr = 1; i <= curr; i++) {
            try {
                fetchBody.page = i;
                const res = await fetch(
                    'https://etfdb.com/api/screener/', {
                        ...fetchOptions,
                        body: JSON.stringify(fetchBody)
                    }
                );

                const json = await res.json();

                if (json) {
                    if (json.data && Array.isArray(json.data)) {
                        resultData = resultData.concat(json.data);
                    }
                    if (json.meta && 'total_pages' in json.meta && +json.meta.total_pages > 0) {
                        curr = +json.meta.total_pages;
                    }
                }

                await sleep(); // на всякий случай, вдруг там ограничение по количеству запросов
            } catch (err) {
                console.error(err);
            }
        }

        return resultData;
    });

    await browser.close();
    //! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    const filteringOverallRating = ['A+', 'B+']; //! тут записываешь рейтинги в верхнем регистре
    //! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    const etfABData = etfData.filter(({
        overall_rating
    }) => filteringOverallRating.includes(overall_rating));
    
    Object.keys(etfABData).forEach(function (i) {
        etfABData[i].symbol.text = "_" + etfABData[i].symbol.text + ",";
        console.log(etfABData[i].symbol.text)
    })
    console.log(`total items = ${etfData.length}, filtered items = ${etfABData.length}`);
    
}

и когда мне нужно что бы код заработал я пишу команду npm strat в терминале своего редактора но вопрос в том как это сделать в хром где доступа к терминалу нет


Ответы (0 шт):