簡體   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