我需要以某种方式使用JavaScript检索客户端的IP地址;没有服务器端代码,甚至没有SSI。
但是,我不反对使用免费的第三方脚本/服务。
我需要以某种方式使用JavaScript检索客户端的IP地址;没有服务器端代码,甚至没有SSI。
但是,我不反对使用免费的第三方脚本/服务。
首先是实际答案:不可能仅使用客户端执行的代码来找到您自己的IP地址。
但是,您可以仅对https://api.muctool.de/whois进行GET 并收到类似获取客户端IP地址的信息
{
"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
}
您可以使用客户端可以调用的Flash对象,完全在客户端执行此操作,并且大多数情况下可以在JavaScript中执行。Flash 可以访问本地计算机的IP地址,这可能不是很有用。
确实没有可靠的方法来获取客户端计算机的IP地址。
这经历了一些可能性。如果用户具有多个接口,则使用Java的代码将中断。
http://nanoagent.blogspot.com/2006/09/how-to-find-evaluate-remoteaddrclients.html
从这里查看其他答案,听起来您可能想要获取客户端的公共IP地址,该地址可能是他们用来连接到互联网的路由器的地址。这里的许多其他答案都在谈论这一点。我建议创建并托管自己的服务器端页面,以接收请求并使用IP地址进行响应,而不是依赖于可能会或可能不会继续工作的其他人的服务。
使用ipdata.co。
该API还提供地理位置数据,并具有10个全局端点,每个端点每天可以处理超过800M个请求!
此答案使用的“测试” API密钥非常有限,仅用于测试几个调用。注册您自己的免费API密钥,每天最多可获得1500个开发请求。
$.get("https://api.ipdata.co?api-key=test", function (response) {
$("#response").html(response.ip);
}, "jsonp");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre id="response"></pre>
我非常喜欢,api.ipify.org
因为它同时支持HTTP和HTTPS。
以下是一些api.ipify.org
使用jQuery 获取IP的示例。
https://api.ipify.org?format=json
$.getJSON("https://api.ipify.org/?format=json", function(e) {
alert(e.ip);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
http://api.ipify.org?format=json
$.getJSON("http://api.ipify.org/?format=json", function(e) {
alert(e.ip);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
如果您不希望在JSON中使用它,那么还会通过HTTPS提供纯文本响应
https://api.ipify.org
还有通过HTTP的明文响应
http://api.ipify.org
Javascript / jQuery获取客户端的IP地址和位置(国家/地区,城市)
您只需要将带有“ 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>
有关更多信息,请参见Javascript Detect Real IP Address Plus Country
如果您使用的是jQUery,则可以尝试:
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>
除非您使用某种外部服务,否则通常是不可能的。
好吧,我偏离了这个问题,但是今天我有类似的需求,尽管我无法使用Javascript从客户端找到ID,但是我做了以下工作。
在服务器端:-
<div style="display:none;visibility:hidden" id="uip"><%= Request.UserHostAddress %></div>
使用JavaScript
var ip = $get("uip").innerHTML;
我正在使用ASP.Net Ajax,但是可以使用getElementById代替$ get()。
发生的是,我在页面上隐藏了div元素,并从服务器呈现了用户的IP。比起Java,我只是加载了那个值。
这可能对像您这样有类似要求的人(像我一样,但我还没有弄清楚)有帮助。
干杯!
您可以使用userinfo.io javascript库。
<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
});
您也可以使用requirejs加载脚本。
它会为您提供访问者的IP地址,以及有关其位置(国家,城市等)的一些数据。它基于maxmind geoip数据库。
免责声明:我写了这个库
通过使用Smart-IP.net Geo-IP API。例如,通过使用jQuery:
$(document).ready( function() {
$.getJSON( "http://smart-ip.net/geoip-json?callback=?",
function(data){
alert( data.host);
}
);
});
您可以为此使用我的服务http://ipinfo.io,它将为您提供客户端IP,主机名,地理位置信息和网络所有者。这是一个记录IP的简单示例:
$.get("http://ipinfo.io", function(response) {
console.log(response.ip);
}, "jsonp");
这是一个更详细的JSFiddle示例,该示例还打印了完整的响应信息,因此您可以看到所有可用的详细信息:http : //jsfiddle.net/zK5FN/2/
根据他们:
- 您可以无限制使用它(即使您每分钟执行数百万个请求)。
- ipify是完全开源的(请查看GitHub存储库)。
这是一个有效的JS示例(而不是想知道为什么这个答案投票这么少,请自己尝试一下以查看实际效果):
<script>
function getIP(json) {
alert("My public IP address is: " + json.ip);
}
</script>
<script src="https://api.ipify.org?format=jsonp&callback=getIP"></script>
太懒于复制/粘贴?我喜欢。这是一个演示
懒得点击? :O
注意:在运行演示之前请关闭Adblock Plus / uBlock&co ..否则,它将无法正常工作。
我与IPify团队无关。我只是认为有人为一般利益提供这样的服务真是太荒谬了。
你不能 您必须询问服务器。
在您的页面中包含以下代码: <script type="text/javascript" src="http://l2.io/ip.js"></script>
更多文档在这里
您可以对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;
}
另外,地理定位信息会在同一调用中返回。
您可以通过JSONP通过服务器端进行中继
在搜寻时找到它的同时,在SO上找到了它。我可以使用客户端Javascript执行DNS查找(从主机名到IP地址)吗?
<script type="application/javascript">
function getip(json){
alert(json.ip); // alerts the ip address
}
</script>
<script type="application/javascript" src="http://www.telize.com/jsonip?callback=getip"></script>
注意: telize.com API已于2015年11月15日永久关闭。
尝试这个
$.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);
});
});