👨‍💻
то и значит, запрещены. Владелец чата ограничил стикеры, гифки и прочие
Null
А, я думал ты про браузер. 😄
👨‍💻
Null
А что ты хочешь сделать? Ты же можешь скрыть канвас и нагрузка снизится.
👨‍💻
думаю, как заблочить подобное, если это чистым канвасом отрисосыввется
Null
думаю, как заблочить подобное, если это чистым канвасом отрисосыввется
Думаю достаточно display: none. Элемент будет в фоне продолжать работать, т.е. скрипты не сломаются, но нагрузка снизится.
Null
Ну или лучше visibility: hidden, чтобы элемент из потока не выкидывать, чтобы вёрстка не ломалась.
👨‍💻
await page.evaluate(() => { var canvases = document.querySelectorAll('canvas'); canvases.forEach((canvas) => { canvas.style.display = 'none'; }); }); не хочет.. + все равно проходит нагрузка первые доли секунды, как появляется. А прикол в том, что элемент в html появляется не сразу, а только по клику. Я так понимаю, он ренедерится как раз
👨‍💻
а это вот как раз на мои 1x1 картинки.. то есть ошибка где-то срабатывает как раз
Null
Ну понятно что она будет, нужно же создать канвас, потом отрисовать его. И потом апдейтить. Но это самый простой способ снизить нагрузку. Можно конечно его вообще удалить, но тебе придётся отслеживать все обращения к канвасу из кода и вырезать их.
Null
👨‍💻
может перезаписать просто обращение и ничего не возвращать ?
👨‍💻
Тебе нужно под каждый формат свою заглушку создать.
это да, я понимаю. Пофигу. Ошибка и ошибка. работает остальное ведь))
Null
может перезаписать просто обращение и ничего не возвращать ?
Всё зависит от сайта. Он может вообще никак не проверять это, а может при малейшем отклонении на сайт сообщение слать.
👨‍💻
чет этот канвас не хочет блоикроваться
👨‍💻
--disable-2d-canvas тоже не работает..
Null
--disable-2d-canvas тоже не работает..
А где ты взял такой аргумент?
Null
Вот тут список доступных аргументов есть https://peter.sh/experiments/chromium-command-line-switches/.
Null
Попробуй антиалиасинг отключить, может снизит нагрузку. Но полного отключения я нигде не видел.
👨‍💻
ооо чудо
👨‍💻
const argumentsForStart = [ '--disable-canvas-aa', '--disable-2d-canvas-clip-aa', '--disable-2d-canvas-image-chromium', '--disable-accelerated-2d-canvas', '--disable-reading-from-canvas', '--disable-3d-apis', '--disable-webgl', '--disable-webgl-image-chromium', '--disable-webgl2', ] Все анимации убирает, нагрузки прям вообще нет
👨‍💻
тупо до 0 опускается. Годная тема. а то придумают всякие анимации с канвасом, а потом сиди на ведре с гайками отрисовывай их все
Null
const argumentsForStart = [ '--disable-canvas-aa', '--disable-2d-canvas-clip-aa', '--disable-2d-canvas-image-chromium', '--disable-accelerated-2d-canvas', '--disable-reading-from-canvas', '--disable-3d-apis', '--disable-webgl', '--disable-webgl-image-chromium', '--disable-webgl2', ] Все анимации убирает, нагрузки прям вообще нет
--disable-accelerated-2d-canvas Странно что это помогает, оно должно ухудшить ситуацию, потому что ты с графического ядра нагрузку переложил на процессор. Разве что другие опции вообще отключают каким-то образом канвас.
👨‍💻
хотя предупреждения есть какие-то
👨‍💻
но тут хорошо еще понять бы, из-за моей замены подобное или нет
👨‍💻
не, сейчас восстановил стандартный браузер без всего. Ни одной ошибки после отключения
Null
но тут хорошо еще понять бы, из-за моей замены подобное или нет
А если скрин страницы сделать, канвас виден?
👨‍💻
А если скрин страницы сделать, канвас виден?
по логике не должен сделаться скрин, правильно понял ?
Null
Вопрос в том будет ли там канвас и будет ли на нём что-то отрисовываться.
👨‍💻
Вопрос в том будет ли там канвас и будет ли на нём что-то отрисовываться.
не видны они там, вообще никакие канвас элементы не видны
Null
не видны они там, вообще никакие канвас элементы не видны
Странно, запустил с твоими аргументами. У меня виден канвас. Ты точно ничего не добавлял больше?
Null
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: true, args: [ `--user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36`, '--disable-2d-canvas-clip-aa', '--disable-2d-canvas-image-chromium', '--disable-3d-apis', '--disable-accelerated-2d-canvas', '--disable-canvas-aa', '--disable-reading-from-canvas', '--disable-webgl-image-chromium', '--disable-webgl', '--disable-webgl2', ], }); const [page] = await browser.pages(); await page.goto('https://codepen.io/jackrugile/pen/kMWyeM'); await page.screenshot({ type: "png", path: "screen.png", fullPage: true, }); })();
Null
Null
Но вот этот пример уже не показывает: await page.goto('https://fhtr.org/gravityring/sprites.html'); Вместо этого чистый холст.
Null
В общем, какой-то из аргументов всё же ломает скрипты.
Конкретно эту ошибку вызвал аргумент --disable-reading-from-canvas. Кстати, при фингерпринте как раз часто читают канвас, так что это я бы не отключал.
Null
хотя предупреждения есть какие-то
А ты через хедфул проверяешь что ли? Можно напрямую из кода перехватывать сообщения в консоль, чтобы было проще.
Null
page.on('console', async (msg) => { console.log('[console]', { type: msg.type(), text: msg.text(), stack: msg.stackTrace(), }); }); page.on('pageerror', (err) => { console.log('[pageerror]', err); }); page.on('requestfailed', (req) => { console.log('[requestfailed]', req) });
👨‍💻
Но вот этот пример уже не показывает: await page.goto('https://fhtr.org/gravityring/sprites.html'); Вместо этого чистый холст.
я запускаю тестовый браузер от пупетира. Может быть в настоящем хроме не должно показывать ?
👨‍💻
Null
я запускаю тестовый браузер от пупетира. Может быть в настоящем хроме не должно показывать ?
Не думаю что будут отличия в этом. Убедись что ошибок нет в консоли. Думаю иначе он не должен убирать канвас. Это было бы странно.
👨‍💻
Не думаю что будут отличия в этом. Убедись что ошибок нет в консоли. Думаю иначе он не должен убирать канвас. Это было бы странно.
Все ошибки, что в консоли, присутствовали и до того, как аргументы подставлял для браузера. И да, у меня нагрузка падает до 0%. Такого никогда раньше не было. Я более чем уверен, что он убирает все элементы, тем более я глазами вижу отсутствие элементов канваса
Null
Все ошибки, что в консоли, присутствовали и до того, как аргументы подставлял для браузера. И да, у меня нагрузка падает до 0%. Такого никогда раньше не было. Я более чем уверен, что он убирает все элементы, тем более я глазами вижу отсутствие элементов канваса
Так само собой что канваса там нет, потому нагрузка и упала. Вопрос в том, почему это происходит. У меня эти аргументы не убирают канвас. Потому я и предположил что ты отключил что-то, что ломает код и потому канваса нет.
Null
const puppeteer = require('puppeteer'); async function idle(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } (async () => { const browser = await puppeteer.launch({ headless: true, args: [ `--user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36`, '--disable-2d-canvas-clip-aa', '--disable-2d-canvas-image-chromium', '--disable-3d-apis', '--disable-accelerated-2d-canvas', '--disable-canvas-aa', //'--disable-reading-from-canvas', '--disable-webgl-image-chromium', '--disable-webgl', '--disable-webgl2', ], defaultViewport: { width: 1366, height: 768, }, }); const [page] = await browser.pages(); page.on('console', async (msg) => { console.log('[console]', { type: msg.type(), text: msg.text(), stack: msg.stackTrace(), }); }); page.on('pageerror', (err) => { console.log('[pageerror]', err); }); page.on('requestfailed', (req) => { console.log('[requestfailed]', req) }); await page.goto('https://fhtr.org/gravityring/sprites.html'); await idle(1000); await page.screenshot({ type: "png", path: "canvas.png", fullPage: true, }); console.log("Done."); await browser.close(); })();
👨‍💻
может это разновидность другого канваса ?
👨‍💻
может быть что-то вроде 3д моделирований за счет видеокарты ?
👨‍💻
кхм
это точно канвас делает, а не css ? Потому что я видел подобные на css вытворяют, хотя <canvas width="1366" height="768" style="position: absolute; top: 0px; left: 0px;"></canvas> конечно странно
👨‍💻
это что, разные гендеры канваса получается у нас ?
👨‍💻
ну, согласно этой вкладке, канвас действительно выключен, однако gpu ускорения включено. Подозреваю, что браузер чисто на gpu перекидывает автоматом как потенциальную ошибку
👨‍💻
ну, согласно этой вкладке, канвас действительно выключен, однако gpu ускорения включено. Подозреваю, что браузер чисто на gpu перекидывает автоматом как потенциальную ошибку
все что я вижу тут, это компоненты или как они там правильно называются, кода, которые работают исключительно с видеокартой
👨‍💻
то есть, если запустить в среде без видеокарты, то канваса не будет, более чем уверен
👨‍💻
а нет, процы тоже рендерить графику умеют ,и исходя из этого движка <CPU> D3D11 backend - Microsoft Basic Render Driver
Null
может быть что-то вроде 3д моделирований за счет видеокарты ?
Я проверил и там и там 2d-контекст используется.
👨‍💻
а я успел отключить видеокарту, но задача все равно продолжает работать
👨‍💻
я могу попытаться выпилить из браузера пакеты конкретно с этой либой, которая рендерит... по идее тогда не должен брать ничего
Null
а я успел отключить видеокарту, но задача все равно продолжает работать
Это лишь значит что он не будет пытаться к ней обратиться. Задачи все будет выполнять CPU. Не думаю что можно как-то отключить это таким способом.
Null
Ты можешь написать перехватчик, который будет все операции с канвасом игнорить. Наверное лучшее что можно придумать.
Null
Т.е. тебе нужно написать обёртки-замены для всех функций, на подобие ctx.fillRect(), ctx.strokeRect() и т.п.
👨‍💻
чет я как-то давно писал штуку, которая заменяла вызов функции в коде и возвращала свои данные, но это легко палилось остальным js кодом
Null
Хотя, если там будет фингерпринт через канвас, тебе это не поможет, ты же не знаешь что там должно быть на канвасе после отрисовки. В общем, универсальное что-то едва ли получится сделать. Нужно точечно под каждый сайт делать.
Сергей
Подскажите, кто-то сталкивался с такой проблемой:
Сергей
Получается на centos 8 — обновляю puppeteer до 22.6.5, самостоятельно указываю путь для PUPPETEER_CACHE_DIR И возникает такая ошибка.
Сергей
Process 3219336 (chrome) of user 995 dumped core. Failed to launch the browser process! chrome_crashpad_handler: --database is required Try 'chrome_crashpad_handler --help' for more information. [3219336:3219336:0426/062439.297038:ERROR:socket.cc(120)] recvmsg: Connection reset by peer (104)
Гарик
всем привет) Остались курсы по основам трейдинга, могу поделиться за так) лежит без дела. Верю в карму