node.js域名解析实现方法详解

本文实例讲述了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程序设计有所帮助。

(0)

相关推荐

  • 浅析Node.js:DNS模块的使用

    Nodejs的DNS模块包涵有关DNS查询和操作的方法,下面介绍该模块的基本用法以及实现一个DNS查询小工具. 1.获取DNS服务器地址 使用getServers方法,该方法返回一个IP地址组成的数组,如下所示: const dns = require('dns'); const servers = dns.getServers(); console.log(servers); 返回结果为: [ '114.114.114.114', '8.8.8.8', 'fec0:0:0:ffff::1',

  • node.js中的dns.getServers方法使用说明

    方法说明: 返回当前正在使用的 ip地址,以字符串形式返回 语法: 复制代码 代码如下: dns.getServers() 接收参数: 无 源码: 复制代码 代码如下: exports.getServers = function() {   return cares.getServers(); };

  • Node.js中DNS模块学习总结

    1. DNS 在Node.js中,提供DNS模块,以实现域名查找及域名解析的处理. 在DNS模块中,提供了三个主方法及一系列便捷方法. resolve方法:用于将一个域名解析为一组DNS记录. reverse方法: 用于将IP地址转换为一组域名. lookup方法: 用于将一个域名转换成IP地址. DNS模块中的其余便捷方法均为resolve方法的一种便捷形式. 2. 使用resolve方法将域名解析为DNS记录 `DNS.resolve(domain, [rrtype], callback(e

  • 150行Node.js实现的dns代理工具

    工具地址:github.com/Yi-love/dns- 安装: npm install dns-proxy-server -g 这个我觉得应该还是挺实用的一个工具.开发过程中我们需要配置IP来访问测试环境域名. 使用电脑开发测试还好,直接使用Switch hosts! , 修改域名IP即可访问特定IP的域名网站. 那么如何在手机上也尽可能容易的访问到测试环境呢? 手机如何访问到内部网络特定IP域名? 手机要访问到测试环境的域名,我们需要做的就是建立一个代理服务,然后手机通过代理服务访问测试环境

  • nodejs获取本机内网和外网ip地址的实现代码

    实现代码: 复制代码 代码如下: var os = require('os');function getLocalIP() {    var map = [];    var ifaces = os.networkInterfaces();    console.log(ifaces); for (var dev in ifaces) {        if (dev.indexOf('eth0') != -1) {            var tokens = dev.split(':');

  • Nodejs下DNS缓存问题浅析

    无意间看到一个文章,是关于nodejs下发送http请求不会缓存dns结果的.这意味着,如果你基于nodejs写了一个http采集程序,不提供dns缓存则会让每次请求都傻傻的重复解析域名为ip地址.听起来会非常影响性能不是么? 我的项目中,发送http请求并不是使用的node原生的http库,而是依赖一个常用的Request库.我查阅了一下该库的相关文档和github issue,也发现了一些和dns相关的帖子.不过多数说的是,关于dns问题,本身并不是Request库的范畴,而归结于nodej

  • 详解从买域名到使用pm2部署node.js项目全过程

    作为一个前端,对写好的项目怎么部署到服务器是一脸蒙圈的,但还是对这个很感兴趣,决定尝试一下,说干就干. 一.买域名和服务器 要部署项目肯定要买域名,这点是必不可少的,发现腾讯云上边有免费的服务器可用(只免费7天),于是就到腾讯云买了域名,又在腾讯云领了免费的服务器,当然这期间会让你实名认证. 买域名 领服务器 在腾讯云选择了CentOS服务器,接下来进行域名解析,然后对服务器进行设置(账号密码之类的) 域名解析 二.部署Node.js环境 (一)登录服务器,先更新一下(第一次使用服务器先更新下)

  • Node.js设置CORS跨域请求中多域名白名单的方法

    CORS 说到CORS,相信前端儿都不陌生,这里我就不多说了,具体可以看看这篇文章. CORS,主要就是配置Response响应头中的 Access-Control-Allow-Origin 属性为你允许该接口访问的域名.最常见的设置是: res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Credentials', 'true'); // 允许服务器端发送Cookie数据 然而,这样的

  • 获取本机IP地址的实例(JavaScript / Node.js)

    --web 客户端JavaScript <!-- 调用方式 --> <body onload="checkCookie()"></body> function getYourIP() { const RTCPeerConnection = window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection; if (RTCPeerConne

  • node.js域名解析实现方法详解

    本文实例讲述了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); }); 输出如下: 例

  • Node.js连接数据库实现过程详解

    目录 创建数据库 mysql 创建数据库 在前面的数据库入门中我们讲解了常用的sql语法以及实战,接下来我们来介绍一下如何在nodejs中使用数据库 在前面的文章中我们有手把手使用docker创建数据库,这里就直接沿用之前创建的数据库 首先启动docker,把之前的mysql容器运行起来 然后登入mysql客户端查看一下现有的数据库,以及user表 mysql 在前面我们已经使用mysql自带的客户端连接数据库进行一些操作, 到了node.js中我们可以用mysql这个npm包来连接mysql数

  • 详解JS数组Reduce()方法详解及高级技巧

    基本概念 reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值. reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组. 语法: arr.reduce(callback,[initialValue]) callback (执行数组中每个值的函数,包含四个参数) previousValue (上

  • 基于node.js之调试器详解

    1.在命令行窗口中,可以使用"node debug" 命令来启用调试器,代码如下: node debug<需要被执行的脚本文件名>接下来根据一个实例进行学习调试过程: 编写app.js文件进行调试: console.log('hello,word') function foo(){ console.log('hello,foo') return 100; } var bar = 'This is a pen'; var http = require('http') var

  • 在一个页面重复使用一个js函数的方法详解

    1.给每个拥有相同行为的问题DOM节点一个相同的class类,如question,同时给不同的问题一个不同的标识ID如 id="question1" id="question2"...诸如此. 2.给类.question绑定点击事件,在触发函数里面先判断当前点击的这个类的id,即可知道你要操作的是哪一个问题,然后调用你的那个伸缩函数即可. <!DOCTYPE html> <html> <head lang="en"&

  • node.js环境搭建图文详解

    身为一名Java开发者对前端充满无限的好奇,于是开始踏入前端的领地.要想先学习,搭建环境是必备,所以整理一篇node.js环境搭建教程. Node.js 是一个让 JavaScript 运行在服务端的开发平台 官网https://nodejs.org 下载 下载地址https://nodejs.org/en/download/ 本次下载LTS长期支持版,.zip解压版本(当然也可以使用安装版.msi),点击右侧[64-bit]即可下载. 解压 解压到自己所要存放的文件夹中,如图: 解压完成后会有

  • Node.js Domain 模块实例详解

    Node.js Domain(域) 简化异步代码的异常处理,可以捕捉处理try catch无法捕捉的异常. Domain 模块可分为隐式绑定和显式绑定: 隐式绑定: 把在domain上下文中定义的变量,自动绑定到domain对象 显式绑定: 把不是在domain上下文中定义的变量,以代码的方式绑定到domain对象 创建domain.js,代码如下: var eventEmitter=require("events").EventEmitter; var domain=require(

  • node.js http模块概念详解

    目录 node.js-http模块 服务器相关概念 什么是 http 模块 http模块的作用 创建最基本的web服务器 创建web 服务器的步骤 req请求对象 res 响应对象 中文乱码问题 node.js-http模块 服务器相关概念什么是 http 模块. 服务器相关概念 IP地址IP地址:是互联网设备的唯一标识.只有在知道对方 IP 地址的前提下,才能与对应的电脑之间进行数据通信. IPV4:点分十进制表示(32位) 192.168.101.15IPV6:采用冒号十六进制表示(128位

  • 卸载安装Node.js与npm过程详解

    下面记录一下在本地 Windwos 环境用 vagrant 搭建的虚拟机(Homestaead)和生产环境阿里云 CentOS 系统安装 Node.js 的步骤,以及 npm 安装依赖的不同之处. 使用源码编译的方式安装 node.js.首先将机子上的 Node.js 卸载,我直接贴上 Stack Overflow 上提供的步骤: 1.卸载 npm 和 Node.js 先卸载 npm,命令是:sudo npm uninstall npm -g,然后卸载 Node.js. Running whic

  • node.js 中间件express-session使用详解

    本文介绍的关于node.js中间件express-session的相关内容,分享出来供大家从参考学习,下面来一起看看详细的介绍: 一.为什么使用session? session运行在服务器端,当客户端第一次访问服务器时,可以将客户的登录信息保存. 当客户访问其他页面时,可以判断客户的登录状态,做出提示,相当于登录拦截. session可以和Redis或者数据库等结合做持久化操作,当服务器挂掉时也不会导致某些客户信息(购物车)丢失. 二.session的工作流程: 当浏览器访问服务器并发送第一次请

随机推荐