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 相关文章推荐
基于jquery的商品展示放大镜
Aug 07 Javascript
Jquery通过Ajax访问XML数据的小例子
Nov 18 Javascript
详解addEventListener的三个参数之useCapture
Mar 16 Javascript
JavaScript实现网页对象拖放功能的方法
Apr 15 Javascript
浅谈JavaScript中的字符编码转换问题
Jul 07 Javascript
基于JS实现的笛卡尔乘积之商品发布
May 13 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
Feb 22 Javascript
微信小程序图片选择区域裁剪实现方法
Dec 02 Javascript
Angular 作用域scope的具体使用
Dec 11 Javascript
实例讲解JavaScript截取字符串
Nov 30 Javascript
JavaScript私有变量实例详解
Jan 24 Javascript
微信小程序移动拖拽视图-movable-view实例详解
Aug 17 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分页显示制作详细讲解
2006/12/05 PHP
php 正则表达式小结
2009/08/31 PHP
PHP三层结构(上) 简单三层结构
2010/07/04 PHP
php+mysqli批量查询多张表数据的方法
2015/01/29 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
禁止F5等快捷键的JS代码
2007/03/06 Javascript
Javascript 构造函数,公有,私有特权和静态成员定义方法
2009/11/30 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
jQuery插件实现屏蔽单个元素使用户无法点击
2013/04/12 Javascript
JS求平均值的小例子
2013/11/29 Javascript
Jquery Uploadify上传带进度条的简单实例
2014/02/12 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
利用JavaScript脚本实现滚屏效果的方法
2015/07/07 Javascript
工厂模式在JS中的实践
2017/01/18 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
2017/02/20 Javascript
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
总结js函数相关知识点
2018/02/27 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
vue拖拽排序插件vuedraggable使用方法详解
2020/08/21 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
Node.js API详解之 dns模块用法实例分析
2020/05/15 Javascript
[00:36]我的中国心——Serenity vs Fnatic
2018/08/21 DOTA
一则python3的简单爬虫代码
2014/05/26 Python
Python for Informatics 第11章之正则表达式(四)
2016/04/21 Python
python实现图书馆研习室自动预约功能
2018/04/27 Python
python清除函数占用的内存方法
2018/06/25 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
Django如何在不停机的情况下创建索引
2020/08/02 Python
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
预备党员转正思想汇报
2014/01/12 职场文书
财务部经理岗位职责
2014/02/03 职场文书
办公室岗位职责
2014/02/12 职场文书
消防应急演练方案
2014/02/12 职场文书
森林病虫害防治方案
2014/06/02 职场文书