#javascript #node.js #puppeteer
Вопрос:
Ну, ребята, у меня есть этот скрипт, который добавляет товар в корзину, но мне нужно, чтобы он работал как можно быстрее, в настоящее время он работает около 19 секунд, если вы запустите этот код, конечно, есть ряд факторов, которые следует учитывать, один из них-время отклика сайта и все такое … Ну, я взял почти все ресурсы на этом сайте, чтобы быстрее загружаться
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/ResourceType
Но я не удалял загрузку скрипта (javascript), но я хочу удалить весь javascript со страницы, кроме того, что встроено в html, то есть я хочу запретить все ссылки на файлы javascript, кроме javascript, который вставлен в html, и я хотел бы знать, можно ли отключить загрузку текста html, это мой код:
const puppeteer = require('puppeteer');
const fs = require('fs').promises;
(async () => {
try{
console.log("Started!")
const browser = await
puppeteer.launch({
executablePath:'/usr/bin/chromium',
headlesss:false,
});
const page = await browser.newPage();
await page.setViewport({ width: 1920, height: 1080 });
await page.setRequestInterception(true);
const blockedResourceTypes = ["image", "bacon", "imageset", "font", "stylesheet", "main_frame", "sub_frame", "object", "texttrack", "csp_report"]
const allowedRequest = req => !blockedResourceTypes.includes(req.resourceType())
page.on('request', (req) => {
if (allowedRequest(req)) {
req.continue();
}
else {
req.abort();
}
});
const cookiesString = await
fs.readFile('./cookies.json');
const cookies = JSON.parse(cookiesString);
await page.setCookie(...cookies);
await page.goto('https://www.nike.com.br/chuteira-nike-phantom-gt-elite-3d-unissex-153-169-171-316414?gridPosition=A1', { waitUntil: 'load', timeout:0});
await page.waitForXPath('//label[@for="tamanho__idM40F395"]', { visible:true, timeout:0});
const tamanho = await page.$x('//label[@for="tamanho__idM40F395"]')
await tamanho[0].click('//label[@for="tamanho__idM40F395"]');
await page.waitForSelector('button#btn-comprar')
await page.click('button#btn-comprar')
console.log("Add to car!")
}
catch{
console.log("Error, element not found or unexpected error")}
})();
Как я могу удалить весь javascript, кроме javascript, встроенного в html?
Комментарии:
1. Я видел несколько вопросов по этому поводу от вас, и у меня есть ощущение, что вы пытаетесь решить какую-то основную проблему. Вы уверены, что это не проблема xy ? Разве почти все сценарии, которые загружает страница, не будут встроены в HTML? Это кажется довольно произвольным решением блокировать динамически вводимый JS, но не статически присутствующий скрипт-можете ли вы объяснить, почему вы принимаете это решение и какую цель это должно выполнять для вашего приложения? Спасибо.
2. Мой скрипт полностью готов, единственное, что я хочу, наконец, закончить, — это убедиться, что выполняется только javascript, встроенный в html, и, если возможно, удалить загрузку некоторых html-тегов, мой скрипт уже работает, проблема в том, что он запускается за 18 или 19 секунд, и я хочу сделать это быстрее, вот почему
3. Сценарий готов, я просто хочу его улучшить
4. Звучит неплохо, я думал, что что-то вышло из строя или как-то иначе сломалось. Спасибо за разъяснение.
Ответ №1:
Мне удалось заблокировать все файлы с расширением .js после того, как я внимательно изучил Google, я использовал этот код:
req.url().endsWith('.js')
А затем после этого я использую if, чтобы создать структуру условий и сообщить своему коду, должен ли он загружаться или прерываться, с req.continue
или req.abort