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使用range函数计算一组数和的方法
May 07 Python
python3.5使用tkinter制作记事本
Jun 20 Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 Python
Python模拟登陆实现代码
Jun 14 Python
Python实现的字典值比较功能示例
Jan 08 Python
python快速建立超简单的web服务器的实现方法
Feb 17 Python
python中kmeans聚类实现代码
Feb 23 Python
Tensorflow 查看变量的值方法
Jun 14 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
Aug 04 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
Apr 26 Python
Python调用C语言程序方法解析
Jul 07 Python
解决python对齐错误的方法
Jul 16 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实现单例模式最安全的做法
2014/06/13 PHP
PHP中使用正则表达式提取中文实现笔记
2015/01/20 PHP
php实现json编码的方法
2015/07/30 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
2016/05/13 PHP
利用jQuery实现可输入搜索文字的下拉框
2013/10/23 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
ES6中如何使用Set和WeakSet
2016/03/10 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
使用JS实现图片展示瀑布流效果的实例代码
2016/09/12 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
浅谈js中function的参数默认值
2017/02/20 Javascript
详解RequireJS按需加载样式文件
2017/04/12 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
2017/11/28 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
ES6 Promise对象概念及用法实例详解
2019/10/15 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
2020/05/12 Javascript
python实现人人网登录示例分享
2014/01/19 Python
Fiddler如何抓取手机APP数据包
2016/01/22 Python
Django日志模块logging的配置详解
2017/02/14 Python
Python读写/追加excel文件Demo分享
2018/05/03 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
对python指数、幂数拟合curve_fit详解
2018/12/29 Python
Django框架模板介绍
2019/01/15 Python
python绘制多个子图的实例
2019/07/07 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
Numpy与Pytorch 矩阵操作方式
2019/12/27 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
CSS3关于z-index不生效问题的解决
2020/02/19 HTML / CSS
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
离婚被告代理词
2015/05/23 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书