Как вы выполняете JS сайтов без браузера
-
Часто в при работе через http-клиент сталкиваюсь с необходимостью исполнить js с сайта, что получить нужные данные для запроса и т.д. Подскажите какие методы существуют, просто не придумал ничего умнее как открывать браузер, чтобы он выполнил нужный запрос или потом забрать с него куки. Просто даже в случае с не обсуфицированными скриптами попадаются скрипты в 1000-2000 строк и к тому же задействуют данные страницы юзер агента и т.д.
-
@Denis_krsk said in Как вы выполняете JS сайтов без браузера:
то получить нужные данные для запроса и т.д. Подскажите какие методы существуют, просто не придумал ничего умнее как открывать браузер, чтобы он выполнил нужный запрос или потом забрать с него куки. Просто даже в случае с не обсуфицированными скриптами попадаются скрипты в 1000-2000 строк и к тому же задействуют данные страницы юзер агента и т.д.
По идее всё равно должен выполняться какой нибудь GET или POST запрос, даже если в браузере это делается с помощью js
-
@Cruzel Само собой :) Просто речь о том, что запрос генерирует скрипт и без браузера его не выполнить. Бывают просто оочень сложные запросы которые генерируются на основание данных браузера.
-
@Denis_krsk увы тут надо гуглить в эту сторону npm headless chrome
npm headless
и насколько помнится , админ вроде говорил или уже такой функционал запрашивался - headless browser
-
@out Жаль, что эта задача видимо совсем мало приоритетная для разраба :( Было очень круто симбиоз http и какого-нибудь легко браузерного движка иметь :)
-
Подскажите какие методы существуют, просто не придумал ничего умнее как открывать браузер, чтобы он выполнил нужный запрос или потом забрать с него куки. Просто даже в случае с не обсуфицированными скриптами попадаются скрипты в 1000-2000 строк и к тому же задействуют данные страницы юзер агента и т.д.
Вы можете использовать для этого либо движок БАС либо node.js
Просто переопределите метод document.cookie чтобы их получать.
Если скрипт использует еще какой-то функционал браузера, то его тоже можно тоже переопределить.
-
увы тут надо гуглить в эту сторону npm headless chrome
Я думаю, что headless chrome будет потреблять приблизительно такое-же количество ресурсов, как и браузер БАС. Существенного выигрыша получить будет тяжело.
Вот я запустил скрипт, который загружает гугл через драйвер с#
и через БАС: