আমি কি ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্ট ব্যবহার করে কোনও ডিএনএস লুকআপ (আইপি ঠিকানার হোস্টনাম) করতে পারি?


92

ক্লায়েন্টের কম্পিউটার থেকে দেখা হিসাবে আমি ডিএনএস লুপ (আইপি ঠিকানার হোস্টনাম) সম্পাদন করতে ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্ট ব্যবহার করতে চাই। এটা কি সম্ভব?


4
এই প্রশ্নের উত্তরগুলির মধ্যে অনেকগুলি রেজোলিউশন সার্ভারের পক্ষ থেকে করার পরামর্শ দিচ্ছে বলে মনে হচ্ছে। ব্যবহারের ক্ষেত্রে নির্ভর করে যা পর্যাপ্ত নাও হতে পারে। উদাহরণস্বরূপ, আপনি যে পরিষেবাটি সন্ধান করছেন সেটি যদি জিএসএলবি ব্যবহার করে তবে এটি ব্যবহারকারী যেখানে অবস্থিত তার উপর ভিত্তি করে কোনও ভিন্ন আইপি ফিরে আসতে পারে; ফলস্বরূপ সার্ভারের সাইড কোডটি প্রাপ্ত প্রতিক্রিয়াটি ব্রাউজারটি যা পেত তার চেয়ে আলাদা প্রতিক্রিয়া হওয়ার সম্ভাবনা রয়েছে। বলা হচ্ছে, যারা এখনও এই পার্থক্য সম্পর্কে যত্নশীল তাদের জন্য আমার কাছে বিকল্প বিকল্প নেই।
ইলান রাবিনোভিচ

উত্তর:


35

জাভাস্ক্রিপ্ট স্ট্যান্ডার্ড লাইব্রেরিতে হোস্ট বা আইপি-ঠিকানাগুলির কোনও ধারণা নেই। সুতরাং আপনার জন্য হোস্ট-নেম সন্ধান করতে আপনাকে কিছু বাহ্যিক পরিষেবা অ্যাক্সেস করতে হবে।

আমি একটি সিজি-বিন হোস্ট করার পরামর্শ দিচ্ছি যা কোনও হোস্টনামের আইপি-ঠিকানা দেখতে এবং জাভাস্ক্রিপ্টের মাধ্যমে অ্যাক্সেস করবে।


26
সিজি-বিন? এটা পুরানো স্কুল। আমি এটা পছন্দ করি!
অ্যান্ড্রু হেজেস

10
লেখার সময় এটি সত্য ছিল (২০০৮)। 6 বছর পরে এটি সত্য নয়: এই একই পৃষ্ঠায় ওয়েবআরটিটিসি সম্পর্কে আমার মন্তব্য দেখুন। (দুর্ভাগ্যজনকভাবে গুগল এখনও আইপি ঠিকানা সমস্যার সমাধান অনুসন্ধান করার সময় এই থ্রেডের দিকে ইঙ্গিত করে এবং এটি লোকেদেরকে ভুল দিকে চালিত করতে পারে)।
ইরিজন

4
@ আইরিজন - আপনার উত্তরটি একটি আলাদা প্রশ্নের জন্য - আপনার নিজের ব্যক্তিগত আইপি ঠিকানাটি কীভাবে আবিষ্কার করবেন।
জিন ভায়ংরিব

ক্লাউড থেকে সিজিআইয়ের মাধ্যমে সমস্যাটি ইন্ট্রানেট হোস্ট আইপস আবিষ্কার করবে যা বাইরে থেকে সম্ভব নয়। আপনাকে মেশিনে বা ইন্ট্রনেটে একটি স্থানীয় পরিষেবা ব্যবহার করতে হবে।
তাজাহি ফাদিদা

একটি নতুন প্রস্তাবিত ইন্টারনেট মান রয়েছে যা আপনাকে এইচটিটিপিএসের মাধ্যমে ডিএনএস কোয়েরি প্রেরণ করতে দেয় (এই উত্তরটি stackoverflow.com/a/58299823/9638991 দেখুন )। সমস্ত বাস্তবে, এটি মূলত সিজি-বিন স্ক্রিপ্টের মতোই কাজ করে :) :) (এটি আইইটিএফ দ্বারা প্রমিতকরণ ব্যতীত এবং বড় বড় সংস্থাগুলি একটি সমর্থন করে)
কিম্বো

82

সম্পাদনা করুন : এই প্রশ্নটি আমাকে চুলকানি দিয়েছে, তাই আমি গুগল অ্যাপ ইঞ্জিনে একটি জেএসওএনপি ওয়েব সার্ভিস স্থাপন করেছি যা ক্লায়েন্টদের আইপি ঠিকানাটি দেয়। ব্যবহার:

<script type="application/javascript">
function getip(json){
  alert(json.ip); // alerts the ip address
}
</script>

<script type="application/javascript" src="http://jsonip.appspot.com/?callback=getip"> </script>

হ্যাঁ, কোনও সার্ভারের প্রক্সি প্রয়োজন।


খাঁটি জেএস পারে না। যদি আপনার একই ডোমেনের আওতায় কোনও সার্ভার স্ক্রিপ্ট থাকে যা এটি মুদ্রণ করে তবে আপনি এটি পড়ার জন্য একটি এক্সএমএলএইচটিপিআরকুয়েস্ট পাঠাতে পারেন।


4
আপনি কি আপনার ওয়েব পরিষেবাতে উত্স পোস্ট করতে পারেন? দৃষ্টান্তটি চালানো ভাল লাগবে।
হবে

18
দুঃখিত, তবে এটিকে নিচু করে ফেলতে হবে বলে আমি মনে করি না যে এটি আসলে মূল প্রশ্নের উত্তর দেয়। তারা কেবলমাত্র একটি স্ট্যান্ডার্ড ডিএনএস লুক্কুল চায়, ব্যবহারকারীর পাবলিক আইপি নয়।
সাইমন পূর্ব

31

খুব দেরিতে, তবে আমার ধারণা অনেক লোক এখনও "গুগল এয়ারলাইনস" এর মাধ্যমে এখানে অবতরণ করবে। একটি মডেম অ্যাপ্রোচ হল ওয়েবআরটিটিসি ব্যবহার করা যাতে সার্ভারের সমর্থন প্রয়োজন হয় না।

https://hacking.ventures/local-ip-discovery-with-html5-webrtc-security-and-privacy-risk/

পরবর্তী কোডটি http://net.ipcalf.com/ থেকে একটি অনুলিপি এবং পেস্ট করুন

// NOTE: window.RTCPeerConnection is "not a constructor" in FF22/23
var RTCPeerConnection = /*window.RTCPeerConnection ||*/ window.webkitRTCPeerConnection || window.mozRTCPeerConnection;

if (RTCPeerConnection) (function () {
    var rtc = new RTCPeerConnection({iceServers:[]});
    if (window.mozRTCPeerConnection) {      // FF needs a channel/stream to proceed
        rtc.createDataChannel('', {reliable:false});
    };  

    rtc.onicecandidate = function (evt) {
        if (evt.candidate) grepSDP(evt.candidate.candidate);
    };  
    rtc.createOffer(function (offerDesc) {
        grepSDP(offerDesc.sdp);
        rtc.setLocalDescription(offerDesc);
    }, function (e) { console.warn("offer failed", e); }); 


    var addrs = Object.create(null);
    addrs["0.0.0.0"] = false;
    function updateDisplay(newAddr) {
        if (newAddr in addrs) return;
        else addrs[newAddr] = true;
        var displayAddrs = Object.keys(addrs).filter(function (k) { return addrs[k]; }); 
        document.getElementById('list').textContent = displayAddrs.join(" or perhaps ") || "n/a";
    }   

    function grepSDP(sdp) {
        var hosts = []; 
        sdp.split('\r\n').forEach(function (line) { // c.f. http://tools.ietf.org/html/rfc4566#page-39
            if (~line.indexOf("a=candidate")) {     // http://tools.ietf.org/html/rfc4566#section-5.13
                var parts = line.split(' '),        // http://tools.ietf.org/html/rfc5245#section-15.1
                    addr = parts[4],
                    type = parts[7];
                if (type === 'host') updateDisplay(addr);
            } else if (~line.indexOf("c=")) {       // http://tools.ietf.org/html/rfc4566#section-5.7
                var parts = line.split(' '), 
                    addr = parts[2];
                updateDisplay(addr);
            }   
        }); 
    }   
})(); else {
    document.getElementById('list').innerHTML = "<code>ifconfig | grep inet | grep -v inet6 | cut -d\" \" -f2 | tail -n1</code>";
    document.getElementById('list').nextSibling.textContent = "In Chrome and Firefox your IP should display automatically, by the power of WebRTCskull.";
}   

