Python获取网站证书有效期

  • Python获取网站证书有效期
    • python:OpenSSL和ssl
    • python+shell:subprocess和curl

Python获取网站证书有效期

由于某些原因,需要验证网站证书有效期,从而做出响应的措施来避免一些特殊情况的出现。

python:OpenSSL和ssl

首先考虑使用OpenSSL模块和ssl模块来完成需求,使用OpenSSL之前需要先安装模块-pyOpenSSL。

pip install pyopenssl
import OpenSSL
import ssldef check_cert_valid():# 这里还有一些代码,用来获取域名列表,情况不同,不阐述了for domain in domain_list:  # 这里是一些域名的列表,可以使用其他方式# 这里我直接使用了下述方法来获取证书,并没有将证书写入文件cert = ssl.get_server_certification((domain, 443))  # 一般是443端口,并且这里默认返回# 的是PEM证书# 如果有cert文件的话,直接执行这里# cert_file_path = ''  # cert证书文件路径# cert = open(cert_file_path).read()  # 当然这里也可以使用with来进行上下文管理    certification = OpenSSL.crypto.load_certification(OpenSSL.crypto.FILETYPE_PEN, cert)valid_start_time = certification.get_notBefore()  # 有效期起始时间valid_end_time = certification.get_notAfter()  # 有效期结束时间pass  #  接下来执行各自的操作即可if __name__ == '__main':check_cert_valid()

python+shell:subprocess和curl

在使用上述方法的时候,大部分域名都是正常的,但是部分域名的有效期不匹配,不清楚原因为何,如果有大佬知道原因,烦请不吝赐教,感谢,之后又尝试了这种方案。

首先需要安装subprocess模块

pip install subprocess
import subprocessdef check_cert_valid():# 这里还有一些代码,用来获取域名列表,情况不同,不阐述了for domain in domain_list:  # 这里是一些域名的列表,可以使用其他方式# curl命令,-k代表不使用认证到达ssl站点,-v显示详情,-s代表静默,-o代表输出curl_cmd = "curl https://%s -k -v -s -o /dev/null" % domain[0]return_code, output = subprocess.getstatusoutput(domain_str)output_groups = re.search('SSL connection using (.*?)\n.*?start date: (.*?)\n.*?expire date: (.*?)\n.*?issuer: (.*?)\n.*?',output, re.S)if output_groups:# 接下来的时间是字符串,可能不符合各位的预期,使用时间格式化来回处理一下即可start_date = output_groups.groups()[1]  # 有效期起始时间expire_date = output_groups.groups()[2]  # 有效期结束时间passpass  #  接下来执行各自的操作即可if __name__ == '__main':check_cert_valid()

但是在这里操作的时候,遇见了乱码的问题,也就是WWW-Authenticate: Basic realm="*******",这里出现了乱码,使用grep -v命令也失败,只能退出求其次,将内容先写入文件,之后再重新读文件,这里走了弯路了,大佬有解决方法的话也忘不吝赐教,感谢,下面跳出来后来的命令。

curl_cmd = "curl https://%s -k -v -s -o /dev/null 2>/tmp/cert.txt;" \"cat /tmp/cert.txt| grep -v 'WWW-Authenticate'" % domain[0]

Python 获取网站证书有效期相关推荐

  1. python获取网站window全局对象或方法的返回值

    本章教程,主要介绍如何使用python获取网站中的window全局对象或方法的返回值. 目录 1.浏览器运行结果 2.程序代码 3.程序运行结果 1.浏览器运行结果 2.程序代码 #!/usr/bin ...

  2. 使用 acme.sh 获取网站证书并配置https访问

    目录 1. 安装 acme.sh 2. 生成证书 1. 安装 acme.sh 安装很简单, 一个命令: curl https://get.acme.sh | sh 普通用户和 root 用户都可以安装 ...

  3. python获取网站代码_python爬虫1——获取网站源代码(豆瓣图书top250信息)

    # -*- coding: utf-8 -*- import requests import re import sys reload(sys) sys.setdefaultencoding('utf ...

  4. 获取网站证书最简单的方法

    二.一种最简单的方法(作者认为),通过火狐浏览器 (firefox )直接导出. 后经测试,IE浏览器也可以获取网站的证书,方法类似,但似乎有些不稳定,不适用于所有网站 ,例如 Bing 的搜索主页, ...

  5. 【信息收集】用python获取网站权重(四)

    文章目录 前言 一.代码 二.返回结果 三.实现方法 1.获取到个人私钥 2.接入API 3.请求参数说明 4.返回参数说明 5.返回json示例 总结 前言 本文实现利用python代码调aizha ...

  6. 【python】python获取网站源码失败,出现一堆script脚本内容

    问题原因 网站开启了防爬虫,爬取的设置,通过头部的cookie和User-Agent判断 解决流程 在头部设置以下内容 def ask_url(url,method):proxies = {" ...

  7. python获取网站图片_python获取网站图片

    # zhouxianglh 2013.05.03 python3.3 import urllib.request from html.parser import HTMLParser import r ...

  8. python获取SSL证书信息

    代码有问题,有时间再更新 代码有问题,有时间再更新 代码有问题,有时间再更新 from datetime import datetime from urllib3.contrib import pyo ...

  9. python协程学习——写个并发获取网站标题的工具

    ​ 平时做渗透的时候,有时候给的是一些域名.一些 url .一些 ip 或者三者都有,手动去一个个地打开比较浪费时间.我们需要用最短时间发现一些有趣的目标,如 xx 管理后台.于是让我们用 pytho ...

最新文章

  1. 推荐一个HTML的语法高亮解析器
  2. 图像直接卷积 Sobel 边缘实现
  3. 关于const 修饰的一些知识
  4. SwiftUI之深入解析布局如何自定义AlignmentGuides
  5. JVM总结---各处总结
  6. 什么是闭合GOP和开放GOP?
  7. 好好珍惜今生,不要期待来世……
  8. MCSE2003学习之一
  9. Xamarin开发笔记—设备类amp;第三方弹窗的使用和注意事项
  10. 用__postback传递JavaScript变量到c#(pass a js variable to C# by a __postback )
  11. 同一程序在不同版本的framework下控件中英文显示的问题
  12. 拓端tecdat|R语言计算资本资产定价模型(CAPM)中的Beta值和可视化
  13. 浏阳市大瑶计算机学校,2021年湖南长沙浏阳市重点小学排名学校一览
  14. 十大虚拟化最佳实践(转自Wes Miller的文章)
  15. webp格式是什么?webp格式怎么打开?webp格式怎么转换gif/jpg/png等?
  16. php花曲线,ps钢笔工具怎么画曲线
  17. 图论学习笔记——一笔画(最少笔画)问题
  18. 【灵修】我去弘化禅寺一游——对学佛的理解(刘俊平)
  19. 基于SSM框架开发的图书管理系统
  20. C. Carrying Conundrum(找规律)

热门文章

  1. css3 border边框斜线,CSS3 斜线分割布局
  2. Nape的回调系统 nape.callbacks
  3. 混合式学习,以学习者为中心的新型教学形式
  4. Tengine + BabaSSL ,让国密更易用
  5. 1 5 php,直接可以拿来用的PHP惯用功能代码片段(1~5)
  6. 虚拟机共享计算机的网络连接,Parallels Desktop如何共享网络 Mac与虚拟机共享网络设置教程...
  7. 基于gibbsLDA的文本分类
  8. Ogre – 材质脚本(三) (转)
  9. python选题背景_选题背景和意义
  10. 7z解压crc错误_百度网盘压缩下载文件的CRC校验错误的解决方法