如何获得客户';使用JavaScript的IP地址?

如何获得客户';使用JavaScript的IP地址?,javascript,jquery,ip-address,Javascript,Jquery,Ip Address,我需要使用JavaScript以某种方式检索客户端的IP地址;没有服务器端代码,甚至没有SSI 但是,我并不反对使用免费的第三方脚本/服务。这里的大多数答案都是“绕过”对服务器端代码的需要。。。攻击其他人的服务器。这是一种完全有效的技术,除非您确实需要在不访问服务器的情况下获取IP地址 传统上,如果没有某种插件,这是不可能的(即使那样,如果你在NAT路由器后面,你可能会得到错误的IP地址),但随着WebRTC的出现,这实际上是可能的。。。如果你的目标是(目前:Firefox、Chrome和Ope

我需要使用JavaScript以某种方式检索客户端的IP地址;没有服务器端代码,甚至没有SSI

但是,我并不反对使用免费的第三方脚本/服务。

这里的大多数答案都是“绕过”对服务器端代码的需要。。。攻击其他人的服务器。这是一种完全有效的技术,除非您确实需要在不访问服务器的情况下获取IP地址

传统上,如果没有某种插件,这是不可能的(即使那样,如果你在NAT路由器后面,你可能会得到错误的IP地址),但随着WebRTC的出现,这实际上是可能的。。。如果你的目标是(目前:Firefox、Chrome和Opera)

有关如何使用WebRTC检索有用的客户端IP地址的详细信息。

这里的大多数答案都是通过以下方式“解决”服务器端代码的需要。。。攻击其他人的服务器。这是一种完全有效的技术,除非您确实需要在不访问服务器的情况下获取IP地址

传统上,如果没有某种插件,这是不可能的(即使那样,如果你在NAT路由器后面,你可能会得到错误的IP地址),但随着WebRTC的出现,这实际上是可能的。。。如果你的目标是(目前:Firefox、Chrome和Opera)


了解如何使用WebRTC检索有用的客户端IP地址的详细信息。

除非使用某种外部服务,否则通常不可能。

除非使用某种外部服务,否则通常不可能。

获取客户端计算机IP地址的方法并不可靠

这经历了一些可能性。如果用户有多个接口,则使用Java的代码将中断


从这里的其他答案来看,听起来您可能想要获得客户机的公共IP地址,这可能是他们用来连接到internet的路由器的地址。这里有很多其他的答案都在谈论这个问题。我建议您创建并托管自己的服务器端页面,以便接收请求并使用IP地址进行响应,而不是依赖其他人的服务,这些服务可能会继续工作,也可能不会继续工作。

获取客户端计算机IP地址的方法并不可靠

这经历了一些可能性。如果用户有多个接口,则使用Java的代码将中断


从这里的其他答案来看,听起来您可能想要获得客户机的公共IP地址,这可能是他们用来连接到internet的路由器的地址。这里有很多其他的答案都在谈论这个问题。我建议您创建并托管自己的服务器端页面,以便接收请求并使用IP地址进行响应,而不是依赖于其他人的服务,这些服务可能会继续工作,也可能不会继续工作。

好吧,我不提这个问题了,但我今天也有类似的需求,尽管我无法从使用Javascript的客户端找到ID,但我做了以下工作

在服务器端:-

<div style="display:none;visibility:hidden" id="uip"><%= Request.UserHostAddress %></div>
我使用的是ASP.Net Ajax,但您可以使用getElementById而不是$get()

发生的事情是,我在页面上有一个隐藏的div元素,其中包含从服务器呈现的用户IP。而在Javascript中,我只是加载该值

这可能对像你这样有类似需求的人有帮助(比如我,我还没弄明白这一点)


干杯

好吧,我已经离开了这个问题,但我今天也有类似的需求,尽管我无法从使用Javascript的客户端找到ID,但我做了以下工作

在服务器端:-

<div style="display:none;visibility:hidden" id="uip"><%= Request.UserHostAddress %></div>
我使用的是ASP.Net Ajax,但您可以使用getElementById而不是$get()

发生的事情是,我在页面上有一个隐藏的div元素,其中包含从服务器呈现的用户IP。而在Javascript中,我只是加载该值

这可能对像你这样有类似需求的人有帮助(比如我,我还没弄明白这一点)


干杯

您可以使用JSONP通过服务器端进行中继

在谷歌搜索的时候,在这里找到了一个


函数getip(json){
警报(json.ip);//警报ip地址
}
注意:telize.com API已永久关闭


您可以使用JSONP通过服务器端进行中继

在谷歌搜索的时候,在这里找到了一个


函数getip(json){
警报(json.ip);//警报ip地址
}
注意:telize.com API已永久关闭


您可以对hostip.info或类似服务执行ajax调用

function myIP() {
    if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest();
    else xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

    xmlhttp.open("GET","http://api.hostip.info/get_html.php",false);
    xmlhttp.send();

    hostipInfo = xmlhttp.responseText.split("\n");

    for (i=0; hostipInfo.length >= i; i++) {
        ipAddress = hostipInfo[i].split(":");
        if ( ipAddress[0] == "IP" ) return ipAddress[1];
    }

    return false;
}

作为奖励,地理定位信息会在同一个调用中返回。

您可以对hostip.info或类似服务进行ajax调用

function myIP() {
    if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest();
    else xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

    xmlhttp.open("GET","http://api.hostip.info/get_html.php",false);
    xmlhttp.send();

    hostipInfo = xmlhttp.responseText.split("\n");

    for (i=0; hostipInfo.length >= i; i++) {
        ipAddress = hostipInfo[i].split(":");
        if ( ipAddress[0] == "IP" ) return ipAddress[1];
    }

    return false;
}
作为奖励,使用Smart-IP.net在同一次呼叫中返回地理定位信息。

。例如,通过使用jQuery:

$(document).ready( function() {
    $.getJSON( "http://smart-ip.net/geoip-json?callback=?",
        function(data){
            alert( data.host);
        }
    );
});
使用Smart-IP.net。例如,通过使用jQuery:

$(document).ready( function() {
    $.getJSON( "http://smart-ip.net/geoip-json?callback=?",
        function(data){
            alert( data.host);
        }
    );
});

在页面中包含此代码:


更多文档

在您的页面中包含此代码:


更多文档

我将提供一种方法,当我想在html页面中存储信息时,我经常使用这种方法,并且希望我的javascript能够读取信息,而不必向javascript传递参数。当脚本被外部引用而不是内联引用时,这尤其有用

但是,它不符合“无服务器端脚本”的标准。但是,如果可以在html中包含服务器端脚本,请执行以下操作:

在html页面的底部,即EndBody标记的正上方创建隐藏的标签元素

您的标签将如下所示:

<label id="ip" class="hiddenlabel"><?php echo $_SERVER['REMOTE_ADDR']; ?></label>
现在,变量“ip”等于ip地址。现在,您可以将ip传递给您的API请求

*两年后编辑* 两个小的改进:

我经常用这个
.data{
    display:none;
}
<script>
<script language="javascript" src="http://j.maxmind.com/app/geoip.js"></script>
<script language="javascript">
mmjsCountryCode = geoip_country_code();
mmjsCountryName = geoip_country_name();

</script>
function geoip_country_code() { return 'ID'; }
function geoip_country_name() { return 'Indonesia'; }
function geoip_city()         { return 'Jakarta'; }
function geoip_region()       { return '04'; }
function geoip_region_name()  { return 'Jakarta Raya'; }
function geoip_latitude()     { return '-6.1744'; }
function geoip_longitude()    { return '106.8294'; }
function geoip_postal_code()  { return ''; }
function geoip_area_code()    { return ''; }
function geoip_metro_code()   { return ''; }
function visitorsIP()   { return '123.123.123.123'; }
<script language="javascript" src="http://yourdomain.com/yourip.php"></script>
// First, embed this script in your head or at bottom of the page.
<script language="Javascript" src="http://www.codehelper.io/api/ips/?js"></script>
// You can use it
<script language="Javascript">
    alert(codehelper_ip.IP);
    alert(codehelper_ip.Country);
</script>
console.log(codehelper_ip); 
// First, embed this script in your head or at bottom of the page.
<script language="Javascript" src="http://www.codehelper.io/api/ips/?callback=yourcallback"></script>
// You can use it
<script language="Javascript">
    function yourcallback(json) {
       alert(json.IP);
     }
