【网站可用性自动化监测】python+seleium

news/2024/5/12 17:49:56/文章来源:https://blog.csdn.net/sinat_32533849/article/details/122765305

【网站可用性自动化监测】python+seleium

    • 前倾提要:做了网络安全后重保期间需要对用户系统每日进行监测,相关监测脚本网上其实也有很多,但能自己个性化做一下也挺好,太久没做小程序需要写下代码巩固。
    • 本次程序开发目的是重保期间每天分三个时间点对多个网站进行访问监测可用性,并截图,如发现异常把异常站点推送至微信助手并记录
    • 分三大功能函数:网站访问、网站列表读取、定时执行函数

前倾提要:做了网络安全后重保期间需要对用户系统每日进行监测,相关监测脚本网上其实也有很多,但能自己个性化做一下也挺好,太久没做小程序需要写下代码巩固。

本次程序开发目的是重保期间每天分三个时间点对多个网站进行访问监测可用性,并截图,如发现异常把异常站点推送至微信助手并记录

分三大功能函数:网站访问、网站列表读取、定时执行函数

第一部分网站列表读取 代码片.

def get_page_png(urls, browser,now_folder):die_domain = []'''从一个地址列表里,逐个访问,可以访问的地址就截图'''for url in urls:png_namea = url.replace('//', '_').replace('.', '_').replace('/', '_').replace(':',"_")png_name = png_namea + '.png'try:# 屏蔽requests的ssl warning警告信息urllib3.disable_warnings()response = requests.get(url=url, headers=headers, timeout=10, verify=False)if response.status_code == 200:# 访问url# print('url:',url)browser.get(url)# 保存截图browser.save_screenshot(f"./{now_folder}/{png_name}")print(f"{png_name} 保存成功")except:now_404 = f"{url} 无法访问!"print(now_404)mychat(now_404)die_domain.append(url)passnow_die_domain(die_domain)

第二部分网站访问 代码片.

def main():'''主函数'''# 构造urlprint(time.strftime("%Y-%m-%d %H:%M"))urls = []with open("domain_list.txt", "r") as f:for domain in f.readlines():urls.append(domain.strip())# 选项设置options = webdriver.ChromeOptions()# 指定chrome浏览器路径# options.binary_location = r"C:\\Program Files\\Google\\Chrome\\Application"# 终端不显示日志options.add_experimental_option('excludeSwitches', ['enable-logging'])# # 设置无头模式# chrome_options = Options()# chrome_options.add_argument('--headless')# chrome_options.add_argument('--disable_gpu')# 设置无头模式options.add_argument('--headless')options.add_argument('--disable_gpu')# 实例化一个浏览器对象# browser = webdriver.Chrome(executable_path='./chromedriver.exe', options=options)# s = Service("chromedriver.exe")browser = webdriver.Chrome(options=options)# 设置屏幕最大化browser.maximize_window()# 执行浏览器访问now_folder = new_folder()get_page_png(urls, browser,now_folder)# 访问结束后退出browser.quit()

第三部分定时执行 代码片.

def mytime():schedule.every().day.at("10:00").do(main)#里面时间进行修改schedule.every().day.at("13:00").do(main)schedule.every().day.at("16:00").do(main)while True:try:schedule.run_pending()time.sleep(1)except Exception as e:print('报错:',e)

完整代码 代码片.

