node.js域名解析实现方法详解


Posted in Javascript onNovember 05, 2019

本文实例讲述了node.js域名解析实现方法。分享给大家供大家参考,具体如下:

域名解析:dns.lookup()

比如我们要查询域名 www.qq.com 对应的ip,可以通过 dns.lookup()

var dns = require('dns');
dns.lookup('www.qq.com', function(err, address, family){
  if(err) throw err;
  console.log('例子A: ' + address);
});

输出如下:

例子A: 182.254.34.74

我们知道,同一个域名,可能对应多个不同的ip。那么,如何获取一个域名对应的多个ip呢?可以这样。

var dns = require('dns');
var options = {all: true};
dns.lookup('www.qq.com', options, function(err, address, family){
  if(err) throw err;
  console.log('例子B: ' + address);
});

输出如下:

例子B: [{"address":"182.254.34.74","family":4},{"address":"240e:e1:8100:28::2:16","family":6}]

域名解析:dns.resolve4()

上文的例子,也可以通过 dns.resolve4() 来实现。

var dns = require('dns');
dns.resolve4('id.qq.com', function(err, address){
  if(err) throw err;
  console.log( JSON.stringify(address) );
});

输出如下:

["61.151.186.39","101.227.139.179"]

如果要获取IPv6的地址,接口也差不多,不赘述。

dns.lookup()跟dns.resolve4()的区别

从上面的例子来看,两个方法都可以查询域名的ip列表。那么,它们的区别在什么地方呢?

可能最大的差异就在于,当配置了本地Host时,是否会对查询结果产生影响。

  • dns.lookup():有影响。
  • dns.resolve4():没有影响。

举例,在hosts文件里配置了如下规则。

127.0.0.1 www.qq.com

运行如下对比示例子,就可以看到区别。

var dns = require('dns');
dns.lookup('www.qq.com', function(err, address, family){
  if(err) throw err;
  console.log('配置host后,dns.lokup =>' + address);
});
dns.resolve4('www.qq.com', function(err, address, family){
  if(err) throw err;
  console.log('配置host后,dns.resolve4 =>' + address);
});

输出如下

➜  2016.11.03-node-dns git:(master) ✗ node lookup-vs-resolve4.js
配置host后,dns.resolve4 =>182.254.34.74
配置host后,dns.lokup =>127.0.0.1

其他接口

对DNS有了解的同学,应该对A记录、NS记录、CNAME等不陌生,同样可以通过相应的API进行查询,感兴趣的可以自行尝试下。

希望本文所述对大家node.js程序设计有所帮助。

Javascript 相关文章推荐
离开页面时检测表单元素是否被修改,提示保存的js代码
Aug 25 Javascript
js TextArea的选中区域处理
Dec 28 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
Mar 02 Javascript
JavaScript获取图片像素颜色并转换为box-shadow显示
Mar 11 Javascript
JavaScript关于提高网站性能的几点建议(一)
Jul 24 Javascript
JavaScript蒙板(model)功能的简单实现代码
Aug 04 Javascript
微信小程序之仿微信漂流瓶实例
Dec 09 Javascript
js图片放大镜实例讲解(必看篇)
Jul 17 Javascript
vue中路由验证和相应拦截的使用详解
Dec 13 Javascript
浅谈Vue内置component组件的应用场景
Mar 27 Javascript
vue组件横向树实现代码
Aug 02 Javascript
js使用formData实现批量上传
Mar 27 Javascript
node.js文件操作系统实例详解
Nov 05 #Javascript
Vue中使用matomo进行访问流量统计的实现
Nov 05 #Javascript
node.js实现简单的压缩/解压缩功能示例
Nov 05 #Javascript
js实现随机点名程序
Sep 17 #Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
Nov 05 #Javascript
Vue通过WebSocket建立长连接的实现代码
Nov 05 #Javascript
原生js实现随机点名功能
Nov 05 #Javascript
You might like
php中显示数组与对象的实现代码
2011/04/18 PHP
php session安全问题分析
2011/06/24 PHP
javascript call和apply方法
2008/11/24 Javascript
Node.js实现Excel转JSON
2015/04/24 Javascript
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
2016/12/15 Javascript
bootstrap时间插件daterangepicker使用详解
2017/10/19 Javascript
浅谈Vue.js路由管理器 Vue Router
2018/08/16 Javascript
前后端如何实现登录token拦截校验详解
2018/09/03 Javascript
vue实现一个炫酷的日历组件
2018/10/08 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
[00:12]2018DOTA2亚洲邀请赛 Somnus丶M出阵单挑
2018/04/06 DOTA
使用Python的Scrapy框架编写web爬虫的简单示例
2015/04/17 Python
小小聊天室Python代码实现
2016/08/17 Python
Python中遇到的小问题及解决方法汇总
2017/01/11 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
python 实现兔子生兔子示例
2019/11/21 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
Html5 webRTC简单实现视频调用的示例代码
2020/09/23 HTML / CSS
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
J2EE相关知识面试题
2013/08/26 面试题
公司门卫管理制度
2014/02/01 职场文书
护理不良事件检讨书
2014/02/06 职场文书
高中生评语大全
2014/04/25 职场文书
活动总结格式范文
2014/04/26 职场文书
好听的队名和口号
2014/06/09 职场文书
学校地质灾害防治方案
2014/06/10 职场文书
医院合作协议书
2014/08/19 职场文书
上课睡觉万能检讨书
2015/02/17 职场文书
2015年健康教育工作总结
2015/04/10 职场文书
MySQL查询学习之基础查询操作
2021/05/08 MySQL
Pytorch实现图像识别之数字识别(附详细注释)
2021/05/11 Python
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis