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

来源:互联网 发布:个人域名如何备案 编辑:程序博客网 时间:2024/06/10 03:45

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之后会显示如下界面:
这里写图片描述

在输入框中输入网址,点击查询之后的结果:
这里写图片描述