Null
👨💻
👨💻
так, я кое-что заметил
👨💻
await page.setRequestInterception(true);
полностью ломает proxychain и все остальное, то есть если ее убрать, то браузер грузит
Null
Null
Покажи как перехватчик у тебя реализован в коде.
👨💻
Null
Null
Да и изначально ты какое-то странное решение пробовал а не проксичейн.
👨💻
...
👨💻
ладно. все мы допускаем ошибки
👨💻
пусть это останется на моей совести
Null
Из-за интерсептора проблемы были?
Null
👨💻
если мы берем изначальнй вариант, то там наверное я неправильно делал pipe для прокси
Null
👨💻
а из-за чего такая картина мможет наблюдаться ? новые браузера запускаются, а старые не закрываются
Null
Null
Вообще у хрома есть настройка System -> Continue running background apps when Google Chrome is closed. Но я не знаю в этом ли дело у тебя. По дефолту не должен висеть процесс после закрытия.
👨💻
опять та же история. У меня максимум запускается 5 браузеров, а тут их явно больше чем 5
Null
Null
Хром запускает много процессов. Не обращай внимание. У него там на каждую вкладку по процессу. Для сети отдельный процесс и т.п.
Null
👨💻
вау.. а если запускать докер через vscode, то он тут прям вообще все расписывает
👨💻
в общем, я проверил. Даже если browser.close() имеется, у меня браузеры остаются в диспетчере
ISergey
Тут два варианта. По cdp получить все вкладки и закрыть их. (Он сам тогда умрет) Или на уровне ос по pid процесс убить его и его же дочерние . Хотя browser.close обычно как часы работает.
Подозреваю что висят просто какие-то левые .
ISergey
Если на винде то удобно смотреть каким-то процесхакером (он дерево нормально рисует )
👨💻
у меня даже после browser.close() браузер остается открытым и тупо начинает жрать ресурсы проца. Хотя там как видно 14 мб памяти.. но то есть это даже о странице и речи быть не может.
Он прям начинает жрать процессор. Один раз закрыл браузер, так у меня сразу 7 браузеров осталось.. я открывал один, а осталось 7 браузеров и каждые по 10% от проца жрет и начинает бешенно ресурсы проца кушать
👨💻
мне еще нравится, что во время работы оперативка со 150 мб на странице прыгает до 650 или иногда до 700.. ЗА 1 страницу всего лишь..
👨💻
я все еще полагаю, что проблема не в моем коде. Поскольку после всего несокльких запросов и вновь перехода в режим idle у страницы, у меня браузер начинает жрать нереальное количество ресурсов.
Это именно активный браузер, которым пользуюсь. То есть он жрет 11% от проца, когда в idle просто со ткрытой страницей не большще 1%.
После нескольких запросов, в браузере ничего не происходит.
на втором скрине видно, как в idle режиме после совершенной работы браузер скакнул до 650... вообще без причин
👨💻
👨💻
👨💻
понеслась. В браузере абсолютно ничего не происходит
👨💻
После того, как остановил дебагер, то нагрузка упала сразу же.
не сильно разбираюсь, но походу что-то рендерится постоянно процессом.. и причем весьма активно
👨💻
исходя из этого, он постоянно что-то пытается зарендерить. и я хз, что это. может это специальна нагрузка или защита у сайта такая
👨💻
судя по всему при закрытие браузера происходит тоже самое. Поскольку нагрузки идентичные. И браузер сам закрывается, а стек js кода продолжает выполняться и не может звершиться, потому что он бесконечный
Null
👨💻
👨💻
я понял причину. Я заблокировал все картинки и прочие ненужные файлы. Он пытался отрендерить какую-то картинку на постоянной основе и уходил в ошибку. И в бесконечный цикл пытается отрендерить картинку какую-то или прочий элемент.
Сейчас роазблокировал картинки, нагрузка привычная, 1%. Подозреваю, что и копии сайта больше не будут оставаться
Null
Null
Создай PNG пустые и отдавай их вместо любой блокируемой картинки.
👨💻
увы нет.. пробелма с появлением браузера из ниоткуда все также сохраняется. Печально
👨💻
👨💻
👨💻
const launcnOptions = {
headless: false,
timeout: 99999999,
args: [
`--proxy-server=http://localhost:8100`,
'--lang=de',
'--no-sandbox',
'--disable-setuid-sandbox',
]
}
получается, что где-то здесь задавать нужно
Null
Null
👨💻
/**
* The `ResponseForRequest` that gets used if the
* interception is allowed to respond (ie, `abort()` is not called).
*/
responseForRequest(): Partial<ResponseForRequest> | null;
вроде бы вот дает ответ на респонс, но правда я не вижу аргументов. Поэтому как вернуть свой ответ - хороший вопрос
Null
👨💻
const image = Buffer.from([
0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x01, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x2c,
])
if (/.png|.jpg|.jpeg|.webp|.swg/g.test(interceptedRequest.url())) {
return interceptedRequest.respond({
status: 200,
contentType: 'image/gif',
body: image,
})
}
Возвращает картинку 1x1 на реквест по картинкам, работает без ошибок. Нагрузка пропала как раз
Null
const image = Buffer.from([
0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x01, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x2c,
])
if (/.png|.jpg|.jpeg|.webp|.swg/g.test(interceptedRequest.url())) {
return interceptedRequest.respond({
status: 200,
contentType: 'image/gif',
body: image,
})
}
Возвращает картинку 1x1 на реквест по картинкам, работает без ошибок. Нагрузка пропала как раз
👍🏻
👨💻
можно ли отключить модуль рендеринга картинок, гифок и всего остального у браузера ?
на уровне браузерного движка именно. а то смысл от этих фотографий никаких
Null
Null
const image = Buffer.from([
0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x01, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x2c,
])
if (/.png|.jpg|.jpeg|.webp|.swg/g.test(interceptedRequest.url())) {
return interceptedRequest.respond({
status: 200,
contentType: 'image/gif',
body: image,
})
}
Возвращает картинку 1x1 на реквест по картинкам, работает без ошибок. Нагрузка пропала как раз
Даже вот это решение нужно дорабатывать. Смотреть, как браузер кэширует картинки, насколько, чтобы сайт не видел отличий от реального поведения браузера.
Null
А так он может отдавать картинку, в которой стоит запрет на кэширование, а твой скрипт не вытягивает такую картинку.
👨💻
Null
а если кеш в браузере запрещен ? у меня флаг на запрет стоит
Это не важно. Нужно со стороны сайта на это смотреть. Они знают что первый раз ты должен загрузить все картинки по дефолту, а потом браузер не будет запрашивать кэшированные картинки. И вот нужно эмулировать такое поведение. В идеале парсить заголовки ответа при первом запросе и смотреть на политику кэширования. Потом составлять таблицу url -> поведение и действовать в соответствии с ней. Но в большинстве случаев это не используется всё же.
👨💻
Null
👨💻
исходя из приколов, котоыре есть на сайте, 80% уделяется интернет соединению
👨💻
а все остальное уже с js кодом связанное
👨💻
и оч редко берут какие механизмы (api) браузера на детект
👨💻
мне вот это шутка не нравится.. она 100% нагружает браузер, пусть и чуток, но канвас берет ресурсы на это.
А гифки, запрещены