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 相关文章推荐
在 IE 中调用 javascript 打开 Excel 表
Dec 21 Javascript
jquery tools 系列 scrollable(2)
Sep 06 Javascript
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
Sep 15 Javascript
深入了解javascript中的prototype与继承
Apr 14 Javascript
轻量级的原生js日历插件calendar.js使用指南
Apr 28 Javascript
理解js对象继承的N种模式
Jan 25 Javascript
纯js的右下角弹窗实例
Mar 12 Javascript
基于js 各种排序方法和sort方法的区别(详解)
Jan 03 Javascript
JavaScript 中的 this 工作原理
Jun 20 Javascript
关于JavaScript中高阶函数的魅力详解
Sep 07 Javascript
vue组件间的参数传递实例详解
Apr 26 Javascript
JS document内容及样式操作完整示例
Jan 14 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开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
php中关于socket的系列函数总结
2015/05/18 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
jquery 常用操作方法
2010/01/28 Javascript
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
任意Json转成无序列表的方法示例
2016/12/09 Javascript
jQuery Validation Engine验证控件调用外部函数验证的方法
2017/01/18 Javascript
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
node实现登录图片验证码的示例代码
2018/04/20 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
2019/04/30 Javascript
vue配置接口域名方法总结
2019/05/12 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
python获取图片颜色信息的方法
2015/03/18 Python
Python 创建子进程模块subprocess详解
2015/04/08 Python
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
2020/04/21 Python
Python读写锁实现实现代码解析
2020/11/28 Python
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
异常和异常类的概念
2014/09/12 面试题
网上常见的一份Linux面试题(多项选择部分)
2015/02/07 面试题
投标邀请书范文
2014/01/31 职场文书
求职个人评价范文
2014/04/09 职场文书
七夕活动策划方案
2014/08/16 职场文书
工作证明格式及范本
2014/09/12 职场文书
产品质量保证书范本
2015/02/27 职场文书
Requests什么的通通爬不了的Python超强反爬虫方案!
2021/05/20 Python
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
关于Nginx中虚拟主机的一些冷门知识小结
2022/03/03 Servers