Не удалось подключиться к MozRepl/RemoteObject.pm
Попытка настроить WWW::Mechanize::Firefox и получить доступ к Firefox с помощью Perl.
Я установил модуль и его зависимости. Я не уверен, правильно ли я понял этот модуль, но я запускаю его на Unix (совместно используемом) сервере для доступа и запуска Firefox на компьютере-клиенте.
Я получаю сообщение об ошибке:
Failed to connect to , at MozRepl/RemoteObject.pm at line...
Я прочитал различные посты о настройке удаленного доступа в RemoteObject.pm и перепробовал все подходы. Все еще получите ошибку. Прямо сейчас у меня есть небольшая тестовая программа ( http://kamasiri.com/kohkood/cgi-bin/testMechanize.cgi), которая в основном выглядит следующим образом:
#!/usr/bin/perl
use CGI;
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
use WWW::Mechanize::Firefox;
print "Content-type: text/html\n\n";
my $mech = WWW::Mechanize::Firefox->new();
$mech->get('http://kamasiri.com');
$mech->eval_in_page('alert("Hello Firefox")');
print "<html><body><p>yeehah!</p></body></html>";
exit;
И в RemoteObject.pm я отредактировал в верхней части следующим образом:
# use $ENV{MOZREPL} or localhost:4242
my $remote_machine = $ENV{REMOTE_ADDR};
$ENV{REMOTE_ADDR} = "$remote_machine:4242";
my $repl = MozRepl::RemoteObject->install_bridge(
repl => "$ENV{REMOTE_ADDR}"
);
Я делаю что-то здесь не так?
Я также пытался кодировать IP-адрес клиента ПК в коде. Все та же ошибка.
Firefox запущен, а дополнение MozRepl загружено и запущено (это нормальный источник этой ошибки, я читал).
Мне было интересно, если это проблема с брандмауэром, поэтому я пробовал на разных машинах, включая мобильные. Все тот же. Тот факт, что он не распечатывает IP-адрес и порт в сообщении об ошибке, подсказывает мне, что он не принимает их как параметры в программе должным образом.
Я также задавался вопросом, если это проблема привилегии telnet, потому что я на общем сервере?
Есть идеи, что я могу попробовать дальше?
1 ответ
Исходя из вашего кода, ваша первоначальная проблема заключается в том, что вы не инициализируете WWW::Mechanize::Firefox
с сервером, который вы хотите использовать. Вы создали другой файл с именем RemoteObject.pm
, но не похоже, что вы используете его.
Чтобы инициализировать объект, вы должны сделать что-то вроде этого в вашем основном файле perl:
my $remote_machine = $ENV{REMOTE_ADDR};
my $mech = WWW::Mechanize::Firefox->new( repl => "$remote_machine:4242" );
Обратите внимание, что он попытается подключиться к машине, с которой вы просматриваете. Вы сказали, что пытались с помощью мобильного телефона. У вас есть Firefox, работающий с дополнением MozRepl на вашем мобильном телефоне?
В RemoteObjects.pm нет необходимости возвращать значение обратно REMOTE_ADDR
переменная окружения.
Тем не менее могут быть проблемы с брандмауэрами и привилегиями сокетов, но теперь вы можете, по крайней мере, попытаться подключиться к правильному компьютеру.