Null
👨💻
то и значит, запрещены. Владелец чата ограничил стикеры, гифки и прочие
Null
А, я думал ты про браузер. 😄
Null
👨💻
Null
А что ты хочешь сделать? Ты же можешь скрыть канвас и нагрузка снизится.
👨💻
думаю, как заблочить подобное, если это чистым канвасом отрисосыввется
👨💻
Null
Ну или лучше visibility: hidden, чтобы элемент из потока не выкидывать, чтобы вёрстка не ломалась.
👨💻
await page.evaluate(() => {
var canvases = document.querySelectorAll('canvas');
canvases.forEach((canvas) => {
canvas.style.display = 'none';
});
}); не хочет..
+ все равно проходит нагрузка первые доли секунды, как появляется. А прикол в том, что элемент в html появляется не сразу, а только по клику. Я так понимаю, он ренедерится как раз
👨💻
👨💻
а это вот как раз на мои 1x1 картинки.. то есть ошибка где-то срабатывает как раз
Null
Ну понятно что она будет, нужно же создать канвас, потом отрисовать его. И потом апдейтить. Но это самый простой способ снизить нагрузку. Можно конечно его вообще удалить, но тебе придётся отслеживать все обращения к канвасу из кода и вырезать их.
Null
👨💻
может перезаписать просто обращение и ничего не возвращать ?
👨💻
чет этот канвас не хочет блоикроваться
👨💻
--disable-2d-canvas тоже не работает..
Null
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
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-2d-canvas-image-chromium.
Null
👨💻
👨💻
👨💻
хотя предупреждения есть какие-то
👨💻
но тут хорошо еще понять бы, из-за моей замены подобное или нет
👨💻
не, сейчас восстановил стандартный браузер без всего. Ни одной ошибки после отключения
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
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)
});
👨💻
👨💻
👨💻
👨💻
Null
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();
})();
Null
👨💻
👨💻
может это разновидность другого канваса ?
👨💻
может быть что-то вроде 3д моделирований за счет видеокарты ?
👨💻
это точно канвас делает, а не css ? Потому что я видел подобные на css вытворяют, хотя
<canvas width="1366" height="768" style="position: absolute; top: 0px; left: 0px;"></canvas> конечно странно
👨💻
это что, разные гендеры канваса получается у нас ?
👨💻
ну, согласно этой вкладке, канвас действительно выключен, однако gpu ускорения включено. Подозреваю, что браузер чисто на gpu перекидывает автоматом как потенциальную ошибку
👨💻
👨💻
то есть, если запустить в среде без видеокарты, то канваса не будет, более чем уверен
👨💻
а нет, процы тоже рендерить графику умеют ,и исходя из этого движка
<CPU> D3D11 backend - Microsoft Basic Render Driver
Null
Null
👨💻
а я успел отключить видеокарту, но задача все равно продолжает работать
👨💻
я могу попытаться выпилить из браузера пакеты конкретно с этой либой, которая рендерит... по идее тогда не должен брать ничего
Null
Ты можешь написать перехватчик, который будет все операции с канвасом игнорить. Наверное лучшее что можно придумать.
Null
Т.е. тебе нужно написать обёртки-замены для всех функций, на подобие ctx.fillRect(), ctx.strokeRect() и т.п.
👨💻
чет я как-то давно писал штуку, которая заменяла вызов функции в коде и возвращала свои данные, но это легко палилось остальным js кодом
Null
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)
Гарик
всем привет) Остались курсы по основам трейдинга, могу поделиться за так) лежит без дела. Верю в карму