Skip to content

rftxcom/site-health-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

site-health 🏥

Fast website health checks for Python. Check SSL certificates, security headers, performance, and DNS — all in one command.

Zero dependencies. Uses only Python standard library.

Installation

pip install site-health

Quick Start

Command Line

# Check a website
site-health example.com

# Check multiple sites
site-health google.com github.com stripe.com

# JSON output (great for scripts)
site-health example.com --json

# Quick ping check
site-health example.com --ping

# SSL-only check
site-health example.com --ssl-only

# Security headers only
site-health example.com --headers-only

# CI mode (exits with code 1 if unhealthy)
site-health example.com --ci

Python API

from site_health import check

# Full health check
result = check('https://example.com')
print(result.grade)    # 'A+', 'A', 'B', 'C', 'D', or 'F'
print(result.healthy)  # True or False
print(result.score)    # 0-100

# Access detailed results
print(result.ssl.valid)              # True/False
print(result.ssl.days_until_expiry)  # Days until cert expires
print(result.headers.score)          # Security headers score
print(result.headers.missing)        # List of missing headers
print(result.performance.rating)     # 'fast', 'moderate', 'slow'
print(result.dns.ip_addresses)       # List of IPv4 addresses

# Quick checks
from site_health import ping, check_ssl, check_headers

ping('example.com')           # True/False
check_ssl('example.com')      # SSLResult
check_headers('example.com')  # HeadersResult

# Check multiple sites
from site_health import check_many

results = check_many(['google.com', 'github.com', 'stripe.com'])
for r in results:
    print(f"{r.url}: {r.grade}")

JSON Output

result = check('example.com')
print(result.to_json())
{
  "url": "https://example.com",
  "healthy": true,
  "grade": "B",
  "score": 78,
  "ssl": {
    "valid": true,
    "issuer": "DigiCert Inc",
    "days_until_expiry": 45
  },
  "headers": {
    "score": 60,
    "present": ["X-Content-Type-Options", "X-Frame-Options"],
    "missing": ["Content-Security-Policy", "Strict-Transport-Security"]
  },
  "performance": {
    "response_time_ms": 156,
    "rating": "fast"
  },
  "dns": {
    "resolved": true,
    "ip_addresses": ["93.184.216.34"]
  }
}

What's Checked

SSL Certificate

  • ✅ Certificate validity
  • ✅ Expiration date and days remaining
  • ✅ Issuer information
  • ✅ TLS protocol version

Security Headers

  • ✅ Strict-Transport-Security (HSTS)
  • ✅ Content-Security-Policy (CSP)
  • ✅ X-Frame-Options
  • ✅ X-Content-Type-Options
  • ✅ Referrer-Policy
  • ✅ Permissions-Policy
  • ✅ X-XSS-Protection

Performance

  • ✅ Response time (TTFB)
  • ✅ Performance rating (fast/moderate/slow)

DNS

  • ✅ DNS resolution
  • ✅ IPv4 addresses
  • ✅ IPv6 addresses

Grading

Grade Score Meaning
A+ 95-100 Excellent - All checks pass
A 85-94 Great - Minor issues only
B 75-84 Good - Some improvements needed
C 65-74 Fair - Multiple issues
D 50-64 Poor - Significant problems
F 0-49 Failing - Critical issues

CI/CD Integration

Use --ci flag to exit with code 1 if any site is unhealthy:

# GitHub Actions
- name: Check site health
  run: pip install site-health && site-health mysite.com --ci

# GitLab CI
health-check:
  script:
    - pip install site-health
    - site-health mysite.com --ci

24/7 Monitoring

Need continuous monitoring with alerts?

tools.rftmedia.com/monitor

  • Real-time alerts via email, Slack, SMS
  • Historical uptime tracking
  • Multi-location checks
  • Status pages for your users

License

MIT

Links

About

Fast website health checks for Python. Check SSL, security headers, performance, and DNS - all in one command.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages