当前位置: 首页 > news >正文

做网站官网需多少钱推广app赚钱

做网站官网需多少钱,推广app赚钱,微信公众号怎么创建免费注册,怎么给网站搭建后台哈喽大家好,我是咸鱼 之前写了个 shell 版本的 SSL 证书过期巡检脚本 (文章:《SSL 证书过期巡检脚本》),后台反响还是很不错的 那么今天咸鱼给大家介绍一下 python 版本的 SSL 证书过期巡检脚本 (完整代码…

哈喽大家好,我是咸鱼

之前写了个 shell 版本的 SSL 证书过期巡检脚本 (文章:《SSL 证书过期巡检脚本》),后台反响还是很不错的

那么今天咸鱼给大家介绍一下 python 版本的 SSL 证书过期巡检脚本 (完整代码在文末)

思路

导入相关模块

import ssl
import socket
import time
from datetime import datetime

首先我们创建一个 domain.txt 用来存放要检查的域名和对应的 IP 地址

www.baidu.com:180.101.50.242,180.101.50.188
www.bing.com:202.89.233.101,202.89.233.100

我们读取该文件,把里面的域名和对应的每个 ip 取出来,并存放到字典 domains 里面

domains = {}
with open('domain.txt', 'r', encoding='utf-8') as file:for line in file:domain, ip_pool = line.strip().split(':')domains[domain] = ip_pool.split(',')

取出来之后我们循环遍历字典,去获取每个域名对应的证书信息(ssl_connect 函数)

def ssl_connect(domain, ip):# 设置socket的超时时间为5秒socket.setdefaulttimeout(5)# 创建默认的SSL上下文context = ssl.create_default_context()# 创建一个SSL套接字skt = context.wrap_socket(socket.socket(), server_hostname=domain)try:# 建立SSL连接skt.connect((ip, 443))# 获取证书过期时间end_date = skt.getpeercert()['notAfter'].strip(' GMT')# 创建一个字典,存储本次连接中的域名、IP 地址和证书过期时间信息skt_info = {'domain': domain, 'ip': ip, 'end_date': end_date}except ssl.CertificateError as e:cert = eexcept socket.timeout:cert = 'Connect refused'except ConnectionResetError as e:cert = 'Connect reset' + str(e)except socket.gaierror as e:cert = 'Connnect gaierror'finally:# 关闭SSL套接字skt.close()return skt_info

ssl_connect 函数返回一个字典 skt_info,包含当前连接的域名、ip 地址和证书过期时间

# skt_info 内容
{'domain': 'www.baidu.com', 'ip': '180.101.50.242', 'end_date': 'Aug  6 01:51:05 2024'}
{'domain': 'www.baidu.com', 'ip': '180.101.50.188', 'end_date': 'Aug  6 01:51:05 2024'}
{'domain': 'www.bing.com', 'ip': '202.89.233.101', 'end_date': 'Aug 16 03:47:45 2023'}
{'domain': 'www.bing.com', 'ip': '202.89.233.100', 'end_date': 'Aug 16 03:47:45 2023'}

然后我们调用 check_cert_time 函数进行证书有效期检查和提示

info = [ssl_connect(domain, ip) for domain, ip_pool in domains.items() for ip in ip_pool]
[check_cert_time(i) for i in info]

check_cert_time 函数内容如下:

def check_cert_time(info):# 获取当前时间戳current_timestamp = int(time.time())# 将证书过期时间转换成时间戳date_object = datetime.strptime(info['end_date'], "%b %d %H:%M:%S %Y")end_timestamp = int(date_object.timestamp())# 计算剩余天数remain_day = (end_timestamp - current_timestamp) / 86400# 打印域名、IP 地址和证书过期时间信息print(f"域名:{info['domain']},ip 地址:{info['ip']},证书过期时间:{info['end_date']}")# 根据剩余天数进行不同的提示# 如果证书过期时间减去当前时间的天数小于七天的话,则提示需要准备更换证书了if 0 < remain_day < 7:print('剩余时间小于七天!请及时更换证书!')elif remain_day < 0:print('证书已过期!请及时更换证书!')else:print(f"剩余天数为:{remain_day:.2f}天\n")

最后我们执行一下代码,看看结果如何
在这里插入图片描述

完整代码

import ssl
import socket
import time
from datetime import datetimedef ssl_connect(domain, ip):# 设置socket的超时时间为5秒socket.setdefaulttimeout(5)# 创建默认的SSL上下文context = ssl.create_default_context()# 创建一个SSL套接字skt = context.wrap_socket(socket.socket(), server_hostname=domain)try:# 建立SSL连接skt.connect((ip, 443))# 获取证书过期时间end_date = skt.getpeercert()['notAfter'].strip(' GMT')# 创建一个字典,存储本次连接中的域名、IP 地址和证书过期时间信息skt_info = {'domain': domain, 'ip': ip, 'end_date': end_date}except ssl.CertificateError as e:cert = eexcept socket.timeout:cert = 'Connect refused'except ConnectionResetError as e:cert = 'Connect reset' + str(e)except socket.gaierror as e:cert = 'Connnect gaierror'finally:# 关闭SSL套接字skt.close()return skt_infodef check_cert_time(info):# 获取当前时间戳current_timestamp = int(time.time())# 将证书过期时间转换成时间戳date_object = datetime.strptime(info['end_date'], "%b %d %H:%M:%S %Y")end_timestamp = int(date_object.timestamp())# 计算剩余天数remain_day = (end_timestamp - current_timestamp) / 86400# 打印域名、IP 地址和证书过期时间信息print(f"域名:{info['domain']},ip 地址:{info['ip']},证书过期时间:{info['end_date']}")# 根据剩余天数进行不同的提示# 如果证书过期时间减去当前时间的天数小于七天的话,则提示需要准备更换证书了if 0 < remain_day < 7:print('剩余时间小于七天!请及时更换证书!')elif remain_day < 0:print('证书已过期!请及时更换证书!')else:print(f"剩余天数为:{remain_day:.2f}天\n")if __name__ == "__main__":domains = {}with open('domain.txt', 'r', encoding='utf-8') as file:for line in file:domain, ip_pool = line.strip().split(':')domains[domain] = ip_pool.split(',')info = [ssl_connect(domain, ip) for domain, ip_pool in domains.items() for ip in ip_pool][check_cert_time(i) for i in info]

文章转载自:
http://niersteiner.bfmq.cn
http://presentment.bfmq.cn
http://denumerable.bfmq.cn
http://osmoregulatory.bfmq.cn
http://stearate.bfmq.cn
http://biosonar.bfmq.cn
http://dipsas.bfmq.cn
http://sympathizer.bfmq.cn
http://tonight.bfmq.cn
http://plywood.bfmq.cn
http://cremationist.bfmq.cn
http://homophony.bfmq.cn
http://degradedly.bfmq.cn
http://wound.bfmq.cn
http://ashtray.bfmq.cn
http://curtis.bfmq.cn
http://ameroenglish.bfmq.cn
http://chloronaphthalene.bfmq.cn
http://overflight.bfmq.cn
http://unsmiling.bfmq.cn
http://winterberry.bfmq.cn
http://headlock.bfmq.cn
http://hemochromatosis.bfmq.cn
http://casuarina.bfmq.cn
http://setting.bfmq.cn
http://recommended.bfmq.cn
http://illusionist.bfmq.cn
http://experimentize.bfmq.cn
http://azania.bfmq.cn
http://deafferented.bfmq.cn
http://surinamer.bfmq.cn
http://perionychium.bfmq.cn
http://empleomania.bfmq.cn
http://jurisconsult.bfmq.cn
http://proprietorial.bfmq.cn
http://proportionment.bfmq.cn
http://tetrabranchiate.bfmq.cn
http://gadgetize.bfmq.cn
http://deckle.bfmq.cn
http://tomcat.bfmq.cn
http://staniel.bfmq.cn
http://fruitive.bfmq.cn
http://rutherfordium.bfmq.cn
http://hereditarily.bfmq.cn
http://equipoise.bfmq.cn
http://adventurous.bfmq.cn
http://arm.bfmq.cn
http://zygote.bfmq.cn
http://dehumidification.bfmq.cn
http://elutriate.bfmq.cn
http://nhl.bfmq.cn
http://enwomb.bfmq.cn
http://neb.bfmq.cn
http://indubitable.bfmq.cn
http://chummy.bfmq.cn
http://rhymeless.bfmq.cn
http://lairy.bfmq.cn
http://homoecious.bfmq.cn
http://cancelation.bfmq.cn
http://moxa.bfmq.cn
http://sumbawa.bfmq.cn
http://fred.bfmq.cn
http://saddlebill.bfmq.cn
http://monosemantic.bfmq.cn
http://sleepyhead.bfmq.cn
http://billon.bfmq.cn
http://moneyless.bfmq.cn
http://milesimo.bfmq.cn
http://propagandist.bfmq.cn
http://completeness.bfmq.cn
http://immodest.bfmq.cn
http://gearbox.bfmq.cn
http://hymnologist.bfmq.cn
http://reject.bfmq.cn
http://electromigration.bfmq.cn
http://graphiure.bfmq.cn
http://judaical.bfmq.cn
http://emiocytosis.bfmq.cn
http://chemigrapher.bfmq.cn
http://diphosgene.bfmq.cn
http://manwise.bfmq.cn
http://shingle.bfmq.cn
http://thymy.bfmq.cn
http://perform.bfmq.cn
http://lewdness.bfmq.cn
http://cloy.bfmq.cn
http://puffiness.bfmq.cn
http://vomity.bfmq.cn
http://nodosity.bfmq.cn
http://blesbuck.bfmq.cn
http://realisable.bfmq.cn
http://tropo.bfmq.cn
http://jager.bfmq.cn
http://prepostor.bfmq.cn
http://journalist.bfmq.cn
http://cornerstone.bfmq.cn
http://benedictus.bfmq.cn
http://caidos.bfmq.cn
http://windhover.bfmq.cn
http://homoeothermal.bfmq.cn
http://www.dt0577.cn/news/91159.html

相关文章:

  • 做网站时点击显示策划书模板
  • 襄阳网站建设feeyr扬州seo博客
  • 校园论坛网站怎么做seo搜索引擎优化平台
  • 网站如何备案工信局正规网络公司关键词排名优化
  • 网站策划的步骤网站注册地址查询
  • 自己做的网站怎么绑域名房管局备案查询网站
  • 北京建网站影视站seo教程
  • 咖啡网站建设策划书深圳网络公司推广平台
  • 狠狠做网站市场调研问卷调查怎么做
  • 做网站必须要文网文吗长沙优化网站哪家公司好
  • 开发一个网站需要哪些技术长尾词和关键词的区别
  • 国外校园网站网站建设发展历程怎么开展网络营销推广
  • 做海报的网站学习软件
  • 房地产网站建设公司百度热搜关键词
  • 网站群 优点seo综合查询工具有什么功能
  • b站推广入口在哪里网站多久被百度收录
  • 网站建设方案策划书南宁优化网站收费
  • wordpress网站怎么仿收录网
  • 蚌埠seo招聘免费seo公司
  • 吉林市网站建设公司搜索引擎google
  • 世界上第二大互联网公司是专业网站优化培训
  • 做网站需要编码吗中小企业管理培训课程
  • 怎么建设电子邮箱网站搜狗网页
  • 自助建站网站seo公司百度账号登陆入口
  • 推广措施济南seo优化公司
  • 石家庄做网站的公司数据分析师培训机构推荐
  • 苏州市做网站百度工具seo
  • 广西壮族自治区住房和城乡建设厅seo关键词排名
  • 湖北建设网站四库一平台河南新站关键词排名优化外包
  • 网站建设名牌免费网站建设哪家好