19
এটি সত্যই একটি নতুন ক্ষমতা যা ওয়েবআরটিসি-র পূর্বে বিদ্যমান ছিল না - নিজের আইপি ঠিকানাটি আবিষ্কার করতে। তবে @noahjacobson একটি আলাদা প্রশ্ন জিজ্ঞাসা করেছে - জাভাস্ক্রিপ্ট থেকে হোস্টনেম দ্বারা আইপি ডিএনএস লুকআপ।
জেন ওয়াইংরিব

4
খুব, খুব আকর্ষণীয়, এটি একটি বাগ বা ডিজাইনের ত্রুটি, যাইহোক যে কোনও সময় এটি সংশোধন করা হবে তাই দীর্ঘমেয়াদী প্রকল্পগুলির জন্য ভাল নয়
e-info128

16

আমি জানি এই প্রশ্নটি অনেক আগে জিজ্ঞাসা করা হয়েছিল, তবে আমি বুঝতে পেরেছিলাম যে আমি আরও সাম্প্রতিক উত্তর দেব।

এইচটিটিপিএসের (ডিওএইচ) উপর ডিএনএস

আপনি এইচটিটিপিএসের মাধ্যমে ডিএনএস রেজোলভারগুলিকে সমর্থন করে এমন ডিএনএস ক্যোয়ারী প্রেরণ করতে পারেন। ডিওএইচের জন্য মানটি আরএফসি 8484 - বর্ণিত হয়েছে ।

এটি অন্যান্য সমস্ত উত্তরগুলির মতামতের অনুরূপ, কেবলমাত্র ডিওএইচই এইচটিটিপিএসের উপর ডিএনএস প্রোটোকল। এটি একটি "প্রস্তাবিত" ইন্টারনেট স্ট্যান্ডার্ড এবং এটি বেশ জনপ্রিয় হয়ে উঠছে। উদাহরণস্বরূপ, কিছু প্রধান ব্রাউজার এটি সমর্থন করে বা এটি সমর্থন করার পরিকল্পনা করেছে (ক্রোম, এজ, ফায়ারফক্স), এবং মাইক্রোসফ্ট তাদের অপারেটিং সিস্টেমে এটি তৈরির প্রক্রিয়াধীন রয়েছে।

ডিওএইচ এর অন্যতম উদ্দেশ্য:

ক্রস অরিজিন রিসোর্স শেয়ারিং (সিওআরএস) এর সাথে সুরক্ষিতভাবে নিরাপদে উপায়ে ব্রাউজারের API গুলির মাধ্যমে ওয়েব অ্যাপ্লিকেশনগুলিকে DNS তথ্য অ্যাক্সেস করার অনুমতি দেয়

বিশেষত দোহজ নামে পরিচিত ওয়েব অ্যাপ্লিকেশনগুলি থেকে ডিএনএস লুকআপ করার জন্য একটি ওপেন সোর্স সরঞ্জাম রয়েছে । এটি আরএফসি 8484-তে বর্ণিত হিসাবে HTTPS (DoH) ওয়্যারফর্ম্যাট প্রশ্নের উপর ডিএনএস করে । এটি জিইটি এবং পোস্ট উভয় পদ্ধতিই সমর্থন করে।

সম্পূর্ণ প্রকাশ: আমি dohjs এর একজন সহযোগী।

এইচটিটিপিএস জেএসন এপিআইয়ের উপর ডিএনএস

আপনি যদি ডিএনএস ওয়্যারফর্ম্যাট নিয়ে বিরক্ত না করতে চান তবে গুগল এবং ক্লাউডফ্লেয়ার এইচটিটিপিএস-এর মাধ্যমে ডিএনএসের জন্য জেএসএন এপিআই সরবরাহ করে।

গুগলের জেএসন ডিওএইচ এপিআই সহ উদাহরণ ডটকমকে দেখার জন্য জাভাস্ক্রিপ্ট কোড উদাহরণ:

var response = await fetch('https://dns.google/resolve?name=example.com');
var json = await response.json();
console.log(json);

আরএফসি থেকে ডিওএইচ জিইটি এবং ওয়্যারফর্ম্যাট সহ পোষ্টের উদাহরণ

আরএফসি জিইটি এবং পোষ্ট উভয়ের জন্য যে উদাহরণ দেয় তা এখানে ( https://tools.ietf.org/html/rfc8484#section-4.1.1.1 দেখুন ):

উদাহরণস্বরূপ:

প্রথম উদাহরণ অনুরোধটি "www.example.com" র অনুরোধের জন্য জিইটি ব্যবহার করে।

: পদ্ধতি = জিইটি
: স্কিম = https
: কর্তৃপক্ষ = dnsserver.example.net
: পথ = / ডিএনএস -কোয়েরি? ডিএনএস = এএএবিএএবিএএএএএএএএএএএএডিএবিএইবি
গ্রহণ = অ্যাপ্লিকেশন / ডিএনএস -বার্তা

পোস্ট উদাহরণ:

"Www.example.com" এর জন্য পোষ্ট পদ্ধতিটি ব্যবহার করে একই ডিএনএস কোয়েরি হ'ল:

: পদ্ধতি = পোস্ট
: প্রকল্প = https
: কর্তৃপক্ষ = dnsserver.example.net
: পথ = / ডিএনএস -কোয়েরি
গ্রহণ = প্রয়োগ / ডিএনএস-বার্তা
সামগ্রী-প্রকার = অ্যাপ্লিকেশন / ডিএনএস-বার্তা
সামগ্রী-দৈর্ঘ্য = 33

<33 বাইটগুলি নিম্নলিখিত হেক্স এনকোডিং দ্বারা প্রতিনিধিত্ব করা হচ্ছে> 00 00 01 00 00 01 00 00 00 00 00 00 00 00 03 77 77 77 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 00 01 01 01

ডিওএইচ অনুসন্ধানগুলি পাঠানোর জন্য অন্যান্য স্থান places

আপনি কয়েকটি পাবলিক ডিএনএস রেজোলভারের একটি তালিকা খুঁজে পেতে পারেন যা এইচটিটিপিএসের মাধ্যমে ডিএনএসকে কয়েকটি জায়গায় সমর্থন করে:

উপরোক্ত সংস্থানগুলির মধ্যে আমি বলব যে কার্লের উইকির তালিকা এবং ডিএনএসক্রিপ্টের তালিকাটি সম্ভবত সবচেয়ে সম্পূর্ণ এবং সর্বাধিক ঘন ঘন আপডেট হওয়া। কার্লের পৃষ্ঠায় DoH (সার্ভার, প্রক্সি, ক্লায়েন্ট libs, ইত্যাদি) এর জন্য ওপেন সোর্স সরঞ্জামগুলির একটি তালিকাও অন্তর্ভুক্ত রয়েছে।


14

হোস্ট করা জেএসএনপি সংস্করণটি কবজির মতো কাজ করে তবে মনে হয় এটি বেশিরভাগ দিন (পূর্ব সময়) রাতের সময় এটির সংস্থানগুলি অতিক্রম করে, তাই আমাকে নিজের সংস্করণ তৈরি করতে হয়েছিল।

এইভাবে আমি পিএইচপি দিয়ে এটি সম্পাদন করেছি:

<?php
header('content-type: application/json; charset=utf-8');

$data = json_encode($_SERVER['REMOTE_ADDR']);
echo $_GET['callback'] . '(' . $data . ');';
?>

তারপরে জাভাস্ক্রিপ্ট ঠিক আগের মতো, কেবল একটি অ্যারে নয়:

<script type="application/javascript">
function getip(ip){
    alert('IP Address: ' + ip);
}
</script>

<script type="application/javascript" src="http://www.anotherdomain.com/file.php?callback=getip"> </script>

যে হিসাবে সহজ!

পার্শ্ব নোট: আপনি যদি কোনও জন-মুখোমুখি পরিবেশে এটি ব্যবহার করেন তবে আপনার G _GET পরিষ্কার করতে ভুলবেন না!


ধন্যবাদ টিকোলে! ঠিক আমি যা খুঁজছিলাম :)
jClark

এক মিনিট অপেক্ষা করুন, এমনকি কেন $ _GET ব্যবহার করবেন? যেমন আপনি বলেছেন এটি একটি দুর্বলতা। একটি মাত্র ব্যবহার করতে পারেনি: প্রতিধ্বনি 'জেটিপ ('। $ ডেটা। ');';
deweydb

7
দুঃখিত, তবে এটিকে নিচু করে ফেলতে হবে বলে আমি মনে করি না যে এটি আসলে মূল প্রশ্নের উত্তর দেয়। তারা কেবলমাত্র একটি স্ট্যান্ডার্ড ডিএনএস লুক্কুল চায়, ব্যবহারকারীর পাবলিক আইপি নয়।
সাইমন পূর্ব

4
@ সিমোনইস্ট হি। আপনি 7 বছরের পুরানো প্রশ্নের প্রশ্নটি পরিবর্তন করেছেন। নিজেকে সন্তুষ্ট করার জন্য যা কিছু প্রয়োজন তা করুন ;-)
tcole

4
আমি সম্প্রতি মূল প্রশ্নটি এটিকে আরও স্পষ্ট করার জন্য সম্পাদনা করেছি, কারণ আমি সম্প্রতি একই প্রশ্নটি নিয়ে গবেষণা করছিলাম, তবে বেশিরভাগ কারণেই এখানে বেশিরভাগ উত্তর আসলে মূল পোস্টারটি যা চেয়েছিল তা নয় এবং একটি অন্য প্রশ্নের অধীনে পোস্ট করা উচিত।
সাইমন পূর্ব

3

আমি জানি এটি একটি পুরানো প্রশ্ন তবে আমার সমাধান অন্যদের সহায়তা করতে পারে।

আমি দেখতে পেয়েছি যে JSON (P) পরিষেবাগুলি এটি সহজ করে তোলে তা চিরকাল স্থায়ী হয় না তবে নিম্নলিখিত জাভাস্ক্রিপ্ট লেখার সময় আমার পক্ষে ভাল কাজ করে।

<script type="text/javascript">function z (x){ document.getElementById('y').innerHTML=x.query }</script>
<script type='text/javascript' src='http://ip-api.com/json/zero.eu.org?callback=z'></script>

উপরের পৃষ্ঠাটিতে আমার সার্ভারের আইপি লিখেছে এটি অবস্থিত তবে স্ক্রিপ্টটি অন্য কোনও ডোমেইনের নামে 'শূন্য.ইউ.আর.আর.জি.' পরিবর্তন করে যে কোনও আইপি সন্ধানের জন্য পরিবর্তন করা যেতে পারে। এটি আমার পৃষ্ঠায় ক্রিয়াকলাপে দেখা যেতে পারে: http://meon.zero.eu.org/


এটি ব্যবহার করে কীভাবে আমার নিজের আইপি ঠিকানাটি সন্ধান করতে পারি তা বুঝতে পারি না: <! - # ইকো ভার = "REMOTE_ADDR" -> আপনার ওয়েবসাইট অনুসারে।
জর্জ কার্লিন

এটি বেশিরভাগ ওয়েব সার্ভারে উপলব্ধ একটি স্ট্যান্ডার্ড 'ইকো' সুবিধা। দেখুন: google.co.uk/…
নেভিল হিলিয়ার

4
এটি সম্ভবত একমাত্র উত্তর যা আসলে আসল প্রশ্নটিকে সঠিকভাবে মোকাবেলা করে, ভাল করে। দুর্ভাগ্যক্রমে এটি ক্লায়েন্টের কম্পিউটার অংশ থেকে দেখা হিসাবে অনুসরণ করে না , যা (বা নাও) একটি গুরুত্বপূর্ণ প্রয়োজন হতে পারে।
সাইমন পূর্ব

@ সিমন - এটি "ক্লায়েন্টের কম্পিউটার থেকে দেখা হিসাবে" কোথায় বলে এবং আমার উত্তর কেন এটি মেনে চলে না?
নেভিল হিলিয়ার

4
@ সিমন - ভাল পয়েন্ট তবে সাধারণভাবে ক্লায়েন্ট-সাইড জেএস সার্ভার সরবরাহ করার কারণে লেখক / সার্ভারের মালিক এই ডিএনএস সীমাবদ্ধতা সম্পর্কে সচেতন হতে পারে - তৃতীয় পক্ষের সার্ভার ব্যবহার করে লেখকগণের জন্য এটি একটি সমস্যা হতে পারে। এখানে পোস্টগুলিতে ইঙ্গিত হিসাবে বিদ্যমান প্রযুক্তিগুলি এর প্রতিবন্ধকতাগুলি পূরণ করতে লড়াই করে। আমার ইনপুটটির সমাধানটি আমার সার্ভারে সর্বাধিক ব্যবহারিক বলে মনে করেছি to
নেভিল হিলিয়ার

