2010-02-01 27 views
15

मैं एक ब्राउज़र में ट्रैसरआउट क्लाइंट-साइड करने का एक तरीका ढूंढ रहा हूं, यानी ब्राउज़र में।क्या ब्राउज़र में ट्रैसरआउट करना संभव है?

जहां तक ​​मुझे पता है, जावास्क्रिप्ट या फ्लैश के माध्यम से मनमाने ढंग से टीटीएल मूल्यों के साथ आईसीएमपी, यूडीपी या टीसीपी पैकेट भेजना संभव नहीं है। मुझे पता है फ्लैश एक्शनस्क्रिप्ट में सॉकेट क्लास के माध्यम से टीसीपी कनेक्शन की अनुमति देता है लेकिन यह ट्रैसरआउट कार्यान्वयन के लिए उपयोगी प्रतीत नहीं होता है।

ब्राउज़र प्लग-इन विकसित करने का एकमात्र समाधान है?

संपादित: मैं बस पता चला कि यह एक जावा एप्लेट के साथ किया गया है: http://www.codefromthe70s.org/traceroute.aspx

बुरी खबर यह है कि इस एप्लेट है क्योंकि यह वास्तव में की पिंग निष्पादन से उत्पादन को पार्स कोड हस्ताक्षर किए जाने की आवश्यकता है अंतर्निहित ग्राहक प्रणाली। इस वजह से, उपयोगकर्ता को जावा एप्लिकेशन को चलाने की अनुमति देने के लिए कहा जाता है, जो बोझिल है।

अधिक यहाँ जानकारी: http://www.codefromthe70s.org/traceroute_explained.aspx

मैं अभी भी एक सरल समाधान है, तो किसी को भी मदद कर सकते हैं के लिए देख रहा हूँ।

संपादित करें 2: आपके उत्तरों के लिए धन्यवाद। मुझे लगता है मुझे जावा के साथ जाना होगा।

