node.js实现web解析dns
var http = require('http'), //服务器创建
    dns = require('dns'),   //DNS查询,主要负责解析当前DNS域名,返回DNS服务器IP地址
    fs = require('fs'),     //文件操作
    url = require('url'),   //url处理
    querystring = require('querystring');   //字符串处理,处理前端传回的字符串解析
http.createServer(function(req,res){
    var pathname = url.parse(req.url).pathname;
    req.setEncoding("utf8");//设置返回客户端页面的数据格式,如果不设置可能会出现乱码
    res.writeHead(200,{'Content-Type':'text/html'});
    router(res,req,pathname);//调用router方法来处理url路由
}).listen(3001,"127.0.0.1");
function router(res,req,pathname){
    switch(pathname){
        case "/parse":
            parseDns(res,req);
            break;
        default:
            goIndex(res,req);
    }
}
function goIndex(res,req){
    var readPath = __dirname+'/'+url.parse('index.html').pathname;
    var indexPage = fs.readFileSync(readPath);
    res.end(indexPage);
}
function parseDns(res,req){
    var postData="";
    req.addListener("data",function(postDataChunk){
        postData+=postDataChunk;
    });
    req.addListener("end",function(){
        var retData = getDns(postData,function(domain,addresses){
            res.writeHead(200,{'Content-Type':'text/html'});
            res.end(`
            <html>
                <head>
                    <meta http-equiv="content-type" content="text/html;charset=utf-8">
                </head>
                <body>
                <div style='text-align: center'>
                    Domain:<span style='color:red'>${domain}</span>
                    IP:<span style='color:red'>${addresses.join(',')}</span>
                </div>
                </body>
            </html>
            `)
        });
        return;
    })
}
function getDns(postData,callback){
    var domain = querystring.parse(postData).search_dns;//应用querystring模块来获取post数据中键值为search_dns的值
    dns.resolve(domain,function(err,addresses){
        if(!addresses){
            addresses=['不存在域名']
        }
        callback(domain,addresses);
    });
}
执行 node parse_dns_ex.js

查询结果:

node.js实现web解析dns的更多相关文章
- Express 4.x Node.js的Web框架
		为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3821150.html ... 
- 使用 Node.js 搭建 Web 服务器
		使用Node.js搭建Web服务器是学习Node.js比较全面的入门教程,因为实现Web服务器需要用到几个比较重要的模块:http模块.文件系统.url解析模块.路径解析模块.以及301重定向技术等, ... 
- Express 4.x Node.js的Web框架----《转载》
		本文使用node.js v0.10.28 + express 4.2.0 1 Express概述 Express 是一个简洁而灵活的node.js的MVC Web应用框架,提供一系列强大特性创建各种W ... 
- node.js之web开发 koa入门
		用Node.js开发Web服务器端,有几个显著的优势: 速度快,非常快!这得益于Node.js天生是异步的. 常见的Web框架包括:Express,Sails.js,koa,Meteor,DerbyJ ... 
- Node.js的学习(三)node.js 开发web后台服务
		一.Express -- Web开发框架 1.Express是什么? Express 是一个简洁而灵活.目前最流行的基于Node.js的Web开发框架, 提供了一系列强大特性帮助你创建各种 Web 应 ... 
- 快速使用node.js进行web开发
		首先关于node.js的学习,这里推荐一本比较好的教程,nodejs web开发指南,该书通俗易懂地将node.js语言特性讲解完之后,又从一个项目角度带领读者使用node.js学习web开发.相信这 ... 
- koa :    Express出品的下一代基于Node.js的web框架
		https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434501579966a ... 
- 7个Node.js的Web框架
		NodeJS也就是Node,是众所周知的使用javascript构建Web应用框架,它启动一个服务器非常简单,如下: var http = require('http'); http.createSe ... 
- Node.js学习笔记——Node.js开发Web后台服务
		一.简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ... 
随机推荐
- 2019牛客暑期多校训练营(第五场)G - subsequeue 1 (一题我真的不会的题)
			layout: post title: 2019牛客暑期多校训练营(第五场)G - subsequeue 1 (一题我真的不会的题) author: "luowentaoaa" c ... 
- bzoj 3837 pa2013 Filary
			bzoj 先搞第一问.考虑简单情况,如果\(m=2\),那么一定有个剩余类大小\(\ge \lceil\frac{n}{2}\rceil\),同时这也是答案下界 然后我们每次随机选出一个数\(a_i\ ... 
- 使用 flask-restful 编写 自己的 ai web service
			本项目在 win 平台采用 pycharm 编写, 技能与环境要求: python 基础, web 基础知识, python.exe = 3.6+ 算法>第四版,操作系统推荐<现代操作系统 ... 
- 无线传输模块HC-12
			无线传输模块HC-12使用 因为实验室的无人机需要使用一款无线传输模块进行遥控控制,我们讨论的中测试了HC-12,并对HC-12传输距离进行了简单测试.在此做下使用记录. 模块概述 HC-12 无线串 ... 
- WebAPI跨域问题处理
			1.按照https://dzone.com/articles/access-control-allow-origin-header-and-the-aspnet文章所述,在程序中配置允许跨域请求. 但 ... 
- php 多肽实例
			多态定义:只关心一个接口或者基类,而不关心一个对象的具体类.(同一类型,不同结果) 这里两个例子: 第一个,我们发现,基类定义了标准,子类进行了自我规则的实现.这是多态的一个要求.同时,这是满足重写: ... 
- Delphi 内部过程和函数
- 【AGC010 C】Cleaning
			题意 有一棵 \(n\) 个点的树,第 \(i\) 个节点有 \(a_i\) 个石子. 每次都可以选择一对不同的叶子节点,这对叶子节点路径上的所有点都必须要有石子.然后去掉这两个叶子节点路径上的每个节 ... 
- Java事务(转载)
			Java事务的类型有三种:JDBC事务.JTA(Java Transaction API)事务.容器事务. 1.JDBC事务 JDBC 事务是用 Connection 对象控制的.JDBC Conne ... 
- 10.Go-goroutine,waitgroup,互斥锁,channel和select
			10.1.goroutine goroutine的使用 //Learn_Go/main.go package main import ( "fmt" "time" ... 
