关闭

前端Js获取本网IP和外网IP方法总汇

时间: 2020-10-02阅读: 495标签: 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>


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/9672

关闭

vue-cli启动本地服务,局域网下通过ip访问不到的原因

新开发了一个vue-cli项目,想通过手机查看效果,发现访问不到,ip地址和端口号都没错但是手机访问不到,在本机电脑浏览器输入ip端口号一样访问不到,只能通过localhost:8080访问到,同一局域网下其他的手机和电脑并不能通过ip地址访问调试

node.js监听不同ip地址的差异

IP地址一共分为A~E5类,它们分类的依据是其net-id所占的字节长度以及网络号前几位。127.0.0.1:回环地址。该地址指电脑本身,主要预留测试本机的TCP/IP协议是否正常。只要使用这个地址发送数据,则数据包不会出现在网络传输过程中。

利用宝塔面板计划任务shell脚本扫描恶意IP

我们需要找到恶意ip,可以利用脚本分析在一分钟单个IP访问的频率,超过一定的频率(一般来正常的访问,一分钟内应该不超过60次,你可以设置为更小),即认定为恶意IP。宝塔面板的shell脚本如下:

nginx 对同一 ip 访问请求速率限制

模块ngx_http_limit_req_module,所述ngx_http_limit_req_module模块(0.7.21)用于限制每一个定义的键值的请求的处理速率,特别是从一个单一的IP地址的请求的处理速率。使用“漏桶”方法进行限制。

子网掩码的概念、规则

子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码的设定必须遵循一定的规则

Js正则表达式验证IP地址

正则验证合法_有效的IP地址(ipv4/ipv6),不墨迹直接上代码,正则表达式:/^*****$/,JS函数方法:

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!