您的位置:首页 > Web前端 > Node.js

Node.JS解析DNS(NodeJS开发实战详解)

2017-09-10 22:27 1026 查看

Node.JS解析DNS(NodeJS开发实战详解)

本篇博文实现使用Node.JS解析DNS:

需要加载的模块:

var http = require(‘http’) //服务器创建

dns = require(‘dns’) //DNS查询

fs =require(‘fs’) //文件操作

url = require(‘url’)//url处理

querystring = require(“querystring”)//字符串处理

下面是parse_dns.js文件代码:

/* 首先 require 加载需要的 Node.js 原生模块 */
var http = require('http'), //服务器创建
dns = require('dns'), //DNS查询
fs = require('fs'),  //文件操作
url = require('url') //url 处理
querystring = require("querystring") //字符串处理

/* 创建http 服务器*/
http.createServer(function (req, res) {
/* 写 http head 返回html,因此Content-Type为html*/
var pathname = url.parse(req.url).pathname
req.setEncoding("utf8");
res.writeHead(200, {'Content-Type':'text/html'});
router(res,req,pathname);

}).listen(3000,'127.0.0.1');

/* 打印运行log*/
console.log('Server running at http:127.0.01');

function router(res, req, pathname) {
switch(pathname){
case "/parse":
parseDns(res,req);
break;
default:
goIndex(res,req);
}
}

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><div style='text-align:center'>" +
"Domain:<span style='color:red'>" + domain + "" +
"</span> IP:<span style='color:red'>" +
addresses.join(',') + "</span></div></html>");

});
return;
});
}

function goIndex(res,req) {
var readPath = __dirname + '/' + url.parse('index.html').pathname;
var indexPage = fs.readFileSync(readPath);
/*返回*/
res.end(indexPage);
}

function getDns(postData,callback){
var domain = querystring.parse(postData).search_dns
dns.resolve(domain, function (err, address) {
if(!address){
address = ['不存在域名']
}
callback(domain,address);
});
}


下面是index.html文件代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>DNS查询</title>
</head>
<body>
<h1 style="text-align: center">DNS 查询工具</h1>
<div style="text-align: center">
<form action="/parse" method="post">
查询DNS: <input type="text" name="search_dns">
<input type="submit" value="查询">
</form>
<div id='check_result'></div>
</div>
</body>
</html>


运行parse_dns.js并在浏览器输入127.0.0.1:3000之后会显示如下界面:



在输入框中输入网址,点击查询之后的结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  node-js 解析DNS