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文件操作整理汇总
Oct 21 Python
Python读写Excel文件方法介绍
Nov 22 Python
Python中的lstrip()方法使用简介
May 19 Python
Python与R语言的简要对比
Nov 14 Python
Python使用base64模块进行二进制数据编码详解
Jan 11 Python
PyTorch上实现卷积神经网络CNN的方法
Apr 28 Python
Python输出指定字符串的方法
Feb 06 Python
Python爬取数据并实现可视化代码解析
Aug 12 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
Sep 20 Python
python爬虫中PhantomJS加载页面的实例方法
Nov 12 Python
Python爬虫实现selenium处理iframe作用域问题
Jan 27 Python
Python中X[:,0]和X[:,1]的用法
May 10 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/09/24 PHP
PHP中替换键名的简易方法示例详解
2014/01/07 PHP
PHP通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
PHP多维数组排序array详解
2017/11/21 PHP
json的前台操作和后台操作实现代码
2012/01/20 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
jQuery实现Select左右复制移动内容
2016/08/05 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
浅谈vue路径优化之resolve
2017/10/13 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
react 不用插件实现数字滚动的效果示例
2020/04/14 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
Python求解任意闭区间的所有素数
2018/06/10 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
Python PO设计模式的具体使用
2019/08/16 Python
Python requests获取网页常用方法解析
2020/02/20 Python
Python新手如何进行闭包时绑定变量操作
2020/05/29 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
国际贸易专业个人鉴定
2014/02/22 职场文书
廉洁自律承诺书
2014/03/27 职场文书
单位授权委托书范文
2014/08/02 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
交通事故和解协议书
2014/09/25 职场文书
感谢信格式范文
2015/01/22 职场文书
公司内部升职自荐信
2015/03/27 职场文书
举起手来观后感
2015/06/09 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
导游词之西安骊山
2019/12/20 职场文书
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python
vue使用Google Recaptcha验证的实现示例
2021/08/23 Vue.js