@historydev
Острая аллергия на анимешников

Почему возникает ошибка протокола и как её исправить?

Доброе утро. скажите пожалуйста, вне зависимости от ответа сервера, меня выкидывает из браузера с ошибкой протокола:


UnhandledPromiseRejectionWarning: Error: Protocol error (Runtime.callFunctionOn): Target closed.


Я не нашёл примера автоматизированной смены ip с папитером, но нашёл tor-reques, комментированный код, это идеально работающий парсинг со сменой ip, но в ответ приходит целая страница текстом, я не могу работать с ней как с папитером допустим через селектор. Я решил объеденить их:

const { puppeteer } = require('../modules/packages');

const torridest = require('tor-request');
torridest.TorControlPort.password = 'mySuperPassword';

app.get('/scrap', (req, res) => {
    res.sendFile(`${staticPath}/www/scrap.html`)
});

async function Scrap(query, type) {

    // return new Promise((resolve, reject) => {
    //
    //     torridest.request(`https://www.rusprofile.ru/search?query=${encodeURI(query)}&type=${type || 'ul'}`, async (err, res, body) => {
    //
    //         if(!err && res.statusCode === 200 && body !== null) {
    //
    //             console.log(body);
    //
    //             resolve(body);
    //
    //
    //         } else {
    //
    //             await torridest.renewTorSession(async (err, msg) => {
    //                 if (msg) {
    //                     await Scrap(query, type);  // Этот код обновляет сессию тора и меняет ip
    //                 }
    //             });
    //
    //         }
    //
    //     });
    //
    // });

    const browser = await puppeteer.launch({
        /**
         * Use the default headless mode (don't show the browser).
         */
        headless: false,
        args: ['--proxy-server=socks5://127.0.0.1:9050']
    });

    const page = await browser.newPage();

    await page.goto(`https://www.rusprofile.ru/search?query=${encodeURI(query)}&type=${type || 'ul'}`, { waitUntil: 'domcontentloaded' });

    console.log(1);

    const result = page.evaluate(() => {

        console.log(document.querySelector('body'));

        return document.querySelector('.main-wrap') !== null ? console.log(document.querySelector('.main-wrap').innerHTML) : false;

    });

    page.on("error", function(err) {

        console.log('err');

        torridest.renewTorSession((err, msg) => {

            if (msg) {
                Scrap(query, type);
            }
        });

    });

    browser.close();

    return result

}

app.post('/scrap', (req,res) => {

    torridest.renewTorSession(async (err, msg) => {
        if (msg) {
            let companyGroup = {
                body: await Scrap(req.body.query, req.body.type)
            };

            console.log(companyGroup);

            res.send(companyGroup);
        }
    });

});


Но на выходе получаю ошибку и закрытие браузера в чём может быть причина? Спасибо
  • Вопрос задан
  • 269 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы