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 相关文章推荐
xtree.js 代码
Mar 13 Javascript
jquery入门—数据删除与隔行变色以及图片预览
Jan 07 Javascript
JavaScript动态添加style节点的方法
Jun 09 Javascript
Perl Substr()函数及函数的应用
Dec 16 Javascript
AngularJS基础 ng-copy 指令实例代码
Aug 01 Javascript
node.js利用redis数据库缓存数据的方法
Mar 01 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
Mar 23 jQuery
微信小程序 空白页重定向解决办法
Jun 27 Javascript
jQuery实现ajax回调函数带入参数的方法示例
Jun 26 jQuery
vue实现前台列表数据过滤搜索、分页效果
May 28 Javascript
js抽奖转盘实现方法分析
May 16 Javascript
JavaScript编写开发动态时钟
Jul 29 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修改session_id示例代码
2014/01/08 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
2015/12/24 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
laravel框架添加数据,显示数据,返回成功值的方法
2019/10/11 PHP
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
GRID拖拽行的实例代码
2013/07/18 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
css如何让浮动元素水平居中
2015/08/07 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
两种方法解决javascript url post 特殊字符转义 + & #
2016/04/13 Javascript
js实现非常棒的弹出div
2016/10/06 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
2016/10/17 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
JS中的算法与数据结构之常见排序(Sort)算法详解
2019/08/16 Javascript
python实现12306抢票及自动邮件发送提醒付款功能
2018/03/08 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
2018/06/26 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
实现CSS3中的border-radius(边框圆角)示例代码
2013/07/19 HTML / CSS
Jo Malone美国官网:祖玛珑香水
2017/03/27 全球购物
阿迪达斯法国官方网站:adidas法国
2018/03/20 全球购物
PHP笔试题
2012/02/22 面试题
UNIX操作系统结构由哪几部分组成
2016/02/17 面试题
大三学生入党思想汇报
2014/01/02 职场文书
安全宣传标语口号
2014/06/06 职场文书
学雷锋志愿者活动方案
2014/08/21 职场文书
大四学生个人总结
2015/02/15 职场文书
挂职锻炼工作总结2015
2015/05/28 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
工作服管理制度范本
2015/08/06 职场文书
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers