简体   繁体   English

我们如何在不与服务器建立任何连接的情况下检查我们的IP地址?

[英]How can we check our IP Address without making any connection to server?

I know connection required for getting information from server. 我知道从服务器获取信息所需的连接。 and through webRTC stun ping help us to check out local & private ip addresses. 并通过webRTC击晕帮助我们检查本地和私有IP地址。

Is there any way to get ip address with server ping or stun request? 有什么办法可以通过服务器ping或stun请求获取IP地址?

JavaScript code to get Ip JavaScript代码获取IP

//get the IP addresses associated with an account
function getIPs(callback){
    var ip_dups = {};

    //compatibility for firefox and chrome
    var RTCPeerConnection = window.RTCPeerConnection
        || window.mozRTCPeerConnection
        || window.webkitRTCPeerConnection;
    var useWebKit = !!window.webkitRTCPeerConnection;

    //bypass naive webrtc blocking using an iframe
    if(!RTCPeerConnection){
        //NOTE: you need to have an iframe in the page right above the script tag
        //
        //<iframe id="iframe" sandbox="allow-same-origin" style="display: none"></iframe>
        //<script>...getIPs called in here...
        //
        var win = iframe.contentWindow;
        RTCPeerConnection = win.RTCPeerConnection
            || win.mozRTCPeerConnection
            || win.webkitRTCPeerConnection;
        useWebKit = !!win.webkitRTCPeerConnection;
    }

    //minimal requirements for data connection
    var mediaConstraints = {
        optional: [{RtpDataChannels: true}]
    };

    var servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};

    //construct a new RTCPeerConnection
    var pc = new RTCPeerConnection(servers, mediaConstraints);

    function handleCandidate(candidate){
        //match just the IP address
        var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/
        var ip_addr = ip_regex.exec(candidate)[1];

        //remove duplicates
        if(ip_dups[ip_addr] === undefined)
            callback(ip_addr);

        ip_dups[ip_addr] = true;
    }

    //listen for candidate events
    pc.onicecandidate = function(ice){

        //skip non-candidate events
        if(ice.candidate)
            handleCandidate(ice.candidate.candidate);
    };

    //create a bogus data channel
    pc.createDataChannel("");

    //create an offer sdp
    pc.createOffer(function(result){

        //trigger the stun server request
        pc.setLocalDescription(result, function(){}, function(){});

    }, function(){});

    //wait for a while to let everything done
    setTimeout(function(){
        //read candidate info from local description
        var lines = pc.localDescription.sdp.split('\n');

        lines.forEach(function(line){
            if(line.indexOf('a=candidate:') === 0)
                handleCandidate(line);
        });
    }, 1000);
}

//Test: Print the IP addresses into the console
getIPs(function(ip){console.log(ip);});

The HTTP headers in a request will have source ip in it. 请求中的HTTP标头中将包含源ip。 And the system who received the requests, in your case the ipinfo.io, can check for this and send back the IP of the caller easily. 接收到请求的系统(在您的情况下为ipinfo.io)可以检查并轻松发回呼叫者的IP。

But, it seems ipinfo.io is only detecting your outbound server's ip address. 但是,似乎ipinfo.io仅检测出站服务器的IP地址。 That is, if you are behind a LAN or a Proxy Server, ipinfo.io detects only that IP address not your actual system's ip. 也就是说,如果您位于LAN或代理服务器后面,则ipinfo.io仅检测该IP地址,而不检测您实际系统的ip。 For this, HTTP header X-Forwarded-For is to be used. 为此,将使用HTTP标头X-Forwarded-For

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

相关问题 Javascript:如何不使用任何第三方就获得内部IP地址? - Javascript: How can we get internal IP address without using any third party? 我们可以在没有任何服务器的浏览器中运行我们的 webpack (UI) 构建吗? - Can we run our webpack (UI) build just like that in an browser without any server? 检查与IP地址的连接是否丢失 - Check if connection to IP address is lost 我们能否使用其IP地址准确获取任何设备的位置? 如果是,那是最好的API? - Can we get the position of any device accurately with its IP address? If yes, which is the best API for that? 如何从 JSON 获取没有端口的 IP 地址 - how can I get the IP address without port from JSON 我们如何检查TinyMCE编辑器是否已使用Javascript在我们的网页上初始化? - How can we check whether the TinyMCE editor is initialised on our webpage using Javascript? 服务器如何找到真实的客户端IP地址? - How can a server find real client IP address? 获取没有服务器端语言的IP地址 - Getting an IP address without a server side language 我们如何版本化我们的JavaScript文件 - How can we version our JavaScript files 如何检查我的网站上的脚本是否有任何要求? - How can I check if scrips on my site are making any requests?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM