如何获得客户';使用JavaScript的IP地址?
我需要使用JavaScript以某种方式检索客户端的IP地址;没有服务器端代码,甚至没有SSI 但是,我并不反对使用免费的第三方脚本/服务。这里的大多数答案都是“绕过”对服务器端代码的需要。。。攻击其他人的服务器。这是一种完全有效的技术,除非您确实需要在不访问服务器的情况下获取IP地址 传统上,如果没有某种插件,这是不可能的(即使那样,如果你在NAT路由器后面,你可能会得到错误的IP地址),但随着WebRTC的出现,这实际上是可能的。。。如果你的目标是(目前:Firefox、Chrome和Opera)如何获得客户';使用JavaScript的IP地址?,javascript,jquery,ip-address,Javascript,Jquery,Ip Address,我需要使用JavaScript以某种方式检索客户端的IP地址;没有服务器端代码,甚至没有SSI 但是,我并不反对使用免费的第三方脚本/服务。这里的大多数答案都是“绕过”对服务器端代码的需要。。。攻击其他人的服务器。这是一种完全有效的技术,除非您确实需要在不访问服务器的情况下获取IP地址 传统上,如果没有某种插件,这是不可能的(即使那样,如果你在NAT路由器后面,你可能会得到错误的IP地址),但随着WebRTC的出现,这实际上是可能的。。。如果你的目标是(目前:Firefox、Chrome和Ope
了解如何使用WebRTC检索有用的客户端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中,我只是加载该值
这可能对像你这样有类似需求的人有帮助(比如我,我还没弄明白这一点)
干杯 您可以使用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;
}
作为奖励,使用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请求
*两年后编辑*
两个小的改进:
我经常使用这种方法,但称之为标签class=“data”
,因为实际上,它是存储数据的一种方式。类名“hiddenlabel”有点愚蠢
第二个修改在样式表中,而不是可见性:隐藏:
.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>
它还没有真正回答这个问题,因为
不包含IP(尽管我打赌它使用IP获取国家)
但是,制作一个弹出类似于
function visitorsIP() { return '123.123.123.123'; }
去吧。穿上
那就做吧
<script language="javascript" src="http://yourdomain.com/yourip.php"></script>
问题特别提到不要使用第三方脚本。没有别的办法。Javascript无法知道您的IP。但是其他可以通过javascript访问的服务器也可以正常工作,没有任何问题。(国家、城市)
您只需要将带有“src”链接的标记嵌入到服务器。服务器将返回“codehelper_ip”作为对象/JSON,您可以立即使用它
// 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>
它将向您显示有关返回对象的更多信息
如果需要回调函数,请尝试以下操作:
// 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>
//首先,将此脚本嵌入头部或页面底部。
//你可以用它
函数回调(json){
警报(json.IP);
}
您可以使用我的服务,它将为您提供客户端IP、主机名、地理位置信息和网络所有者。下面是一个记录IP的简单示例:
$.get("http://ipinfo.io", function(response) {
console.log(response.ip);
}, "jsonp");
这里有一个更详细的JSFIDLE示例,它还打印出完整的响应信息,因此您可以看到所有可用的详细信息:试试这个
或
如果要以某种方式包含文件,可以执行一个简单的ajax获取:
function ip_callback() {
$.get("ajax.getIp.php",function(data){ return data; }
}
而ajax.getIp.php
将是:
<?=$_SERVER['REMOTE_ADDR']?>
Appspot.com回调服务不可用。ipinfo.io似乎正在工作
我做了额外的一步,用AngularJS检索了所有地理信息。(感谢里卡多)看看吧
<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>
"严格使用",;
var geo=angular.module('geo',[])
.controller('geoCtrl',['$scope','$http',函数($scope,$http){
$http.jsonp('http://ipinfo.io/?callback=JSON_CALLBACK')
.成功(功能(数据){
$
// 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
}