1

尝试设置 WWW::Mechanize::Firefox 并使用 Perl 访问 Firefox。

我已经安装了模块及其依赖项。我不确定我是否正确理解了这个模块,但我在 unix(共享)服务器上运行它来访问和驱动在 pc 客户端上运行的 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}"
);

我在这里做错了吗?

我还尝试将 PC 客户端的 IP 地址硬编码到代码中。还是同样的错误。

Firefox 正在运行,MozRepl 插件已加载并正在运行(这是此错误的正常来源,我已阅读)。

我想知道这是否是防火墙问题,所以我在包括手机在内的各种机器上进行了尝试。还是一样。它没有在错误消息中打印出 ip 地址和端口的事实向我表明,它没有将这些作为选项正确地放入程序中。

我还想知道它是否是 telnet 权限问题,因为我在共享服务器上?

有什么想法我可以尝试下一步吗?

4

1 回答 1

1

从您的代码来看,您最初的问题似乎是您没有WWW::Mechanize::Firefox使用要使用的服务器进行初始化。您创建了另一个名为 的文件RemoteObject.pm,但您似乎没有使用它。

要初始化对象,您应该在主 perl 文件中执行以下操作:

my $remote_machine = $ENV{REMOTE_ADDR};
my $mech = WWW::Mechanize::Firefox->new( repl => "$remote_machine:4242" );

请注意,这将尝试连接到您用来浏览的机器。你说你用你的手机试过。您的移动设备上是否安装了带有 MozRepl 附加组件的 Firefox?

在 RemoteObjects.pm 中,无需将值设置回REMOTE_ADDR环境变量。

防火墙和套接字权限仍然可能存在问题,但现在您至少可以尝试连接到正确的机器。

于 2016-01-03T08:24:02.380 回答