3

একটি তৃতীয় পক্ষের পরিষেবা রয়েছে যা ব্রাউজার থেকে ডিএনএস লুকআপ করার জন্য একটি কর্স-বান্ধব REST এপিআই সরবরাহ করে - https://exana.io/tools/dns/


1

অনেক লোক বলেছে আপনার একটি বাহ্যিক পরিষেবা ব্যবহার করা এবং এটি কল করা দরকার। এবং এটি আপনাকে সার্ভারের দৃষ্টিকোণ থেকে কেবল ডিএনএস রেজোলিউশন পাবে।

যদি এটি যথেষ্ট ভাল হয় এবং আপনার যদি কেবল ডিএনএস রেজোলিউশন প্রয়োজন হয় তবে আপনি নিম্নলিখিত ডকার পাত্রটি ব্যবহার করতে পারেন:

https://github.com/kuralabs/docker-webaiodns

সমাপ্তি:

[GET] /ipv6/[domain]: প্রদত্ত ডোমেনের জন্য একটি ডিএনএস রেজোলিউশন সম্পাদন করুন এবং সম্পর্কিত আইপিভি 6 ঠিকানাগুলি ফিরিয়ে দিন।

 {
     "addresses": [
         "2a01:91ff::f03c:7e01:51bd:fe1f"
     ]
 }

[GET] /ipv4/[domain]: প্রদত্ত ডোমেনের জন্য একটি ডিএনএস রেজোলিউশন সম্পাদন করুন এবং সম্পর্কিত আইপিভি 4 ঠিকানাগুলি ফিরিয়ে দিন।

 {
     "addresses": [
         "139.180.232.162"
     ]
 }

আমার সুপারিশটি হ'ল আপনি আপনার জাভাস্ক্রিপ্ট পরিবেশন করার জন্য আপনার সার্ভারের নির্দিষ্ট প্রান্তে ধারকটিতে প্রক্সিটি উল্টানোর জন্য আপনার ওয়েব সার্ভারটি সেটআপ করুন এবং এটি আপনার স্ট্যান্ডার্ড জাভাস্ক্রিপ্ট অ্যাজাক্স ফাংশনগুলি ব্যবহার করে কল করুন।


1

একটি জাভাস্ক্রিপ্ট লাইব্রেরি আছে DNS-JS.com যা কেবল এটি করে।

DNS.Query("dns-js.com",
    DNS.QueryType.A,
    function(data) {
        console.log(data);
});

4
এখনও ক্লায়েন্টের দৃষ্টিকোণ থেকে না। সেই লাইব্রেরিটি আইপি ঠিকানাটি পেতে Dns-js.com/api.aspx কে অনুরোধ করে যা DNS সার্ভার- সাইডটি সমাধান করে।
wp-overwatch.com

0

এটি করার জন্য ব্রাউজারের স্যান্ডবক্সটি ভেঙে ফেলতে হবে। আপনার সার্ভারটিকে দেখার চেষ্টা করার চেষ্টা করুন এবং XMLHttp এর মাধ্যমে ক্লায়েন্টের পক্ষ থেকে অনুরোধ করুন।


-1

ফায়ারফক্সের ওয়েব-এক্সটেনশনের জন্য v60 সাল থেকে এর জন্য একটি অন্তর্নির্মিত এপিআই রয়েছে:

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExistances/API/dns/resolve


যে কোনও কারণেই, browserফায়ারফক্স bet৪ বিটাতে উপস্থিত নেই তাই আমি ভাবছি যে এটি অপসারণ করা হয়েছে কিনা।
কেভিন ঘাদিয়ানি

4
@ সাওটায়েটোস: এটি কেবল ওয়েব এক্সটেনশনের জন্যই উন্মুক্ত । এছাড়াও নোট করুন এর dnsঅনুমতি প্রয়োজন এবং স্ক্রিপ্টটি কোনও সামগ্রীর স্ক্রিপ্ট হিসাবে চলবে না (যেমনটি আবার browser.dnsসেখানে প্রকাশ করা হবে না)
শনি গ্রহ

