Headless browser
-
Планируется ли когда-то в будущем встроить Headless browser(не совсем такое описание, как нам нужно) ?
Чтобы при работе с HTTP клиентом, была возможность выполнять JS на странице при этом не запускать инстанс для браузера. Что-то типа получить производительность такую же большую , как при работе на запросах, только в придачу скрипты, чтобы выполнялись на странице. (Что-то хотелка разгулялась-_- Надо прекращать мучить админа, софт и так мего-супер крут.)
-
@out Так а Headless browser разве дает существенный прирост производительности?
Вот я протестировал phantomjs с таким скриптом(загрузить stackoverflow и ждать 20 секунд)
var page = new WebPage(); page.open('http://stackoverflow.com/', function (status) { just_wait(); }); function just_wait() { setTimeout(function() { phantom.exit(); }, 20000); }
Ест приблизительно 80 мб, как вкладка в обычном браузере. А возможность запускать БАС с командной строки уже есть.
-
@support согласен, сам Headless browser не даст особо прироста (ему нужно также все рендерить и т.д.), но есть ли какая-то возможность работать на get/post чисто на запросах, без браузера. и в придачу чтобы JS выполнялся на тех ответах, что мы получаем после запросов. Я видимо не могу тут компетентно выразится )
например, есть сайты, что попросту не хотят работать если JS отключен. По этому нам необходимо с ними работать через браузер, чтобы JS выполнялся или уметь расшифровывать ту лапшу из JS кода, чтобы мы могли генерировать, то чего не хватает , если работать без JS.
короч вот: возможно ли вообще (не в БАС, а вообще технически) работать без браузера, а только через запросы и выполнять код JS что находятся на запрашиваемых страницах, т.к. JS генерит всякие значения (токены, кукисы). Своего рода защита такая у сайтов, от роботов, грубо говоря, если человек без JS в браузере, то иди гуляй )
-
@out Js имеет доступ к разметке страницы и ко многим другим вещам в браузере. Я понимаю о чем идет речь, но не знаю, как это можно реализовать. http://stackoverflow.com/questions/802225/how-do-i-use-mechanize-to-process-javascript Например, тут спрашивают почти о том же.
Единственное решение, которое могу придумать - взять какой-то очень легкий браузерный движок и приделать его к хттп клиенту.
-
@support это было бы интересно, но не спеши с этим, т.к. пока это мало кому надо, может у тебя и так поважнее дела есть. Но на будущее было бы интересно..
-
@out Да, я точно сейчас делать это не буду. Сейчас доделываю модуль для приема смс
-
@out Нашел интересный флаг,
--disable-threaded-compositing
он отключает отрисовку страницы, но сохраняет приблизительно четверть памяти. Скриншоты делать нельзя, и могут возникнуть проблемы с капчей но js на странице работает. И еще он работает только в режиме записи. Этот флаг можно кидать в файл chrome_command_line.txt
-
@support Значит, без режима записи не будет работать, и Render() тоже не будет работать?
-
@blackhacker
--disable-threaded-compositing
в новой версии не будет работать в режиме записи. С созданием скриншотов ничего не сделаешь, но некоторым скриптам это не нужно.
-
@support А как же распознание каптчи?
-
@blackhacker обычным гет запросом получать каптчу.
другое дело , если рекаптча, то там да, отрисовка нужна (и то не всегда, смотря какой метод использовать)
-
@blackhacker Обычную капчу можно получать или гет запросом или через кеш. Модуль рекапчи будет работать только с капмонстром, но в будущем не вижу проблем его переделать и для сервисов и ручного распознавания.