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 初始化多维数组代码
Sep 06 Python
Python中的闭包详细介绍和实例
Nov 21 Python
python实现图片变亮或者变暗的方法
Jun 01 Python
python fabric实现远程部署
Jan 05 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
Apr 05 Python
Python中six模块基础用法
Dec 08 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
Jan 20 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
Apr 29 Python
Pygame的程序开始示例代码
May 07 Python
Python之Sklearn使用入门教程
Feb 19 Python
python 远程执行命令的详细代码
Feb 15 Python
Python使用永中文档转换服务
May 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引用返回用法示例
2016/05/28 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
详解Yii2 rules 的验证规则
2016/12/02 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
Yii框架实现对数据库的CURD操作示例
2019/09/03 PHP
js的window.showModalDialog及window.open用法实例分析
2015/01/29 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
老司机带你解读jQuery插件开发流程
2016/05/16 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
react-router实现跳转传值的方法示例
2017/05/27 Javascript
使用重写url机制实现验证码换一张功能
2017/08/01 Javascript
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
在Python程序中实现分布式进程的教程
2015/04/28 Python
Python及Django框架生成二维码的方法分析
2018/01/31 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
对python捕获ctrl+c手工中断程序的两种方法详解
2018/12/26 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
Django如何使用第三方服务发送电子邮件
2019/08/14 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
你可能不知道的Python 技巧小结
2020/01/29 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
军校本科大学生自我评价
2014/01/14 职场文书
高二学生评语大全
2014/04/25 职场文书
心理健康日活动总结
2014/05/08 职场文书
个人求职信范文
2014/05/24 职场文书
2014年度党员自我评议
2014/09/13 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
营运督导岗位职责
2015/04/10 职场文书
python绘制箱型图
2021/04/27 Python
python实现简单的聊天小程序
2021/07/07 Python
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers
Apache POI的基本使用详解
2021/11/07 Servers
java版 联机五子棋游戏
2022/05/04 Java/Android