22

クライアント側、つまりブラウザーで traceroute を実行する方法を探しています。

私の知る限り、Javascript または Flash 経由で任意の TTL 値を持つ ICMP、UDP、または TCP パケットを送信することはできません。Flash が Actionscript の Socket クラスを介して TCP 接続を許可していることは知っていますが、traceroute の実装には役に立たないようです。

ブラウザプラグインを開発する唯一のソリューションですか?

編集:Javaアプレットで行われたことがわかりました:http://www.codefromthe70s.org/traceroute.aspx

悪いニュースは、このアプレットは署名されたコードである必要があるということです。これは、基盤となるクライアント システムの ping 実行可能ファイルからの出力を実際に解析するためです。このため、ユーザーは Java アプリケーションの実行を許可するよう求められますが、これは面倒です。

詳細はこちら: http://www.codefromthe70s.org/traceroute_explained.aspx

誰かが助けてくれるなら、私はまだもっと簡単な解決策を探しています。

EDIT 2 : ご回答ありがとうございます。その場合はJavaを使用する必要があると思います。

NaCl ( http://code.google.com/p/nativeclient/ ) がある種の traceroute アプリをサポートするかどうか疑問に思います。

4

8 に答える 8

7

ブラウザからこれを行うことはまったくできません。Javascript は、せいぜい AJAX 要求の元のサーバーへの接続を開くことができますが、HTTP 経由でしか開くことができません。Flash は任意のホストと通信できますが、それらが元のサーバーの crossdomain.xml ファイルにリストされている場合に限り、TCP 経由でのみ通信できます。Flash での UDP サポートは明らかに保留中です。

traceroute と ping はどちらも ICMP ベースのプロトコルであり、Flash や Javascript から作成/制御することはできません。また、どちらもカス​​タム パケットを作成するために「生の」アクセスが必要であり、これはブラウザ側で行うことはできません。生のパケット アクセスには root 権限が必要なため、Unix システムでは「ping」が「SUID」プログラムになっているのはこのためです。

せいぜい、サーバー側の実装を行い、出力をブラウザーに送信することができます。それでも、Web サーバーが root として実行されている可能性は低いため、Unix ボックスのサーバー内プロセスからはおそらく実行できません。システム ping や traceroute を実行し、出力をブラウザにリダイレクトする必要があります。

于 2010-02-03T22:59:45.427 に答える
5

アプレットに署名してませんか?実際には、アプレットに署名する方法がわからないという問題ではありませんか?もしそうなら、ここから始めてください:jarsignerこれがより明確なチュートリアルです。

実際には、クライアントマシンでコードやコマンドを実際に実行するよりも簡単で優れたソリューションはありません。tracerouteは、実際にはクライアントマシンで発生する必要があります。

JavascriptとActionscriptは、セキュリティ上の制限のため、これを行うことはできません。それらはWebページのコンテキストでのみ存在します。Silverlightでできるかもしれませんが、私をそれに固定しないでください。私はNETのことはしません。

于 2010-02-03T12:31:19.803 に答える
3

CoNetServ (Complex Network Services) ブラウザー拡張機能があります。ブラウザーで直接、ローカル マシンから traceroute を実行できます。 https://github.com/VojtechVitek/CoNetServ/wiki

Chrome 拡張機能: https://chrome.google.com/extensions/detail/mmkpilpdijdbifpgkpdndpjlkpjkihee Firefox アドオン: https://addons.mozilla.org/en-US/firefox/addon/181909/


編集: Chrome と Firefox の両方が、拡張機能/アドオンへの NPAPI ライブラリのバンドルを取り消しました。残念ながら、上記はもう機能しません。

于 2010-07-07T13:07:57.847 に答える
1

うーん...いいえ、セキュリティ モデルのためです。

プラグインを使用して特定のブラウザーで実行できる場合がありますが、広く利用可能なものを使用する任意のブラウザーでは実行できませ

ここで私が間違っていることを証明したいと思います。

于 2010-02-03T12:19:20.110 に答える
0

アプレットを作成して署名する必要はありません。javascriptからjavaを使用することが可能です。 ActiveXまたはJavaでtracerouteを実行するためのスクリプトを作成しました。

OS Xでセキュリティ警告が表示されません。WindowsとLinuxで試して、何が起こるか教えてください:-)

UPD: Firefoxでのみ機能するようです

于 2012-01-14T16:33:54.877 に答える
0

サーバー上で traceroute を実行し、なんらかの ajax 呼び出しで結果を返すのはどうでしょうか。

于 2010-02-03T12:22:06.763 に答える
0

少し遅いかもしれませんが、将来の読書には興味深いかもしれません(私のように:-D)。

Java 1.5 には、試すことができる isReachable メソッドを備えた InetAdress クラスがあります。これをチェックして:

http://download.oracle.com/javase/1.5.0/docs/api/java/net/InetAddress.html#isReachable(int )

于 2011-05-13T06:32:35.423 に答える