繁体   English   中英

是否可以在浏览器中执行traceroute?

[英]Is it possible to do a traceroute in the browser?

我正在寻找一种方法来进行traceroute客户端,即在浏览器中。

据我所知,通过Javascript或Flash发送任意TTL值的ICMP,UDP或TCP数据包是不可能的。 我知道Flash允许通过Actionscript中的Socket类进行TCP连接,但它对于traceroute实现似乎没有用。

是开发浏览器插件的唯一解决方案吗?

编辑 :我刚刚发现它已经完成了Java applet: http//www.codefromthe70s.org/traceroute.aspx

坏消息是这个applet需要签名代码,因为它实际上解析了底层客户端系统的ping可执行文件的输出。 因此,要求用户允许Java应用程序运行,这很麻烦。

更多信息: http//www.codefromthe70s.org/traceroute_explained.aspx

如果有人能提供帮助,我仍在寻找更简单的解决方案。

编辑2 :谢谢你的回答。 我想我必须使用Java。

我想知道NaCl( http://code.google.com/p/nativeclient/ )是否会支持某种traceroute app。

你为什么不只是签名Applet? 是不是问题实际上你不知道如何签署applet? 如果是这样,那么从这里开始: jarsigner 是一个更清晰的教程。

实际上没有比在客户端机器上实际运行某些代码和/或命令更简单/更好的解决方案。 traceroute确实必须来自客户机。

由于安全限制,Javascript和Actionscript无法执行此操作。 它们仅存在于网页上下文中。 Silverlight可能会这样做,但不要指责我。 我不做NET的东西。

您无法通过浏览器执行此操作。 Javascript最多可以为其原始服务器打开连接以获取AJAX请求,但只能通过HTTP执行此操作。 Flash可以与任意主机通信,但前提是它们在原始服务器上的crossdomain.xml文件中列出,并且仅通过TCP再次列出。 Flash中的UDP支持显然正在等待中。

Traceroute和ping都是基于ICMP的协议,无法通过Flash或Javascript创建/控制。 他们也都需要'原始'访问来构建自定义数据包,这绝对不能在浏览器端完成。 这就是为什么'ping'是Unix系统上的'SUID'程序,因为原始数据包访问需要root权限。

充其量,您可以执行服务器端实现并将输出发送到浏览器。 即便如此,你很可能无法通过Unix机箱上的服务器内进程来实现,因为Web服务器不太可能以root身份运行。 您必须执行系统ping和/或traceroute并将输出重定向回浏览器。

有CoNetServ(复杂网络服务)浏览器扩展。 它可以直接在浏览器中从本地计算机执行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库撤销到扩展/附加组件中。 不幸的是,上述内容将不再适用。

嗯......不,因为安全模型。

可以在具有插件的特定浏览器中执行此操作,但不能使用任何广泛可用的任意浏览器。

我想在这里被证明是错的。

如何在服务器上执行traceroute并返回带有某种ajax调用的结果

<script type="text/javascript">
        function runapp() {
        var domain = "10.10.35.1";
        var cmdLine = "tracert" +" " + domain; 
        var wshShell = new ActiveXObject("WScript.Shell"); 
        var out = wshShell.Exec(cmdLine); 
        var output1 = out.StdOut.ReadAll();
        document.getElementById('box').innerHTML += output1;
        }

     </script>

<div id="box" align="center"></div>
    <button onclick="runapp();">Click me!</button>

所以它只适用于IE,因为ActiveX。

它将traceroute运行到10.10.35.1并将输出写入div,id =“box”。

也许有点晚了,但未来读数可能会很有趣(比如我的:-D)。

Java 1.5有一个带有isReachable方法的InetAdress类,您可以尝试。 检查一下:

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

您无需创建小程序并对其进行签名! 可以从javascript使用java。 我制作了一个用ActiveX或Java做traceroute 的脚本

我没有在OS X上看到任何安全警告。在Windows和Linux上尝试它并告诉我发生了什么:-)

UPD:似乎只适用于Firefox

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM