Не удалось подключиться к 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 переменная окружения.

Тем не менее могут быть проблемы с брандмауэрами и привилегиями сокетов, но теперь вы можете, по крайней мере, попытаться подключиться к правильному компьютеру.

Другие вопросы по тегам