Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)


Posted in Javascript onSeptember 18, 2017

在 Node.JS 中进行端口扫描还是比较方便的,一般会有广播和轮询两种方式。即使用广播和扫描,使用广播发出的消息有时会被路由器屏蔽,所以并不可靠。

使用node.js中的net模块,可以直接尝试向目录主机的某个端口进行连接,如果能建立连接,则说明该地址存在服务器。

var socket = new Socket()
socket.connect(port, host)
socket.on('connect', function() {
 //找到port 和 host 地址
})

所以只要进行255次扫描,则可找到同一网段内所有的Web服务器了。完整的示例代码如下,使用Node.JS扫描的速度极快,几秒内即可完成扫描。

var net   = require('net')
var Socket = net.Socket
//待扫描的开始网段,可换成192.168.0
var ip   = '10.0.0'
var port  = 80
var scan = function(host, cb) {
 var socket = new Socket()
 var status = null
 socket.setTimeout(1500)
 socket.on('connect', function() {
  socket.end()
  cb && cb(null, host)
 })
 socket.on('timeout', function() {
  socket.destroy()
  cb && cb(new Error('timeout'), host)
 })
 socket.on('error', function(err) {
  cb && cb(err, host)
 })
 socket.on('close', function(err) {
 })
 socket.connect(port, host)
}
for(var i = 1; i <= 255; i++ ) {
 scan(ip+'.'+i, function(err, host) {
  if (err) {
   console.log('Not found', host)
   return
  }
  console.log("Found: ", host)
 })
}

输出结果:

Found: 10.0.0.1
Found: 10.0.0.3
Not found 10.0.0.255
......

总结

以上所述是小编给大家介绍的Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80) ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js 实现无干扰阴影效果 简单好用(附文件下载)
Dec 27 Javascript
chrome原生方法之数组
Nov 30 Javascript
前台js改变Session的值(用ajax实现)
Dec 28 Javascript
点击隐藏页面左栏或右栏实现js代码
Apr 01 Javascript
JavaScript利用正则表达式去除日期中的-
Jun 09 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
Mar 13 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
Jun 29 Javascript
React中使用UEditor百度富文本的方法
Aug 22 Javascript
详解webpack打包第三方类库的正确姿势
Oct 20 Javascript
JS实现头条新闻的经典轮播图效果示例
Jan 30 Javascript
微信小程序开发常见问题及解决方案
Jul 11 Javascript
微信小程序监听用户登录事件的实现方法
Nov 11 Javascript
BetterScroll 在移动端滚动场景的应用
Sep 18 #Javascript
Windows下Node.js安装及环境配置方法
Sep 18 #Javascript
jQuery选择器之子元素选择器详解
Sep 18 #jQuery
JavaScript实现的斑马线表格效果【隔行变色】
Sep 18 #Javascript
js实现可以点击收缩或张开的悬浮窗
Sep 18 #Javascript
javascript流程控制语句集合
Sep 18 #Javascript
20170918 前端开发周报之JS前端开发必看
Sep 18 #Javascript
You might like
PHP5 面向对象程序设计
2008/02/13 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
详解PHP中的Traits
2015/07/29 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
PHP实现通过strace定位故障原因的方法
2018/04/29 PHP
HTML页面如何象ASP一样接受参数
2007/02/07 Javascript
javaScript call 函数的用法说明
2010/04/09 Javascript
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
node中IO以及定时器优先级详解
2019/05/10 Javascript
全网小程序接口请求封装实例代码
2020/11/06 Javascript
js实现随机点名
2021/01/19 Javascript
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
Django model.py表单设置默认值允许为空的操作
2020/05/19 Python
如何在Windows中安装多个python解释器
2020/06/16 Python
Python利用myqr库创建自己的二维码
2020/11/24 Python
css3 给背景设置渐变色的方法
2019/09/12 HTML / CSS
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
圣诞树世界:Christmas Tree World
2019/12/10 全球购物
广州御银科技股份有限公司试卷(C++)
2016/11/04 面试题
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
介绍一下EJB的体系结构
2012/08/01 面试题
生产车间实习自我鉴定
2013/09/23 职场文书
本科毕业生求职信
2014/06/15 职场文书
土木工程专业本科生求职信
2014/10/01 职场文书
大学生党员自我评价
2015/03/04 职场文书