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 相关文章推荐
javascript数组使用调用方法汇总
Dec 08 Javascript
关于Jqzoom的使用心得 jquery放大镜效果插件
Apr 12 Javascript
关于捕获用户何时点击window.onbeforeunload的取消事件
Mar 06 Javascript
jquery分页插件AmSetPager(自写)
Apr 15 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
Nov 13 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
Mar 05 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
Nov 11 Javascript
jQuery实现验证年龄简单思路
Feb 24 Javascript
响应式表格之固定表头的简单实现
Aug 26 Javascript
Angular4.0动画操作实例详解
May 10 Javascript
vue.js中导出Excel表格的案例分析
Jun 11 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
Oct 23 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+javascript液晶时钟
2006/10/09 PHP
一段防盗连的PHP代码
2006/12/06 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
两个DIV等高的JS的实现代码
2007/12/23 Javascript
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
onbeforeunload与onunload事件异同点总结
2013/06/24 Javascript
jquery动态增加text元素以及删除文本内容实例代码
2013/07/01 Javascript
jquery 按钮状态效果 正常、移上、按下
2013/08/12 Javascript
jquery div拖动效果示例代码
2013/12/08 Javascript
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
jQuery实现模拟marquee标签效果
2015/07/14 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
获取url中用&隔开的参数实例(分享)
2017/05/28 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
JavaScript实现新年倒计时效果
2018/11/17 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
2019/05/02 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
微信小程序连续签到7天积分获得功能的示例代码
2020/08/20 Javascript
python3 打开外部程序及关闭的示例
2018/11/06 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
pandas 时间格式转换的实现
2019/07/06 Python
Django之使用内置函数和celery发邮件的方法示例
2019/09/16 Python
pytorch中图像的数据格式实例
2020/02/11 Python
python如何求100以内的素数
2020/05/27 Python
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
方正Java笔试题
2014/07/03 面试题
美术专业学生个人自我评价
2013/09/19 职场文书
二年级体育教学反思
2014/01/15 职场文书
校园歌手大赛策划书
2014/01/17 职场文书
领导班子整改措施
2014/10/24 职场文书
世界文化遗产导游词
2019/08/07 职场文书