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 相关文章推荐
一个不错的应用,用于提交获取文章内容,不推荐用
Mar 03 Javascript
js中prototype用法详细介绍
Nov 14 Javascript
浅析JavaScript中的常用算法与函数
Nov 21 Javascript
javascript中定义私有方法说明(private method)
Jan 27 Javascript
谷歌浏览器调试JavaScript小技巧
Dec 29 Javascript
一不小心就做错的JS闭包面试题
Nov 25 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
May 02 Javascript
jQuery实现动态删除LI的方法
May 30 jQuery
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
Oct 19 jQuery
node命令行工具之实现项目工程自动初始化的标准流程
Aug 12 Javascript
浅谈实现在线预览PDF的几种解决办法
Aug 10 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
Dec 24 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
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
2015/03/04 PHP
php数组随机排序实现方法
2015/06/13 PHP
PHP输出缓冲控制Output Control系列函数详解
2015/07/02 PHP
php实现的数字验证码及数字运算验证码
2015/07/30 PHP
JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
2014/10/17 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
2017/04/28 Javascript
React Native 环境搭建的教程
2017/08/19 Javascript
webpack之devtool详解
2018/02/10 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
jQuery实现购物车全功能
2021/01/11 jQuery
[01:14]DOTA2 7.22版本新增神杖效果展示(智力英雄篇)
2019/05/29 DOTA
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
Python理解递归的方法总结
2019/01/28 Python
python 发送json数据操作实例分析
2019/10/15 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
2020/01/08 Python
基于Python和PyYAML读取yaml配置文件数据
2020/01/13 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
如何用python写个模板引擎
2021/01/14 Python
python爬虫scrapy框架之增量式爬虫的示例代码
2021/02/26 Python
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
澳大利亚设计的优质鞋类和适合澳大利亚生活方式的服装:Rivers
2019/04/23 全球购物
介绍一下linux的文件系统
2012/03/20 面试题
建筑工地门卫岗位职责
2014/04/30 职场文书
开学典礼演讲稿
2014/05/23 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
python编写函数注意事项总结
2021/03/29 Python
使用 JavaScript 制作页面效果
2021/04/21 Javascript
一篇文章弄懂Python中的内建函数
2021/08/07 Python
Python制作表白爱心合集
2022/01/22 Python