我需要以某种方式检索客户端的IP地址使用JavaScript;没有服务器端代码,甚至没有SSI。
然而,我并不反对使用免费的第三方脚本/服务。
我需要以某种方式检索客户端的IP地址使用JavaScript;没有服务器端代码,甚至没有SSI。
然而,我并不反对使用免费的第三方脚本/服务。
当前回答
你可以使用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数据库。
声明:这个库是我写的
其他回答
Javascript / jQuery获取客户端的IP地址和位置(国家,城市)
你只需要嵌入一个带有“src”链接的标签到服务器。服务器将以Object / JSON的形式返回“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/?js"></script>
// You can use it
<script language="Javascript">
alert(codehelper_ip.IP);
alert(codehelper_ip.Country);
</script>
更多信息在Javascript检测真实IP地址加国家
如果你正在使用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>
我非常喜欢api.ipify.org,因为它同时支持HTTP和HTTPS。
下面是一些使用jQuery获取IP的例子。
基于HTTPS的JSON格式
https://api.ipify.org?format=json
$.getJSON(“https://api.ipify.org/?format=json”, function(e) { 警报(e.ip); }); <script src=“https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js”></script>
基于HTTP的JSON格式
http://api.ipify.org?format=json
$.getJSON(“http://api.ipify.org/?format=json”, function(e) { 警报(e.ip); }); <script src=“https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js”></script>
基于HTTPS的文本格式
如果你不想要JSON格式,也有一个通过HTTPS的明文响应
https://api.ipify.org
基于HTTP的文本格式
在HTTP上也有明文响应
http://api.ipify.org
这里的大多数答案都“绕过”服务器端代码的需要……攻击别人的服务器。这是一种完全有效的技术,除非您确实需要在不访问服务器的情况下获得IP地址。
传统上,如果没有某种插件,这是不可能的(即使这样,如果你在NAT路由器后面,你可能会得到错误的IP地址),但随着WebRTC的出现,实际上是有可能做到这一点…如果你的目标浏览器支持WebRTC(目前:Firefox, Chrome和Opera)。
请阅读mido的回答,了解如何使用WebRTC检索有用的客户端IP地址。
使用ipdata.co。
该API还提供地理位置数据,并拥有10个全球端点,每个端点每天能够处理>800M请求!
这个答案使用了一个非常有限的“测试”API键,仅用于测试几个调用。注册您自己的免费API密钥,每天最多可获得1500个开发请求。
$ . get (" https://api.ipdata.co?Api-key =test",函数(响应){ $(" #反应”). html (response.ip); }, " jsonp "); < script src = " https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js " > < /脚本> < pre id =“响应”> < / >之前
通常不可能,除非使用某种外部服务。