@ স্যাটারানাস এটি ফায়ারফক্স এক্সটেনশনের জন্য দুর্দান্ত কাজ করে। কোনওভাবে ক্রোম এক্সটেনশানগুলির সাথে একই করার কোনও সুযোগ?
4:08

-1

নিশ্চিত যে আপনি browser.dns.resolve("example.com"); ডিএনএসের এই পদ্ধতিটি ব্যবহার করে কোনও খাঁটি জাভাস্ক্রিপ্ট, কোনও সংযোজন না করেই এটি করতে পারেন তবে এটি কেবলমাত্র ফায়ারফক্স 60 এর সাথে সামঞ্জস্যপূর্ণ আপনি এমডিএন https://developer.mozilla.org/en-US/docs এ আরও তথ্য দেখতে পারবেন / মোজিলা / অ্যাড-অনস / ওয়েব এক্সটেনশনগুলি / এপিআই / ডিএনএস / সমাধান


4
এই পদ্ধতিটি কেবলমাত্র ওয়েব এক্সটেনশনের প্রসঙ্গে উপলব্ধ। এটি কোনও ওয়েব পৃষ্ঠা দ্বারা ব্যবহার করা যায় না।
সন্ধ্যাশক্তি-নিষ্ক্রিয়-

-2

আমি মনে করি না যে এটি বেশিরভাগ ব্রাউজারের দ্বারা সুরক্ষার কারণে অনুমোদিত হয়েছে, প্রশ্ন হিসাবে শুদ্ধ জাভাস্ক্রিপ্ট প্রসঙ্গে।


4
এটি কোনও উত্তর নয়। এটি একটি মন্তব্য করা উচিত!
ট্রাজডার

-3

হয়তো আমি বিষয়টিটি মিস করেছি তবে NAVY লোকের জবাবে এখানে ব্রাউজারটি কীভাবে আপনাকে 'অনুরোধকারীর' আইপি ঠিকানা বলতে পারে (যদিও তারা কেবল তাদের পরিষেবা সরবরাহকারী হতে পারে)।

পৃষ্ঠায় একটি স্ক্রিপ্ট ট্যাগটি ক্লায়েন্ট দ্বারা রেন্ডার করার জন্য কল করুন (এসসিআর পয়েন্ট করছে) অন্য একটি সার্ভার যা ভারসাম্য লোড করা হয়নি (আমি বুঝতে পেরেছি যে এর অর্থ আপনার একটি দ্বিতীয় সার্ভারে অ্যাক্সেস প্রয়োজন তবে হোস্টিং এই দিনগুলিতে সস্তা এবং আপনি করতে পারেন) এটি সহজে এবং সস্তায় সেট আপ করুন)।

এটি এমন ধরণের কোড যা ক্লায়েন্ট পৃষ্ঠায় যুক্ত করা দরকার:

অন্যান্য সার্ভারে "কিছু সার্ভারআইউন" আপনার এএসপি, এএসপিএক্স বা পিএইচপি পৃষ্ঠা থাকা দরকার;

----- এর মধ্যে সার্ভার কোড রয়েছে:

"%

---- এবং স্ক্রিপ্ট ট্যাগ এ ফিরে এই কোডটি লিখেছেন:

   var clientipaddress = '178.32.21.45';

এটি কার্যকরভাবে একটি জাভাস্ক্রিপ্ট ভেরিয়েবল তৈরি করে যা আপনি পৃষ্ঠাতে জাভাস্ক্রিপ্টের সাহায্যে অ্যাক্সেস করতে পারবেন।

আশা করি, আপনি এই ভ্যারিসটি অ্যাক্সেস করেন এবং ফেরত প্রেরণের জন্য প্রস্তুত একটি ফর্ম নিয়ন্ত্রণে মানটি লিখুন।

ব্যবহারকারী যখন জাভাস্ক্রিপ্ট এবং / অথবা ফর্মটি পরবর্তী অনুরোধে আসে বা "বা অন্যান্য ফর্মটি" অন্যান্য সার্ভারআইউন "আপনার জন্য ভেরিয়েবলের মান প্রেরণ করে, আপনি যে সার্ভারটিতে এটি চান তা ফিরে পাবেন।

