1

WWW::Mechanize::Firefox をセットアップし、Perl を使用して Firefox にアクセスしようとしています。

モジュールとその依存関係をインストールしました。このモジュールを正しく理解しているかどうかはわかりませんが、PC クライアントで実行されている Firefox にアクセスして駆動するために、UNIX (共有) サーバーで実行しています。

エラーが発生します:

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 に答える