#!/usr/bin/env python
# -*- coding:utf-8 -*-import requests
import os
import time
import urllib3
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import schedule
#import itchat#此库是调用网页版微信,可自动化使用微信,但测试中发现大部分用户在扫描二维码阶段出现异常,排查结果说是微信安全屏蔽了此接口调用,运气好的可以试试(我可以使用)#根据时间创建保存网站截图的文件夹
def new_folder():s = time.strftime("%Y%m%d%H%M")os.mkdir("http_pic" + s)f = "http_pic" + sreturn fdef get_page_png(urls, browser,now_folder):die_domain = []'''从一个地址列表里,逐个访问,可以访问的地址就截图'''for url in urls:png_namea = url.replace('//', '_').replace('.', '_').replace('/', '_').replace(':',"_")png_name = png_namea + '.png'try:# 屏蔽requests的ssl warning警告信息urllib3.disable_warnings()response = requests.get(url=url, headers=headers, timeout=10, verify=False)if response.status_code == 200:# 访问url# print('url:',url)browser.get(url)# 保存截图browser.save_screenshot(f"./{now_folder}/{png_name}")print(f"{png_name} 保存成功")except:now_404 = f"{url} 无法访问!"print(now_404)#mychat(now_404)#发送无法网站站点给微信助手die_domain.append(url)passnow_die_domain(die_domain)#导出无法访问站点.txt文件
def now_die_domain(die_domain):if die_domain:f = open("无法访问的站点.txt", "a")f.write(time.strftime(f"%Y-%m-%d %H:%M") + "\n")for domain in die_domain:f.write(domain + "\n")f.close()def main():'''主函数'''# 构造urlprint(time.strftime("%Y-%m-%d %H:%M"))urls = []with open("domain_list.txt", "r") as f:for domain in f.readlines():urls.append(domain.strip())# 选项设置options = webdriver.ChromeOptions()# 指定chrome浏览器路径# options.binary_location = r"C:\\Program Files\\Google\\Chrome\\Application"# 终端不显示日志options.add_experimental_option('excludeSwitches', ['enable-logging'])# # 设置无头模式# chrome_options = Options()# chrome_options.add_argument('--headless')# chrome_options.add_argument('--disable_gpu')# 设置无头模式options.add_argument('--headless')options.add_argument('--disable_gpu')# 实例化一个浏览器对象# browser = webdriver.Chrome(executable_path='./chromedriver.exe', options=options)# s = Service("chromedriver.exe")browser = webdriver.Chrome(options=options)# 设置屏幕最大化browser.maximize_window()# 执行浏览器访问now_folder = new_folder()get_page_png(urls, browser,now_folder)# 访问结束后退出browser.quit()#把无法访问站点发送给微信助手,可以用腾讯短信功能代替,但需要开发对应小程序并申请(https://cloud.tencent.com/search/%E7%9F%AD%E4%BF%A1/1_1)
def mychat(now_404):a = now_404itchat.send(a, toUserName='filehelper')# print('已发送',a)def mytime():schedule.every().day.at("10:00").do(main)schedule.every().day.at("13:00").do(main)schedule.every().day.at("16:00").do(main)while True:try:schedule.run_pending()time.sleep(1)except Exception as e:print('报错:',e)if __name__ == '__main__':#itchat.auto_login(hotReload=True)#微信二维码headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36",}mytime()

程序运行效果 代码片

在这里插入图片描述
.在这里插入图片描述

