Как вы выполняете 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 и какого-нибудь легко браузерного движка иметь :)


  • administrators

    @Denis_krsk

    Подскажите какие методы существуют, просто не придумал ничего умнее как открывать браузер, чтобы он выполнил нужный запрос или потом забрать с него куки. Просто даже в случае с не обсуфицированными скриптами попадаются скрипты в 1000-2000 строк и к тому же задействуют данные страницы юзер агента и т.д.

    Вы можете использовать для этого либо движок БАС либо node.js
    Просто переопределите метод document.cookie чтобы их получать.
    Если скрипт использует еще какой-то функционал браузера, то его тоже можно тоже переопределить.


  • administrators

    @out

    увы тут надо гуглить в эту сторону npm headless chrome

    Я думаю, что headless chrome будет потреблять приблизительно такое-же количество ресурсов, как и браузер БАС. Существенного выигрыша получить будет тяжело.

    Вот я запустил скрипт, который загружает гугл через драйвер с#
    0_1521991071424_ChromeHeadless.png

    и через БАС:

    0_1521991085830_ChromeBas.png