এইভাবে আমি বোবা লোড ব্যালেন্সারের কাছাকাছি আসি যা আমাদের ক্লায়েন্টের আইপি অ্যাড্রেসটি মাস্ক করে এবং এটিকে লোড ব্যালান্সারের মতো প্রদর্শিত হয় .... বোবা ... বোবা বোবা!

আমি সঠিক সমাধানটি দেয়নি কারণ সবার পরিস্থিতি কিছুটা আলাদা। ধারণাটি অবশ্য দৃ sound়। এছাড়াও, আপনি যদি এইচটিটিপিএস পৃষ্ঠায় এটি করছেন তবে আপনার "অন্যান্য সার্ভারআইওন" অবশ্যই সেই সুরক্ষিত ফর্মটি সরবরাহ করতে হবে অন্যথায় ক্লায়েন্টকে মিশ্র সামগ্রীতে সতর্ক করা হয়েছে। এবং যদি আপনার https থাকে তবে আপনার সমস্ত শংসাপত্রগুলি বৈধ কিনা তা নিশ্চিত করুন অন্যথায় ক্লায়েন্টও একটি সতর্কতা পেয়েছে।

আশা করি এটি কাউকে সাহায্য করবে! দুঃখিত, উত্তর দিতে / অবদান করতে এক বছর সময় নিয়েছে। :-)


4
দুঃখিত, তবে এটিকে নিচু করে ফেলতে হবে বলে আমি মনে করি না যে এটি আসলে মূল প্রশ্নের উত্তর দেয়। তারা কেবলমাত্র একটি স্ট্যান্ডার্ড ডিএনএস লুক্কুল চায়, ব্যবহারকারীর পাবলিক আইপি নয়।
সাইমন পূর্ব

-4

আমার সংস্করণটি এরকম:

আমার সার্ভারে পিএইচপি:

<?php
    header('content-type: application/json; charset=utf-8');

    $data = json_encode($_SERVER['REMOTE_ADDR']);


    $callback = filter_input(INPUT_GET, 
                 'callback',
                 FILTER_SANITIZE_STRING, 
                 FILTER_FLAG_ENCODE_HIGH|FILTER_FLAG_ENCODE_LOW);
    echo $callback . '(' . $data . ');';
?>

পৃষ্ঠায় jQuery:

var self = this;
$.ajax({
    url: this.url + "getip.php",
    data: null,
    type: 'GET',
    crossDomain: true,
    dataType: 'jsonp'

}).done( function( json ) {

    self.ip = json;

});

এটি ক্রস ডোমেনের কাজ করে। এটি একটি স্থিতি পরীক্ষা করতে পারে। সে নিয়ে কাজ করছি।


4
দুঃখিত, তবে এটিকে নিচু করে ফেলতে হবে বলে আমি মনে করি না যে এটি আসলে মূল প্রশ্নের উত্তর দেয়। তারা কেবলমাত্র একটি স্ট্যান্ডার্ড ডিএনএস লুক্কুল চায়, ব্যবহারকারীর পাবলিক আইপি নয়। আপনার কোডটি security _GET স্যানিটাইজ করে না যা একটি বড় সুরক্ষা সমস্যা।
সাইমন পূর্ব

@ সিমন ইস্ট আমি মনে করি এটি আরও খারাপ। দেখে মনে হচ্ছে তারা ডিএনএস দ্বারা কোনও আইপি সন্ধান করতে চায়।
জোয়ারি

@ সিমোনইস্ট আপনি এটি কোনও সুরক্ষা সমস্যা প্রমাণ করতে পারবেন না কারণ আমি কীভাবে আমার পিএইচপি সংকলন করেছি তা আপনার কোনও ধারণা নেই। আপনার কঠোরতা কেবল নির্বোধ।
জোয়ারি

-10

যদি ক্লায়েন্ট জাভা ইনস্টল করে থাকে তবে আপনি এরকম কিছু করতে পারেন:

ipAddress = java.net.InetAddress.getLocalHost().getHostAddress();

তা ছাড়া, আপনাকে সম্ভবত একটি সার্ভার সাইড স্ক্রিপ্ট ব্যবহার করতে হবে।


8
কেন কেউ এই upvoting হয়? জাভা! = জাভাস্ক্রিপ্ট, এটি কোনও উত্তর নয়।
সোভেন মাওবি

4
খট খট. কে ওখানে? (... দীর্ঘ বিরতি) জাভা অ্যাপলেট
মাইক নেলসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.