在这里插入图片描述
备注:seleium需要指定浏览器和匹配driver文件,本脚本使用的是chrome及对应版本driver(driver下载链接http://chromedriver.storage.googleapis.com/index.html)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_891390.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速入门 Codeforces 算法比赛/练习 网站

Codeforces是一家为计算机编程爱好者提供在线评测系统的俄罗斯网站。同时也是广大ACM编程爱好者所喜爱,被使用的网站之一,但是有很多编程小白刚接触此类算法网站,不太熟悉如何使用,这里博主给出快速入门Codeforces的图文教程。 C…

浅谈web网站架构演变过程

前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变。 该系统具备的功能: 用户模块:用户注册和管理商品模块:商品展示和管理交易模块:创建交易和管理 阶段一、单机构建网站…

nodejs 进行网站监听时 不用在cmd停止后重启 网页刷新就能改变页面内容的工具

一、nodejs的软件需求——supervisor 我们使用nodejs开启服务器时,我们会在cmd里输入node xxx.js进行开启服务器。 很多时候我们会根据页面的逻辑和对项目的要求,进行对xxx.js文件内容的修改,但这时如果我们修改内容后保存,我们…

Web2.0网站介绍——个性化主页服务网站

随着Web2.0网站的不断涌现,越来越多的用户希望自己使用的服务具有极高的可定制性,在这种需求下,出现了越来越多的个性化主页服务网站。这些个性化 主页服务具有极高的可定制性,并且提供很多个性化的功能可供选择,这里就…

大型网站架构演变和知识体系

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么…

百度SEO反推软件下载,反推是什么

2020最新百度SEO反推软件下载 使用反推技术,使你的网站秒引蜘蛛秒收录 使用说明: 1.导入链接,开头必须带http://,末尾必须带/,一行一条 2.导入你的百度账号COOKIE,一行一条 3.接入打码平台 4.即刻开启秒收…

百度SEO逆推技术软件下载,引蜘蛛秒收录

2020最新百度SEO逆推软件下载 使用逆推技术,使你的网站秒引蜘蛛秒收录 使用说明: 导入链接,开头必须带http://,末尾必须带/,一行一条导入你的百度账号COOKIE,一行一条接入打码平台即刻开启秒收录 逆推是…

百度SEO主动推送工具软件下载

百度SEO主动推送工具助手分享下载,可以挂机定时推送和生成链接推送 下载地址: 链接:https://www.lanzoui.com/b01horyih 密码:clrf

不是汽车之家太牛,而是其他网站太懒

汽车之家上市了,而且市值高达30亿美金,跌破了很多垂直网站的眼镜。一时之间网络上到处都在讨论汽车之家,不少垂直网站的老大问我:"秦刚,你99年就开始做垂直网站,操盘过太平洋电脑网,太平洋…

用Meta标签代码让360双核浏览器默认极速模式打开网站不是兼容模式(顺带解决很多兼容性问题)

浏览模式 极速模式、兼容模式及IE9高速模式是360浏览器显示网页时使用的三种模式: 表示极速模式 表示兼容模式 表示IE9/IE10模式(仅在安装了IE9或IE10后可用) 360极速浏览器会自动为您选择使用适合每个网站的浏览模式。所以,…

linux下网站目录权限如何设置?

网站目录权限如何设置不当很容易导致站点被挂马和被篡改,正确的目录权限设置应当遵循最小权限原则。比如对于网站的目录,一般给644权限即可,而文件夹设置为755权限即可。 以nginx服务为例,假设站点用户和用户组为www&…

Win下安装IIS后不能正常浏览asp脚本的网站-解决方法如下

转载: 在新灌的Windows 7中要使用IIS 7環境,並且要撰寫ASP程式,必須要先手動啟動一些設定值,因為Windows 7在安裝時,很多項目是預設沒有開啟的。 1.選取在控制台中的程[程式和功能]中的[開啟和關閉Windows功能]選項。 …

网站首页head区代码规范!

head区是指首页HTML代码的< head>和</ head>之间的内容。 1.公司版权注释 阅读 编辑 运行 复制 保存 <!-- The site is designed by Maketown,Inc 06/2000 --> <!-- The site is designed by Maketown,Inc 06/2000 --> 2.网页显示字符集 简体中文&am…

【特别推荐】学习 Web 开发技术的16个最佳教程网站和博客

【特别推荐】学习 Web 开发技术的16个最佳教程网站和博客 互联网经过这么多年的发展&#xff0c;已经出现了众多的 Web 开发技术&#xff0c;像 .Net/Java/PHP/Python/Ruby 等等。对于 Web 开发人员来说&#xff0c;不管是初学者还是有一定经验的开发人员都需要时刻学习新的开发…

全面介绍网站性能优化之数据库及服务器架构实现负载均衡等实用知识

这篇关于网站性能优化主要从[负载均衡、服务器架构、数据库扩展」的角度&#xff0c;提出一些性能优化的建议&#xff0c;以供有建设中大型网站需求的网友们作为参考。1、Web Server 与 DB Server 分离小型网站或 B/S 项目&#xff0c;因同时在线人数不多&#xff0c;尚可让同一…

说说大型高并发高负载网站的系统架构

鄙人在多年的工作中接触和开发过不少大中型网站的模块&#xff0c;因此在大型网站应对高负载和并发的解决方案上有一些积累和经验&#xff0c;希望和大家一起探讨。 一个小型的网站&#xff0c;比如个人网站&#xff0c;可以使用最简单的html静态页面就实现了&#xff0c;配合…

大型网站系统架构分析

千万级的注册用户&#xff0c;千万级的帖子&#xff0c;nTB级的附件&#xff0c;还有巨大的日访问量&#xff0c;大型网站采用什么系统架构保证性能和稳定性&#xff1f; 首先讨论一下大型网站需要注意和考虑的问题。 数据库海量数据处理&#xff1a;负载量不大的情况下selec…

高性能网站架构之缓存篇—Redis集群搭建

看过 高性能网站架构之缓存篇--Redis安装配置和高性能网站架构之缓存篇--Redis使用配置端口转发 这两篇文章的&#xff0c;相信你已经对redis有一定的了解&#xff0c;并能够安装上&#xff0c;进行简单的使用了&#xff0c;但是在咱们的实际应用中&#xff0c;使用redis肯定不…

浏览器被23545等网站劫持,以Chrome为例亲测有效的两个解除劫持的方法

我这里以我被劫持的google浏览器即Chrome为例&#xff1a; 方法一: 修改浏览器的快捷方式&#xff0c;有人说删除快捷方式属性栏目标位置后的多的网址后缀有效&#xff0c;亲测无效。 真正有效的方式是:&#xff08;1&#xff09;找到你装的浏览器位置即如下文件位置&#xf…

网站的分布式架构一

互联网的网站和大部分企业管理软件一样都是使用B/S架构模型&#xff0c;但是大型的公共网站B/S架构会更加复杂&#xff0c;对架构人员的要求更高&#xff0c;今天我想在自己博客里聊聊我设计的网站的B/S技术架构。 不管是B/S架构的企业管理系统还是网站技术架构可以抽象为如下简…