Доброе утро. скажите пожалуйста, вне зависимости от ответа сервера, меня выкидывает из браузера с ошибкой протокола:
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);
}
});
});
Но на выходе получаю ошибку и закрытие браузера в чём может быть причина? Спасибо