</script>
$.get("http://ipinfo.io", function(response) {
    console.log(response.ip);
}, "jsonp");
$.get("http://ipinfo.io", function(response) {
    alert(response.ip);
}, "jsonp");
$(document).ready(function () {
    $.getJSON("http://jsonip.com/?callback=?", function (data) {
        console.log(data);
        alert(data.ip);
    });
});
function ip_callback() {
    $.get("ajax.getIp.php",function(data){ return data; }
}
<?=$_SERVER['REMOTE_ADDR']?>
<div ng-controller="geoCtrl">
  <p ng-bind="ip"></p>
  <p ng-bind="hostname"></p>
  <p ng-bind="loc"></p>
  <p ng-bind="org"></p>
  <p ng-bind="city"></p>
  <p ng-bind="region"></p>
  <p ng-bind="country"></p>
  <p ng-bind="phone"></p>
</div>
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="http://code.angularjs.org/1.2.12/angular.min.js"></script>
<script src="http://code.angularjs.org/1.2.12/angular-route.min.js"></script>
<script>
'use strict';
var geo = angular.module('geo', [])
.controller('geoCtrl', ['$scope', '$http', function($scope, $http) {
  $http.jsonp('http://ipinfo.io/?callback=JSON_CALLBACK')
    .success(function(data) {
    $scope.ip = data.ip;
    $scope.hostname = data.hostname;
    $scope.loc = data.loc; //Latitude and Longitude
    $scope.org = data.org; //organization
    $scope.city = data.city;
    $scope.region = data.region; //state
    $scope.country = data.country;
    $scope.phone = data.phone; //city area code
  });
}]);
</script>
   $.get('http://jsonip.com/', function(r){ console.log(r.ip); });
   $.getJSON('http://jsonip.com/?callback=?', function(r){ console.log(r.ip); });
<script type="text/javascript" src="userinfo.0.0.1.min.js"></script>

UserInfo.getInfo(function(data) {
  alert(data.ip_address);
}, function(err) {
  // Do something with the error
});
<script>
function getIP(json) {
  alert("My public IP address is: " + json.ip);
}
</script>
<script src="https://api.ipify.org?format=jsonp&callback=getIP"></script>
jQuery.ajax( { 
  url: '//freegeoip.net/json/', 
  type: 'POST', 
  dataType: 'jsonp',
  success: function(location) {
     console.log(location)
  }
} );
https://api.ipify.org?format=json
  try {
var RTCPeerConnection = window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
if (RTCPeerConnection) (function () {
    var rtc = new RTCPeerConnection({ iceServers: [] });
    if (1 || window.mozRTCPeerConnection) {
        rtc.createDataChannel('', { reliable: false });
    };

    rtc.onicecandidate = function (evt) {
        if (evt.candidate) grepSDP("a=" + 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]; });
        LgIpDynAdd = displayAddrs.join(" or perhaps ") || "n/a";
        alert(LgIpDynAdd)
    }

    function grepSDP(sdp) {
        var hosts = [];
        sdp.split('\r\n').forEach(function (line) {
            if (~line.indexOf("a=candidate")) {
                var parts = line.split(' '),
                    addr = parts[4],
                    type = parts[7];
                if (type === 'host') updateDisplay(addr);
            } else if (~line.indexOf("c=")) {
                var parts = line.split(' '),
                    addr = parts[2];
                alert(addr);
            }
        });
    }
})();} catch (ex) { }
    $.getJSON("http://jsonip.com?callback=?", function (data) {
        alert("Your ip address: " + data.ip);
    });
$.getJSON('https://httpbin.org/ip', function(data) {
                console.log(data['origin']);
});
{
"ip": "88.217.152.15",
"city": "Munich",
"isp": "M-net Telekommunikations GmbH",
"country": "Germany",
"countryIso": "DE",
"postalCode": "80469",
"subdivisionIso": "BY",
"timeZone": "Europe/Berlin",
"cityGeonameId": 2867714,
"countryGeonameId": 2921044,
"subdivisionGeonameId": 2951839,
"ispId": 8767,
"latitude": 48.1299,
"longitude": 11.5732,
"fingerprint": "61c5880ee234d66bded68be14c0f44236f024cc12efb6db56e4031795f5dc4c4",
"session": "69c2c032a88fcd5e9d02d0dd6a5080e27d5aafc374a06e51a86fec101508dfd3",
"fraud": 0.024,
"tor": false
}