前端Js獲取本網IP和外網IP方法總彙
我們應該知道一臺電腦需要兩個ip才可以上網,一個是本地的內網ip(本地ip),另一個就是外網ip(公網ip)。值得說明的是:外網ip具有世界範圍的唯一性,而內網ip只在區域網內部具有唯一性。並且一個區域網裡所有電腦的內網IP是互不相同的,但共用一個外網IP。
下面我們通過js來分別獲取當前電腦的內網ip和外網ip。
js獲取內網ip
方式一:新浪的IP地址查詢介面
<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
<script>
console.log(returnCitySN["cip"]+','+returnCitySN["cname"])
</script>
方式二:ipify介面,get請求獲取
<script>
function get(url,cb){
var httpRequest = new XMLHttpRequest();
httpRequest.open('GET', url, true);
httpRequest.send();
httpRequest.onreadystatechange = function () {
if (httpRequest.readyState == 4 && httpRequest.status == 200) {
var json = httpRequest.responseText;
cb(json);
}
};
}
get("https://api.ipify.org/?format=json",function(data){
data=JSON.parse(data);
console.log(data.ip);
});
</script>
方式三:其它可獲取公網IP的網址
http://www.fly63.com/php/ipquery/(推薦,本站推出的工具,除了查詢本機公網IP或本地IP外,還支援查詢域名所在的伺服器IP)
http://ip.360.cn/IPShare/info
http://myip.com.tw/
http://ip.xianhua.com.cn/
https://www.ip.cn/
https://www.123cha.com/ip/
https://ip38.com/
http://ip.chinaz.com
https://www.taobao.com/help/getip.php(推薦,天貓和淘寶都需要使用)
JS獲取內網IP
<script type="text/JavaScript">
function getIP(callback) {
let recode = {};
let RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
// 如果不存在則使用一個iframe繞過
if (!RTCPeerConnection) {
// 因為這裡用到了iframe,所以在呼叫這個方法的script上必須有一個iframe標籤
// <iframe id="iframe" sandbox="allow-same-origin" style="display:none;"></iframe>
let win = iframe.contentWindow;
RTCPeerConnection = win.RTCPeerConnection || win.mozRTCPeerConnection || win.webkitRTCPeerConnection;
}
//建立例項,生成連線
let pc = new RTCPeerConnection();
// 匹配字串中符合ip地址的欄位
function handleCandidate(candidate) {
let ip_regexp = /([0-9]{1,3}(\.[0-9]{1,3}){3}|([a-f0-9]{1,4}((:[a-f0-9]{1,4}){7}|:+[a-f0-9]{1,4}){6}))/;
let ip_isMatch = candidate.match(ip_regexp)[1];
if (!recode[ip_isMatch]) {
callback(ip_isMatch);
recode[ip_isMatch] = true;
}
}
//監聽icecandidate事件
pc.onicecandidate = (ice) => {
if (ice.candidate) {
handleCandidate(ice.candidate.candidate);
}
};
//建立一個偽資料的通道
pc.createDataChannel('');
pc.createOffer((res) => {
pc.setLocalDescription(res);
}, () => {});
//延遲,讓一切都能完成
setTimeout(() => {
let lines = pc.localDescription.sdp.split('\n');
lines.forEach(item => {
if (item.indexOf('a=candidate:') === 0) {
handleCandidate(item);
}
})
}, 1000);
}
//呼叫
getIP( function (ip) {
console.log(ip);
})
</script>
相關文章
- 工具網站推薦 - 獲取本機外網IP網站
- 獲取外網出口ip
- 獲取手機外網IP
- jQuery獲取本機ip地址jQuery
- 獲取Linux本機IP命令Linux
- python如何獲取本機ipPython
- js根據ip地址獲取省份城市的方法JS
- java獲取本機的ip地址Java
- 獲取本機電腦IP的正確使用方法
- iOS 獲取裝置uuid,公網ip,手機ip等資訊iOSUI
- js獲取裝置資訊的方法彙總JS
- 內網IP/外網IP/NAT之間的關係-VeCloud內網Cloud
- 使用JS獲取當前地理位置方法彙總JS
- 網路和IP
- (轉)芝麻代理趣解:什麼是動態ip、內網IP、以及外網ip內網
- Java實現獲取本機Ip的工具類Java
- saltstack獲取IP地址
- PHP獲取IP地址的方法,防止偽造IP地址注入攻擊PHP
- 什麼是公網IP、內網IP和NAT轉換?內網
- 解釋下內網IP和公網IP是什麼?內網
- js_原生js獲取當前的使用者ipJS
- js根據IP地址獲取當前的省市JS
- 虛擬機器網路設定 與dhcp 獲取ip虛擬機
- 網路爬蟲如何獲取IP進行資料抓取爬蟲
- 網際網路下外網代理IP的應用
- 國外免費代理ip地址密碼如何獲取?密碼
- python爬蟲從ip池獲取隨機IPPython爬蟲隨機
- js獲取使用者當前所在城市(ip)JS
- js根據ip地址獲取城市地理位置JS
- Bash命令查詢本機公網IP
- Oracle中獲取主機名和IP地址Oracle
- 獲取pytdx行情伺服器ip和port伺服器
- 獲取爬蟲動態IP的三種方法爬蟲
- 如何用js獲取當前時間和ip地址以及當前城市JS
- Python 基礎練習 —— 獲取本機 Mac 地址、ip 地址和主機名PythonMac
- 最新國外代理ip免費網址
- 三分鐘教你看懂動態ip 區分內網和外網內網
- IP子網劃分概念:IP地址,子網和閘道器配置——VecloudCloud