This repository provides a framework to monitor the health and security of your websites, automatically generating a detailed report in markdown format on a daily basis. It performs various checks, including domain status, SSL certificate validity, security headers, and performance metrics, helping you keep your online presence secure and optimized.
- Automated Daily Checks: Runs daily using GitHub Actions.
- Comprehensive Analysis: Performs a range of checks, including:
- Domain breach detection
- Domain expiration check
- SSL certificate validation
- DNS blacklist check
- HSTS header check
- XSS protection check
- Redirect chain check
- PageSpeed performance score
- Website load time
- Rate limiting check
- CDN detection
- Brotli compression check
- Deprecated libraries check
- Client-side rendering check
- Mixed content check
- Content-Type check
- Internationalization check
- FLoC check
- AMP check
- Robots.txt check
- Sitemap check
- Favicon check
- Alt tag check
- Open Graph check
- Semantic Markup check
- Ad Tracking check
- WHOIS privacy check
- Privacy exposure check
- Clear Report: Generates a markdown-formatted report with results in a table, easily viewable on GitHub.
- Customizable: Easily extendable to incorporate new checks or modify existing ones.
- Fork This Repository: Start by forking this repository to your GitHub account.
- Configure Websites:
- Edit the
config.yaml
file. - Add the websites you want to monitor, one per line, under the
websites:
section.websites: - audiolibri.org - example.com
- Edit the
- Enable GitHub Actions (If Not Already Enabled):
- Navigate to the "Actions" tab in your repository.
- If GitHub Actions are not enabled, enable them for your forked repository, and make sure you give write permissions.
- Set the PageSpeed API Key Secret:
- Obtain a Google PageSpeed Insights API key if you want to use the PageSpeed test.
- Navigate to "Settings" -> "Secrets and variables" -> "Actions" in your GitHub repository.
- Add a new repository secret named
PAGESPEED_API_KEY
and paste your API key as the value.
- Create the
report_template.md
File:- Create a new file called
report_template.md
in the root of your repository if it doesn't exist. - Add a default template to generate the report, for example:
# Websites Monitor
- Create a new file called
- Commit All Changes:
- Commit and push the changes to your forked repository to trigger the initial report generation.
- Daily Execution: The
create-report.yml
GitHub Action workflow is scheduled to run daily. - Website Checks: The workflow executes the
main.py
script, which performs all the checks on the websites specified inconfig.yaml
. - Report Generation: The
main.py
script automatically generates the report in theREADME.md
file using thereport_template.md
as a base. - Automatic Updates: The
README.md
file will be automatically updated with the latest check results after each successful run of the workflow.
The config.yaml
file allows for various configurations:
websites
: List of URLs to monitor.output_file
: The output filename of the generated report, defaults toREADME.md
.max_workers
: Number of concurrent tasks when performing the checks.timeout
: Default timeout in seconds for the checks.report_template
: The filename of the report template, defaults toreport_template.md
github_workflow_badge
: The GitHub workflow badge urlpagespeed_api_key
: The Google PageSpeed Insights API key (set as a GitHub Secret).
You can modify existing checks or add new ones by editing the files in the checks
directory and then adding the check to the WebsiteMonitor
class in main.py
. Ensure your new check functions follow the same format, returning an emoji indicating status (🟢, 🔴, or ⚪).
The generated report in README.md
includes a table with a row for each website, and the results for each check in each column.
- 🟢: The check is successful.
- 🔴: The check failed.
- 🟡: The check returned a warning or requires attention.
- ⚪: An error occurred during the check, or the check was not completed.
For any issues or suggestions regarding this project, feel free to open an issue on GitHub.