{
    "ok": true,
    "domain": "has-sante.fr",
    "generated_at": "2026-08-09T19:04:07-05:00",
    "cache": {
        "hit": true,
        "ttl": 0
    },
    "score": {
        "total": 81,
        "label": "Good",
        "categories": {
            "dns": 70,
            "mail": 90,
            "security": 81,
            "network": 50,
            "availability": 100
        },
        "category_weights": {
            "dns": 25,
            "mail": 20,
            "security": 25,
            "network": 10,
            "availability": 20
        },
        "items": [
            {
                "category": "dns",
                "title": "IPv4 (A)",
                "max_points": 30,
                "earned_points": 30,
                "lost_points": 0,
                "detail": "1 IPv4 address(es) detected."
            },
            {
                "category": "dns",
                "title": "IPv6 (AAAA)",
                "max_points": 10,
                "earned_points": 0,
                "lost_points": 10,
                "detail": "0 IPv6 address(es) detected."
            },
            {
                "category": "dns",
                "title": "Name server redundancy",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0,
                "detail": "2 NS record(s); 2 or more required."
            },
            {
                "category": "dns",
                "title": "SOA record",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0,
                "detail": "Authoritative zone record."
            },
            {
                "category": "dns",
                "title": "DNSSEC chain",
                "max_points": 15,
                "earned_points": 0,
                "lost_points": 15,
                "detail": "Both DS and DNSKEY are required."
            },
            {
                "category": "dns",
                "title": "CAA policy",
                "max_points": 5,
                "earned_points": 0,
                "lost_points": 5,
                "detail": "Certificate authority restriction."
            },
            {
                "category": "dns",
                "title": "DNS propagation",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0,
                "detail": "Agreement between public resolvers."
            },
            {
                "category": "mail",
                "title": "MX records",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0,
                "detail": "2 MX record(s)."
            },
            {
                "category": "mail",
                "title": "SPF",
                "max_points": 25,
                "earned_points": 25,
                "lost_points": 0,
                "detail": "SPF policy published."
            },
            {
                "category": "mail",
                "title": "DMARC",
                "max_points": 25,
                "earned_points": 25,
                "lost_points": 0,
                "detail": "DMARC policy published."
            },
            {
                "category": "mail",
                "title": "DKIM",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0,
                "detail": "A DKIM selector was verified."
            },
            {
                "category": "mail",
                "title": "MTA-STS",
                "max_points": 5,
                "earned_points": 0,
                "lost_points": 5,
                "detail": "Mail transport policy."
            },
            {
                "category": "mail",
                "title": "TLS-RPT",
                "max_points": 5,
                "earned_points": 0,
                "lost_points": 5,
                "detail": "TLS reporting policy."
            },
            {
                "category": "security",
                "title": "Valid TLS certificate",
                "max_points": 55,
                "earned_points": 55,
                "lost_points": 0,
                "detail": "67 day(s) remaining."
            },
            {
                "category": "security",
                "title": "Certificate lifetime",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0,
                "detail": "Full points require at least 30 days remaining."
            },
            {
                "category": "security",
                "title": "HTTP security headers",
                "max_points": 35,
                "earned_points": 16,
                "lost_points": 19,
                "detail": "4 of 9 evaluated headers detected."
            },
            {
                "category": "network",
                "title": "PTR reverse DNS",
                "max_points": 30,
                "earned_points": 30,
                "lost_points": 0,
                "detail": "PTR: p1-ogo.ogosecurity.com"
            },
            {
                "category": "network",
                "title": "IPv4 diversity",
                "max_points": 35,
                "earned_points": 20,
                "lost_points": 15,
                "detail": "Two or more IPv4 addresses receive full points."
            },
            {
                "category": "network",
                "title": "IPv6 connectivity",
                "max_points": 35,
                "earned_points": 0,
                "lost_points": 35,
                "detail": "AAAA availability."
            },
            {
                "category": "availability",
                "title": "DNS resolution",
                "max_points": 40,
                "earned_points": 40,
                "lost_points": 0,
                "detail": "At least one address family must resolve."
            },
            {
                "category": "availability",
                "title": "HTTP response",
                "max_points": 40,
                "earned_points": 40,
                "lost_points": 0,
                "detail": "HTTP/2 200 "
            },
            {
                "category": "availability",
                "title": "HTTPS final URL",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0,
                "detail": "Final URL uses HTTPS."
            }
        ],
        "methodology": "Each category is normalized to 100. The total is the weighted sum: DNS 25%, Email 20%, Security 25%, Network 10%, Availability 20%.",
        "diagnostics": [
            {
                "level": "ok",
                "title": "IPv4 (A)",
                "detail": "1 IPv4 address(es) detected.",
                "category": "dns",
                "max_points": 30,
                "earned_points": 30,
                "lost_points": 0
            },
            {
                "level": "error",
                "title": "IPv6 (AAAA)",
                "detail": "0 IPv6 address(es) detected.",
                "category": "dns",
                "max_points": 10,
                "earned_points": 0,
                "lost_points": 10
            },
            {
                "level": "ok",
                "title": "Name server redundancy",
                "detail": "2 NS record(s); 2 or more required.",
                "category": "dns",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "SOA record",
                "detail": "Authoritative zone record.",
                "category": "dns",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0
            },
            {
                "level": "error",
                "title": "DNSSEC chain",
                "detail": "Both DS and DNSKEY are required.",
                "category": "dns",
                "max_points": 15,
                "earned_points": 0,
                "lost_points": 15
            },
            {
                "level": "error",
                "title": "CAA policy",
                "detail": "Certificate authority restriction.",
                "category": "dns",
                "max_points": 5,
                "earned_points": 0,
                "lost_points": 5
            },
            {
                "level": "ok",
                "title": "DNS propagation",
                "detail": "Agreement between public resolvers.",
                "category": "dns",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "MX records",
                "detail": "2 MX record(s).",
                "category": "mail",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "SPF",
                "detail": "SPF policy published.",
                "category": "mail",
                "max_points": 25,
                "earned_points": 25,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "DMARC",
                "detail": "DMARC policy published.",
                "category": "mail",
                "max_points": 25,
                "earned_points": 25,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "DKIM",
                "detail": "A DKIM selector was verified.",
                "category": "mail",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0
            },
            {
                "level": "error",
                "title": "MTA-STS",
                "detail": "Mail transport policy.",
                "category": "mail",
                "max_points": 5,
                "earned_points": 0,
                "lost_points": 5
            },
            {
                "level": "error",
                "title": "TLS-RPT",
                "detail": "TLS reporting policy.",
                "category": "mail",
                "max_points": 5,
                "earned_points": 0,
                "lost_points": 5
            },
            {
                "level": "ok",
                "title": "Valid TLS certificate",
                "detail": "67 day(s) remaining.",
                "category": "security",
                "max_points": 55,
                "earned_points": 55,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "Certificate lifetime",
                "detail": "Full points require at least 30 days remaining.",
                "category": "security",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0
            },
            {
                "level": "warning",
                "title": "HTTP security headers",
                "detail": "4 of 9 evaluated headers detected.",
                "category": "security",
                "max_points": 35,
                "earned_points": 16,
                "lost_points": 19
            },
            {
                "level": "ok",
                "title": "PTR reverse DNS",
                "detail": "PTR: p1-ogo.ogosecurity.com",
                "category": "network",
                "max_points": 30,
                "earned_points": 30,
                "lost_points": 0
            },
            {
                "level": "warning",
                "title": "IPv4 diversity",
                "detail": "Two or more IPv4 addresses receive full points.",
                "category": "network",
                "max_points": 35,
                "earned_points": 20,
                "lost_points": 15
            },
            {
                "level": "error",
                "title": "IPv6 connectivity",
                "detail": "AAAA availability.",
                "category": "network",
                "max_points": 35,
                "earned_points": 0,
                "lost_points": 35
            },
            {
                "level": "ok",
                "title": "DNS resolution",
                "detail": "At least one address family must resolve.",
                "category": "availability",
                "max_points": 40,
                "earned_points": 40,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "HTTP response",
                "detail": "HTTP/2 200 ",
                "category": "availability",
                "max_points": 40,
                "earned_points": 40,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "HTTPS final URL",
                "detail": "Final URL uses HTTPS.",
                "category": "availability",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0
            }
        ]
    },
    "dns": {
        "records": {
            "A": [
                "37.59.251.196"
            ],
            "AAAA": [],
            "CNAME": [],
            "MX": [
                "10 j10.altospam.com.",
                "10 s18.altospam.net."
            ],
            "TXT": [
                "\"google-site-verification=tUY2Wb_Lyj7hT33hjyRrksKIa0pcWuh0YNNYiEJ9bF0\"",
                "\"_2hstg6eo1m867qfs4castvir0vfucop\"",
                "\"MS=11965F690C85CB402E28978317299C1CF4C556A1\"",
                "\"atlassian-sending-domain-verification=8dc46d92-a4ae-47c9-8ff3-ac5d35c25521\"",
                "\"MS=ms44625611\"",
                "\"N16dkUJ6iEYerawoEaLrpMYy5QZFZO5o/9SkEoSWzUoe/LhUGCoosT0IMVZ4V7T3UnFhuCIyT8Y8IjZ9WKKXyA==\"",
                "\"v=spf1 ip4:212.83.134.124 ip4:185.169.210.65 ip4:185.7.39.6 ip4:185.171.5.244 ip4:185.171.5.228 a:mx02.kleegroup.net a:mx01.kleegroup.net include:spf.protection.outlook.com include:spf.hornetsecurity.com include:_spf.profils.org include:spf.mailjet.com in\" \"clude:_spf.tem.scaleway.com include:spf.brevo.com include:spf.tipimail.com ip4:81.93.29.64/28 ip4:109.197.246.192/27 ip4:212.51.182.164 -all\"",
                "\"brevo-code:d430aaba285097dda87fc12b87b53e6e\""
            ],
            "NS": [
                "ns4.rmi.fr.",
                "ns3.rmi.fr."
            ],
            "SOA": [
                "ns3.rmi.fr. ndd.adista.fr. 2026073102 21600 3600 604800 86400"
            ],
            "CAA": [],
            "DS": [],
            "DNSKEY": [],
            "RRSIG": [],
            "NSEC": [],
            "NSEC3": [],
            "SRV": [],
            "NAPTR": [],
            "TLSA": [],
            "SSHFP": []
        },
        "ipv4": [
            "37.59.251.196"
        ],
        "ipv6": []
    },
    "mail": {
        "spf": "v=spf1 ip4:212.83.134.124 ip4:185.169.210.65 ip4:185.7.39.6 ip4:185.171.5.244 ip4:185.171.5.228 a:mx02.kleegroup.net a:mx01.kleegroup.net include:spf.protection.outlook.com include:spf.hornetsecurity.com include:_spf.profils.org include:spf.mailjet.com include:_spf.tem.scaleway.com include:spf.brevo.com include:spf.tipimail.com ip4:81.93.29.64/28 ip4:109.197.246.192/27 ip4:212.51.182.164 -all",
        "dmarc": "v=DMARC1; p=none; rua=mailto:ceba5c6f@in.mailhardener.com,mailto:rua@dmarc360.com",
        "dkim_selector": "selector1",
        "dkim_host": "selector1._domainkey.has-sante.fr",
        "dkim": "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCiez6oh/YfEKWp6T2zDqekO1HFW5T5+3IOUcN/8IwSw8zqoa0M5XY8YGQkbd8XSdL0NaO4FyEExeM78qf2rP9RGTwmWpEOsmBr45eMfSO4LfKBVNDIHryHk6Cj54olY0Oeux2sBJSwme+HwM8XzRcC42Svh9Gvz7NjQWvicMWfzQIDAQAB;",
        "spf_analysis": {
            "valid": true,
            "lookups": 9,
            "final": "-all",
            "message": "Within the estimated limit"
        },
        "dmarc_analysis": {
            "valid": true,
            "policy": "none"
        },
        "bimi": "",
        "mta_sts": "",
        "tls_rpt": ""
    },
    "advanced": {
        "ptr": "p1-ogo.ogosecurity.com",
        "propagation": {
            "consistent": true,
            "results": [
                {
                    "provider": "Google",
                    "server": "8.8.8.8",
                    "result": [
                        "37.59.251.196"
                    ],
                    "time_ms": 51.92
                },
                {
                    "provider": "Cloudflare",
                    "server": "1.1.1.1",
                    "result": [
                        "37.59.251.196"
                    ],
                    "time_ms": 150.76
                },
                {
                    "provider": "Quad9",
                    "server": "9.9.9.9",
                    "result": [
                        "37.59.251.196"
                    ],
                    "time_ms": 29.69
                },
                {
                    "provider": "OpenDNS",
                    "server": "208.67.222.222",
                    "result": [
                        "37.59.251.196"
                    ],
                    "time_ms": 26.96
                },
                {
                    "provider": "AdGuard",
                    "server": "94.140.14.14",
                    "result": [
                        "37.59.251.196"
                    ],
                    "time_ms": 311.8
                }
            ]
        }
    },
    "ssl": {
        "available": true,
        "issuer": "DigiCert Ireland Limited",
        "subject": "*.has-sante.fr",
        "valid_from": "2025-10-16T19:00:00-05:00",
        "valid_to": "2026-10-16T18:59:59-05:00",
        "days_remaining": 67,
        "san": [
            "*.has-sante.fr",
            "has-sante.fr"
        ],
        "protocol": "TLSv1.3",
        "cipher": "TLS_AES_128_GCM_SHA256"
    },
    "http": {
        "url": "https://has-sante.fr/",
        "status": "HTTP/2 200 ",
        "http_version": "3",
        "headers": {
            "accept-ranges": "bytes",
            "access-control-allow-origin": "*",
            "age": "0",
            "cache-control": "no-cache, no-store, must-revalidate",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 10 Aug 2026 00:03:58 GMT",
            "expires": "0",
            "feature-policy": "accelerometer 'none'; autoplay 'none'; camera *; geolocation 'self'; gyroscope 'none'; magnetometer 'none'; microphone *; midi 'none'; payment 'none'; usb 'none';",
            "permissions-policy": "accelerometer=(), autoplay=(), camera=*, geolocation=(self), gyroscope=(), magnetometer=(), microphone=*, midi=(), payment=(), usb=()",
            "pragma": "no-cache",
            "referrer-policy": "strict-origin-when-cross-origin",
            "set-cookie": "JSESSIONID=DD15DB77049C5A254940E0F4DE982BE0; Path=/; Secure; HttpOnly",
            "strict-transport-security": "max-age=31536000",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-jcms-ajax-id": "AjaxCtxt-0-1786320238448",
            "x-ogo-cache": "MISS",
            "x-varnish": "1215621997",
            "x-xss-protection": "1",
            "content-length": "19345"
        },
        "security_checks": {
            "strict-transport-security": true,
            "content-security-policy": false,
            "x-content-type-options": true,
            "x-frame-options": false,
            "referrer-policy": true,
            "permissions-policy": true,
            "cross-origin-opener-policy": false,
            "cross-origin-embedder-policy": false,
            "cross-origin-resource-policy": false
        },
        "server": "",
        "powered_by": ""
    },
    "webpage": {
        "url": "https://has-sante.fr/",
        "title": "Haute Autorité de Santé - HAS - Professionnels",
        "description": "Autorité publique indépendante à caractère scientifique, la Haute Autorité de santé (HAS) vise à développer la qualité dans le champ sanitaire, social et médico-social, au bénéfice des personnes.\r\nElle travaille aux côtés des pouvoirs publics dont elle éclaire la décision, avec les professionnels pour optimiser leurs pratiques et organisations, et au bénéfice des usagers dont elle renforce la capacité à faire des choix.",
        "success": true,
        "error": "",
        "status": 206
    },
    "network": {
        "37.59.251.196": {
            "success": false,
            "country": "",
            "region": "",
            "city": "",
            "asn": "",
            "organization": "",
            "isp": ""
        }
    },
    "smtp": {
        "host": "j10.altospam.com",
        "ports": [
            {
                "port": 25,
                "open": false,
                "time_ms": 16.5,
                "banner": "",
                "error": "Connection refused"
            },
            {
                "port": 465,
                "open": false,
                "time_ms": 4020.7,
                "banner": "",
                "error": "Connection timed out"
            },
            {
                "port": 587,
                "open": false,
                "time_ms": 4036.7,
                "banner": "",
                "error": "Connection timed out"
            }
        ]
    },
    "visitor": {
        "ip": "216.73.217.62",
        "reverse": "",
        "country": "",
        "country_code": "",
        "region": "",
        "city": "",
        "latitude": null,
        "longitude": null,
        "isp": "",
        "organization": "",
        "asn": "",
        "timezone": "",
        "browser": "Other",
        "os": "Other",
        "language": "",
        "user_agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)",
        "is_bot": true,
        "cloudflare": false
    },
    "analysis_time_ms": 115.58
}