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文件操作之目录遍历实例分析
May 20 Python
Python中绑定与未绑定的类方法用法分析
Apr 29 Python
python使用RNN实现文本分类
May 24 Python
pycharm远程linux开发和调试代码的方法
Jul 17 Python
Django添加favicon.ico图标的示例代码
Aug 07 Python
使用EduBlock轻松学习Python编程
Oct 08 Python
python石头剪刀布小游戏(三局两胜制)
Jan 20 Python
深入浅析Python 中 is 语法带来的误解
May 07 Python
python写日志文件操作类与应用示例
Jul 01 Python
Python 的AES加密与解密实现
Jul 09 Python
Python 堆叠柱状图绘制方法
Jul 29 Python
python openCV自制绘画板
Oct 27 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 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
slice函数的用法 之不错的应用
2006/12/29 Javascript
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
JQuery.validate在ie8下不支持的快速解决方法
2016/05/18 Javascript
javaScript知识点总结(必看篇)
2016/06/10 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
vue中的router-view组件的使用教程
2018/10/23 Javascript
node+express框架中连接使用mysql(经验总结)
2018/11/10 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
Python实现数据可视化看如何监控你的爬虫状态【推荐】
2018/08/10 Python
Python函数中不定长参数的写法
2019/02/13 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
详解Python中string模块除去Str还剩下什么
2020/11/30 Python
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
意大利在线药房:Saninforma
2021/02/11 全球购物
Bloomingdale’s阿联酋:选购奢华时尚、美容及更多
2020/09/22 全球购物
HSRP的含义以及如何工作
2014/09/10 面试题
九州传奇上机题
2014/07/10 面试题
行政专员岗位职责说明书
2014/09/01 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
诉讼授权委托书
2014/10/15 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
2016教师校本培训心得体会
2016/01/08 职场文书
创业计划书之家政服务
2019/09/18 职场文书
JavaScript ES6的函数拓展
2022/01/18 Javascript
Java数组详细介绍及相关工具类
2022/04/14 Java/Android