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开发实战详解
- Node.js静态文件服务器实战(接触nodejs开发中比较实用的部分技巧,获益匪浅)
- JavaScript 进阶之 Vue.js + Node.js 入门实战开发
- Nodejs+Extjs+Mongodb开发第一天 Nodejs环境搭建
- Node.js开发入门—Stream用法详解
- node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用提高nodejs调试效率
- 2018最新实战项目之node.js+ES+Koa2+Parcel手把手教你开发一个短视频网站
- Node.js开发入门—Buffer用法详解
- React 16+Redux+React Router 4 Node.Js全栈开发招聘App项目实战视频
- NodeJS前端开发日记(2)AngularJS+Jade入门实战
- 第一天:Java源码级实战速成(通过动手实战类、对象等,通过Spark和Hadoop案例代码和源码解析具体指知识的应用、深度详解匿名接口在Spark开发中的运用)
- Hyperledger Fabric 1.0 实战开发系列 第四课 搭建node.js服务器
- Node.JS文件系统解析实例详解
- 详解Windows下运用Docker部署Node.js开发环境
- [js高手之路]jquery插件开发实战-选项卡详解
- Nodejs(一)--- Node.js安装及开发环境
- 详解Node.js开发中的express-session
- Node.js实现web解析DNS(四)
- Node.js开发入门—Buffer用法详解
- 详解通过源码解析Node.js中cluster模块的主要功能实现