मुझे आश्चर्य है कि NaCl (http://code.google.com/p/nativeclient/) किसी प्रकार का ट्रैसरआउट ऐप का समर्थन करेगा।

+0

आप एप्लेट पर हस्ताक्षर क्यों नहीं कर सकते? – shylent

+0

मैं इसे निश्चित रूप से साइन कर सकता हूं। बस यह जांचने के लिए अन्य तरीके हैं या नहीं। – Franck

उत्तर

1

आप ब्राउज़र से यह सब कुछ नहीं कर सकते हैं। जावास्क्रिप्ट AJAX अनुरोधों के लिए अपने मूल सर्वर पर कनेक्शन को सबसे अच्छी तरह से खोल सकता है, लेकिन केवल HTTP के माध्यम से ऐसा कर सकता है। फ्लैश मनमाने ढंग से मेजबानों से बात कर सकता है, लेकिन केवल तभी जब वे मूल सर्वर पर crossdomain.xml फ़ाइल में सूचीबद्ध होते हैं, और फिर केवल टीसीपी के माध्यम से। फ्लैश में यूडीपी समर्थन स्पष्ट रूप से लंबित है।

ट्रैसरआउट और पिंग आईसीएमपी आधारित प्रोटोकॉल दोनों हैं और फ्लैश या जावास्क्रिप्ट से बनाए/नियंत्रित नहीं किए जा सकते हैं। उन्हें कस्टम पैकेट बनाने के लिए दोनों को 'कच्ची' पहुंच की आवश्यकता होती है, और यह निश्चित रूप से ब्राउज़र-पक्ष नहीं किया जा सकता है।यही कारण है कि 'पिंग' यूनिक्स सिस्टम पर एक 'SUID' प्रोग्राम है, क्योंकि कच्चे पैकेट एक्सेस के लिए रूट विशेषाधिकारों की आवश्यकता होती है।

सबसे अच्छा आप सर्वर-साइड कार्यान्वयन कर सकते हैं और आउटपुट ब्राउज़र को भेज सकते हैं। और फिर भी, आप संभवतः यूनिक्स बॉक्स पर इन-सर्वर प्रक्रिया से ऐसा नहीं कर पाएंगे, क्योंकि वेब सर्वर रूट के रूप में चलने की संभावना नहीं है। आपको सिस्टम पिंग और/या ट्रैसरआउट निष्पादित करना होगा और आउटपुट को ब्राउज़र पर रीडायरेक्ट करना होगा।

+1

"आप इसे ब्राउज़र से बिल्कुल नहीं कर सकते हैं।" - जेएनआई का उपयोग कर एक हस्ताक्षरित एप्लेट के अपवाद के साथ। मुझे पूरा यकीन है कि एक हस्ताक्षरित एप्लेट जेएनआई चल रहा है सचमुच कुछ भी कर सकता है। –

1

हम्म ... नहीं, सुरक्षा मॉडल की वजह से।

आप प्लग-इन वाले किसी विशेष ब्राउज़र में ऐसा करने में सक्षम हो सकते हैं, लेकिन व्यापक रूप से उपलब्ध कुछ भी उपयोग करके मनमाने ढंग से ब्राउज़र नहीं कर सकते हैं।

मैं यहां गलत साबित होना चाहता हूं।

0

कैसे सर्वर पर ट्रेसरूट को क्रियान्वित करने और ajax कॉल

+1

क्योंकि बिंदु क्लाइंट आईपी से traceroute करना है, सर्वर आईपी नहीं। – Franck

+0

@ फ्रैंक: मार्ग * आमतौर पर * सममित है, इसलिए यह ज्यादातर समय काम कर सकता है। –

5

के somekind साथ परिणाम लौटने तुम क्यों सिर्फ एप्लेट पर हस्ताक्षर नहीं करते के बारे में? वास्तव में समस्या नहीं है आप एप्लेट पर हस्ताक्षर करने के बारे में नहीं जानते हैं? यदि ऐसा है, तो यहां प्रारंभ करें: jarsignerHere एक और स्पष्ट ट्यूटोरियल है।

वास्तव में क्लाइंट मशीन पर कोड और/या कमांड का कुछ टुकड़ा चलाने से वास्तव में कोई आसान/बेहतर समाधान नहीं है। Traceroute वास्तव में क्लाइंट मशीन पर शुरू करना है।

जावास्क्रिप्ट और एक्शनस्क्रिप्ट सुरक्षा प्रतिबंधों के कारण ऐसा नहीं कर सकता है। वे केवल वेबपृष्ठ संदर्भ में रहते हैं। सिल्वरलाइट ऐसा करने में सक्षम हो सकता है, लेकिन मुझे उस पर पिन न करें। मैं नेट सामान नहीं करता हूं।

+0

ऐसा नहीं है कि मुझे नहीं पता कि यह कैसे करें लेकिन ट्यूटोरियल लिंक के लिए धन्यवाद। मैं केवल कुछ पुष्टि चाहता था कि ब्राउज़र सुरक्षा मॉडल के कारण जेएस/एक्शनस्क्रिप्ट में यह असंभव था। – Franck

+0

मुझे उम्मीद थी कि एक हस्ताक्षरित जावा एप्लेट आईसीएमपी पैकेट भेजने में सक्षम होगा, लेकिन कुछ googling के बाद, वास्तव में ऐसा लगता है कि जावा केवल टीसीपी/यूडीपी का समर्थन करता है? मुझे लगता है कि यह जेएनआई के माध्यम से अभी भी संभव है। –

3

CoNetServ (कॉम्प्लेक्स नेटवर्क सर्विसेज) ब्राउज़र एक्सटेंशन है। यह सीधे आपके ब्राउज़र में आपकी स्थानीय मशीन से ट्रैसरआउट करने में सक्षम है। http://wiki.github.com/VojtechVitek/CoNetServ/

Chrome एक्सटेंशन: https://chrome.google.com/extensions/detail/mmkpilpdijdbifpgkpdndpjlkpjkihee फ़ायरफ़ॉक्स ऐड-ऑन: https://addons.mozilla.org/en-US/firefox/addon/181909/


संपादित करें:Chrome और Firefox दोनों एक्सटेंशन में bundling NPAPI पुस्तकालयों को निरस्त कर दिया/ऐड-ऑन। दुर्भाग्यवश, उपरोक्त अब काम नहीं करेगा।

+1

क्या कोई ऐसा विकल्प है जो CoNetServ करने में सक्षम था? –

0

शायद थोड़ा देर हो चुकी है, लेकिन भविष्य के रीडिंग के लिए दिलचस्प हो सकती है (जैसे मेरा :- डी)।

जावा 1.5 में एक इन्सएड्रेस क्लास है जिसमें एक पहुंच योग्य विधि है, जिसे आप आजमा सकते हैं। इस जाँच करें:

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

+1

इसकी वास्तविक आईसीएमपी अनुरोध होने की गारंटी नहीं है, और आप टीटीएल को समायोजित नहीं कर सकते हैं। http://www.0x13.de/index.php/code-snippets/74-icmp-ping-in-java.html –

0

आप एक एप्लेट बना सकते हैं और इस पर हस्ताक्षर करने की जरूरत नहीं है! जावास्क्रिप्ट से जावा का उपयोग करना संभव है। ActiveX या Java के साथ traceroute करने के लिए I made a script

मैं ओएस एक्स पर किसी भी सुरक्षा चेतावनी नहीं दिख रहा है Windows और Linux पर यह कोशिश करो और मुझे बताओ कि क्या होता है :-)

युपीडी: लगता है जैसे कि यह केवल फ़ायरफ़ॉक्स

में
0
<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> 
काम करता है

तो यह केवल ActiveX की वजह से आईई में काम करता है।

यह traceroute को 10.10.35.1 तक चलाएगा और आईडी = "बॉक्स" के साथ div को आउटपुट लिख देगा।

संबंधित मुद्दे