Python实现端口检测的方法


Posted in Python onJuly 24, 2018

一、背景:

在平时工作中有遇到端口检测,查看服务端特定端口是否对外开放,常用nmap,tcping,telnet等,同时也可以利用站长工具等web扫描端口等。

但是在使用站长工具发现:

  • 每次只能输入一个检测的地址;
  • 虽然可以输入多个端口,但是不能指定一个端口范围来进行批量检测;
  • 没有批量任务记录日志等;

Python实现端口检测的方法 

因避免由于局域网检测发起端网络限制而导致的端口检测异常,未使用python-nmap

想通过调用站长工具,实现

  • 单次可多个地址或域名检测
  • 单词可指定端口范围,批量检测
  • 记录日志

二、代码:

2.1 结构

Python实现端口检测的方法 

2.2 代码

github地址

部分代码

#配置文件
#端口检测配置
[port_check_info]
#检测ip地址或域名
#address = baidu.com
#address = 127.0.0.1
address = www.anchnet.com,www.51cto.com,www.baidu.com
#检查的端口,如多个端口使用,隔开,端口范围使用'-'
#ports = 80,8080....
ports = 20-25,80,443,1433,1521,3306,3389,6379,8080,27017
#日志配置
[loginfo]
#日志目录
logdir_name = logdir
#日志文件名称
logfile_name = check_port.log
  def _get_body(self):
    """
    获取address和port
    :return: list
    """
    address_list = self.address_list.split(',')
    port_list = self.port_list.split(',')
    # 处理端口范围,返回range
    range_flag = False
    port_range = None
    content_List_range = []
    for port in port_list:
      if '-' in port:
        range_flag = True
        port_range = range(int(port.split('-')[0]),int(port.split('-')[1])+1)
        port_list.remove(port)
    # 处理总体list
    for add in address_list:
      if range_flag:
        for port in port_range:
          content_List_range.append(add + ':' + str(port))
    # 合并range和普通list
    content_List = [ add+':'+port for add in address_list for port in port_list ]
    content_List_range.extend(content_List)
    return content_List_range
  def run(self):
    """
    进行端口检测
    :return:
    """
    for content in self._get_body():
      content_list = content.split(':')
      body = {
        'host': content_list[0],
        'port': content_list[1],
        'encode': 'tlCHS1u3IgF4sC57m6KOP3Oaj1Y1kfLq'
      }
      try:
        response = requests.post(url=self.url,data=body,headers=self.headers)
        port_status = re.findall("msg:'(.*?)'", response.text)
        if len(port_status) > 0:
          # print('%s,port status is:%s' % (content, port_status))
          self.logoper.info('%s,port status is:%s' % (content, port_status))
        else:
          self.logoper.info('%s,port status is:%s' % (content, port_status))
          # print('Occer error!请输入正确的地址和端口')
      except Exception as e:
        print(e)

三、测试:

3.1 查看检测结果

Python实现端口检测的方法

此处可以查看51cto的8080端口也是开放的。

3.2 查看日志

Python实现端口检测的方法 

四、改进:

  • 后期可以添加异步多进程等来提升效率
  • 可以对比多个站点检测结果,使结果更准确
  • 整合nmap内网也可检测

总结

以上所述是小编给大家介绍的Python实现端口检测的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
基于python 二维数组及画图的实例详解
Apr 03 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
Aug 05 Python
解决django同步数据库的时候app models表没有成功创建的问题
Aug 09 Python
Python计算两个矩形重合面积代码实例
Sep 16 Python
Python使用random模块生成随机数操作实例详解
Sep 17 Python
Python 模拟生成动态产生验证码图片的方法
Feb 01 Python
如何在Django中使用聚合的实现示例
Mar 23 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
Sep 30 Python
python中reload重载实例用法
Dec 15 Python
Python就将所有的英文单词首字母变成大写
Feb 12 Python
利用Python实现最小二乘法与梯度下降算法
Feb 21 Python
Python实现日志实时监测的示例详解
Apr 06 Python
Flask框架信号用法实例分析
Jul 24 #Python
Flask框架响应、调度方法和蓝图操作实例分析
Jul 24 #Python
Django中的Model操作表的实现
Jul 24 #Python
Python实现的tcp端口检测操作示例
Jul 24 #Python
python正则表达式之对号入座篇
Jul 24 #Python
Python 字符串与二进制串的相互转换示例
Jul 23 #Python
Python二进制串转换为通用字符串的方法
Jul 23 #Python
You might like
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
详解php实现页面静态化原理
2017/06/21 PHP
PHP中的self关键字详解
2019/06/23 PHP
TNC vs IO BO3 第二场2.13
2021/03/10 DOTA
常用参考资料(手册)下载或者链接
2006/07/22 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
Node.js中HTTP模块与事件模块详解
2014/11/14 Javascript
JavaScript获取并更改input标签name属性的方法
2015/07/02 Javascript
JavaScript实现的类字典插入或更新方法实例
2015/07/10 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
js代码实现点击按钮出现60秒倒计时
2021/01/28 Javascript
jQuery插件实现可输入和自动匹配的下拉框
2016/10/24 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
jquery实现轮播图效果
2017/02/13 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
Vue实现的父组件向子组件传值功能示例
2019/01/19 Javascript
Vue实现多页签组件
2021/01/14 Vue.js
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
python自动化之Ansible的安装教程
2019/06/13 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
Python实现滑动平均(Moving Average)的例子
2019/08/24 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
CSS3教程(4):网页边框和网页文字阴影
2009/04/02 HTML / CSS
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
北美个性化礼品商店:Things Remembered
2018/06/12 全球购物
LN-CC美国:伦敦时尚生活的缩影
2019/02/19 全球购物
我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢
2013/04/24 面试题
如何编写优秀的食品项目创业计划书
2014/01/23 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
灵魂歌王观后感
2015/06/17 职场文书
详解Nginx 工作原理
2021/03/31 Servers