Mojo :: UserAgent и JavaScript - PullRequest
       23

Mojo :: UserAgent и JavaScript

0 голосов
/ 10 сентября 2018

Интересно, можно ли что-то подобное ниже сделать с Mojo :: UserAgent:

допустим, у меня есть следующий код:

my $ua  = Mojo::UserAgent->new;
my $res = $ua->get('mojolicious.org/perldoc')->result;

возможно ли перехватить запрос Mojo :: UserAgent и отправить его другому веб-клиенту, который знает javascript, где его результат отправляется обратно как Mojo :: Transaction :: HTTP ($ res выше), где пользователь может продолжать использовать Mojo :: Результаты интерфейса UserAgent.

т.е. я хочу следующее:

Mojo :: UserAgent-> HTTP-запрос -> перехватить HTTP-запрос -> Отправить HTTP-запрос веб-клиенту, поддерживающему javascript, например WWW :: Chrome :: Mechanize или FireFox :: Marionette -> веб-клиент JavaScript выполняет запрос -> возвращенный результат был перехвачен и изменен на Mojo :: Transaction :: HTTP

или

Mojo :: UserAgent -> неблокирующий HTTP-запрос -> неблокирующий HTTP-резонанс -> отправить во встроенный веб-браузер, например, webkit -> получить результат как Mojo :: Transaction :: HTTP

Любые идеи / примеры, как позволить Mojo :: UserAgent работать с javascript?

1 Ответ

0 голосов
/ 11 сентября 2018

Это почти всегда возможно, но реальный вопрос - это объем работы, который вы бы выполнили, чтобы его выполнить. Частью этого конкретного ответа является то, как вы хотите перехватывать запросы. Это простая часть, потому что вы можете обернуть метод start (как это делает Mojo :: UserAgent :: Role :: Queued ).

После того, как вы перехватите запрос, делайте что хотите. Получите необработанный ответ и попросите Mojo проанализировать его и построить эту часть транзакции. После этого вы снова вводите нормальную прогрессию.

Некоторое время назад люди порекомендовали бы безголовый браузер phantomjs , но похоже, что этот проект остановился. У Джоэля Бергера есть Mojo :: Phantom , но это не совсем то, что вы хотите.

Наконец, помните, что почти все хотели бы, чтобы это существовало, но это не так. Это важная информация там. ;)

Если вы все еще хотите поработать над этим, задавая более узкие вопросы на этом пути, скорее всего, поможет больше.

Удачи!

...