JavaScript是无法获得或存储在客户端的IP。但是由于JavaScript能够发送HTTP请求,而服务器端语言能够获取用户的公网IP,所以你可以利用这个获取IP。 换句话说,如果你想得到一个用户就取决于请求任何服务器检索公网IP。 随着WebRTC技术的发展,利用rtcpeerconnection可以检索用户私有IP。
使用 webRTC (获取私有IP)
RTCPeerConnection技术详细可见MDN
1 | /** |
使用第三方服务(获取公网IP)
不安全的http链接
1
2
3$.getJSON('http://ipinfo.io', function(data){
console.log(data);
});安全的https链接(推荐)
API URI | Response Type | Sample Output (IPv4) | Sample Output (IPv6) |
---|---|---|---|
https://api.ipify.org | text | 11.111.111.111 | ? |
https://api.ipify.org?format=json | json | {“ip”:”11.111.111.111”} | ? |
https://api.ipify.org?format=jsonp | jsonp | callback({“ip”:”11.111.111.111”}) | ? |
https://api.ipify.org?format=jsonp&callback=getip | jsonp | getip({“ip”:”11.111.111.111”}); | ? |
可以使用jsonp形式在页面上。1
2
3
4
5
6<script type="application/javascript">
function getIP(json) {
document.write("My public IP address is: ", json.ip);
}
</script>
<script type="application/javascript" src="https://api.ipify.org?format=jsonp&callback=getIP"></script>
Have fun 🥇