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中void(0)的具体含义解释
Feb 27 Javascript
JS 文件本身编码转换 图文教程
Oct 12 Javascript
理解Javascript_11_constructor实现原理
Oct 18 Javascript
jQuery实现单行文字间歇向上滚动源代码
Jun 02 Javascript
Javascript 浮点运算的问题分析与解决方法
Aug 27 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
Aug 31 Javascript
如何解决ligerUI布局时Center中的Tab高度大小
Nov 24 Javascript
Bootstrap零基础入门教程(二)
Jul 18 Javascript
Angular2平滑升级到Angular4的步骤详解
Mar 29 Javascript
分享19个JavaScript 有用的简写写法
Jul 07 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
Sep 18 Javascript
基于jQuery实现的设置文本区域的光标位置
Jun 15 jQuery
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转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
jquery+ajax请求且带返回值的代码
2015/08/12 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2016/09/17 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
利用纯js + transition动画实现移动端web轮播图详解
2017/09/10 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
vue.js中ref及$refs的使用方法解析
2019/10/08 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
python 换位密码算法的实例详解
2017/07/19 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
如何理解python对象
2020/06/21 Python
移动Web—CSS为Retina屏幕替换更高质量的图片
2012/12/24 HTML / CSS
德国高性价比网上药店:medpex
2017/07/09 全球购物
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
求职推荐信
2013/10/28 职场文书
行政经理的岗位职责
2013/11/23 职场文书
共筑中国梦演讲稿
2014/04/23 职场文书
村干部培训方案
2014/05/02 职场文书
房展策划方案
2014/06/07 职场文书
党员个人剖析材料
2014/09/30 职场文书
践行三严三实心得体会
2014/10/13 职场文书
教师培训简讯
2015/07/20 职场文书
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python
《艾尔登法环》Boss腐烂树灵很有可能是《黑暗之魂3》的一个废案
2022/04/11 其他游戏
微信小程序 WeUI扩展组件库的入门教程
2022/04/21 Javascript
Java服务调用RestTemplate与HttpClient的使用详解
2022/06/21 Java/Android