{
    "ok": true,
    "domain": "openstreetmap.fr",
    "generated_at": "2026-08-09T05:17:28-05:00",
    "cache": {
        "hit": true,
        "ttl": 0
    },
    "score": {
        "total": 88,
        "label": "Good",
        "categories": {
            "dns": 95,
            "mail": 90,
            "security": 69,
            "network": 85,
            "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": 10,
                "lost_points": 0,
                "detail": "1 IPv6 address(es) detected."
            },
            {
                "category": "dns",
                "title": "Name server redundancy",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0,
                "detail": "3 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": 15,
                "lost_points": 0,
                "detail": "DS and DNSKEY detected."
            },
            {
                "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": "81 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": 4,
                "lost_points": 31,
                "detail": "1 of 9 evaluated headers detected."
            },
            {
                "category": "network",
                "title": "PTR reverse DNS",
                "max_points": 30,
                "earned_points": 30,
                "lost_points": 0,
                "detail": "PTR: 45-147-209-254.cust.moji.fr"
            },
            {
                "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": 35,
                "lost_points": 0,
                "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/1.1 200 OK"
            },
            {
                "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": "ok",
                "title": "IPv6 (AAAA)",
                "detail": "1 IPv6 address(es) detected.",
                "category": "dns",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "Name server redundancy",
                "detail": "3 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": "ok",
                "title": "DNSSEC chain",
                "detail": "DS and DNSKEY detected.",
                "category": "dns",
                "max_points": 15,
                "earned_points": 15,
                "lost_points": 0
            },
            {
                "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": "81 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": "1 of 9 evaluated headers detected.",
                "category": "security",
                "max_points": 35,
                "earned_points": 4,
                "lost_points": 31
            },
            {
                "level": "ok",
                "title": "PTR reverse DNS",
                "detail": "PTR: 45-147-209-254.cust.moji.fr",
                "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": "ok",
                "title": "IPv6 connectivity",
                "detail": "AAAA availability.",
                "category": "network",
                "max_points": 35,
                "earned_points": 35,
                "lost_points": 0
            },
            {
                "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/1.1 200 OK",
                "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": [
                "45.147.209.254"
            ],
            "AAAA": [
                "2a06:c484:5::100"
            ],
            "CNAME": [],
            "MX": [
                "50 fb.mail.gandi.net.",
                "10 spool.mail.gandi.net."
            ],
            "TXT": [
                "\"v=spf1 a mx a:www.openstreetmap.fr a:osm34.openstreetmap.fr a:mail.openstreetmap.fr include:_mailcust.gandi.net ?all\""
            ],
            "NS": [
                "ns-144-b.gandi.net.",
                "ns-225-a.gandi.net.",
                "ns-208-c.gandi.net."
            ],
            "SOA": [
                "ns1.gandi.net. hostmaster.gandi.net. 1785974400 10800 3600 604800 10800"
            ],
            "CAA": [],
            "DS": [
                "54016 13 2 15A1B97CD1F3E1A23B20A0C0BD539EF44F3C725EE8B9AD2A177626F4 E36B8F0D"
            ],
            "DNSKEY": [
                "256 3 13 2RzBxon+9q5PwiotSkA5IYxo79bpeGC2u5WzSqESzaBeToxSzU6ON6SQ DM7xZrivRlcuEnCcNqYbSKHKUKFHEg=="
            ],
            "RRSIG": [],
            "NSEC": [],
            "NSEC3": [],
            "SRV": [],
            "NAPTR": [],
            "TLSA": [],
            "SSHFP": []
        },
        "ipv4": [
            "45.147.209.254"
        ],
        "ipv6": [
            "2a06:c484:5::100"
        ]
    },
    "mail": {
        "spf": "v=spf1 a mx a:www.openstreetmap.fr a:osm34.openstreetmap.fr a:mail.openstreetmap.fr include:_mailcust.gandi.net ?all",
        "dmarc": "v=DMARC1;p=none;aspf=r;adkim=r;rua=mailto:postmaster@openstreetmap.fr",
        "dkim_selector": "default",
        "dkim_host": "default._domainkey.openstreetmap.fr",
        "dkim": "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvEvJarz9Rnbp1VELtjkga6nV5SFQ6zgoLTUIRBrrorj4ZDZuPlzzJrIUqwEjBWW79QzG9p8daXIbLNwow+8Y1EO9VmWv9D/s+Q7J32BFUdP533h7qNKzKskel6vx5Ahfi3k5e/Yir17bA/wcTIU2gg9/y7M6yMYdO7Yy9kKQ0UYkFJd3TgtxufzkROgORTApOB6CU7VZwxBSK3w8wslRfbWr8qfVpSX4I+TnlQhPqrwd30UCa+AFwtli03o1c8F/6wEdxyVUfGjqHoXdUm++eSw1q0BHmTpvtGdPj6PyaQO6HYYwk7z6RTF6eZ1z/urOZHjd+NMIBx1gmGxjRUDpTQIDAQAB",
        "spf_analysis": {
            "valid": true,
            "lookups": 6,
            "final": "?all",
            "message": "Within the estimated limit"
        },
        "dmarc_analysis": {
            "valid": true,
            "policy": "none"
        },
        "bimi": "",
        "mta_sts": "",
        "tls_rpt": ""
    },
    "advanced": {
        "ptr": "45-147-209-254.cust.moji.fr",
        "propagation": {
            "consistent": true,
            "results": [
                {
                    "provider": "Google",
                    "server": "8.8.8.8",
                    "result": [
                        "45.147.209.254"
                    ],
                    "time_ms": 115.51
                },
                {
                    "provider": "Cloudflare",
                    "server": "1.1.1.1",
                    "result": [
                        "45.147.209.254"
                    ],
                    "time_ms": 258.84
                },
                {
                    "provider": "Quad9",
                    "server": "9.9.9.9",
                    "result": [
                        "45.147.209.254"
                    ],
                    "time_ms": 197.18
                },
                {
                    "provider": "OpenDNS",
                    "server": "208.67.222.222",
                    "result": [
                        "45.147.209.254"
                    ],
                    "time_ms": 142.04
                },
                {
                    "provider": "AdGuard",
                    "server": "94.140.14.14",
                    "result": [
                        "45.147.209.254"
                    ],
                    "time_ms": 355.25
                }
            ]
        }
    },
    "ssl": {
        "available": true,
        "issuer": "Let's Encrypt",
        "subject": "openstreetmap.fr",
        "valid_from": "2026-07-31T22:14:38-05:00",
        "valid_to": "2026-10-29T22:14:37-05:00",
        "days_remaining": 81,
        "san": [
            "openstreetmap.fr",
            "www.openstreetmap.fr"
        ],
        "protocol": "TLSv1.3",
        "cipher": "TLS_AES_256_GCM_SHA384"
    },
    "http": {
        "url": "https://www.openstreetmap.fr/",
        "status": "HTTP/1.1 200 OK",
        "http_version": "2",
        "headers": {
            "server": "nginx/1.22.1",
            "date": "Sun, 09 Aug 2026 10:17:18 GMT",
            "content-type": "text/html; charset=UTF-8",
            "connection": "keep-alive",
            "expires": "Sun, 09 Aug 2026 11:17:17 GMT",
            "cache-control": "max-age=3600",
            "x-redirect-by": "WordPress",
            "location": "https://www.openstreetmap.fr/",
            "permissions-policy": "interest-cohort=()",
            "link": "<https://www.openstreetmap.fr/>; rel=shortlink"
        },
        "security_checks": {
            "strict-transport-security": false,
            "content-security-policy": false,
            "x-content-type-options": false,
            "x-frame-options": false,
            "referrer-policy": false,
            "permissions-policy": true,
            "cross-origin-opener-policy": false,
            "cross-origin-embedder-policy": false,
            "cross-origin-resource-policy": false
        },
        "server": "nginx/1.22.1",
        "powered_by": ""
    },
    "webpage": {
        "url": "https://www.openstreetmap.fr/",
        "title": "Accueil - OpenStreetMap France",
        "description": "OpenStreetMap est un projet cartographique, en ligne et mondial. Chacun peut l'actualiser ou l'améliorer. Il suffit de participer en ajoutant des données de terrain vérifiables. Son ambition est d'offrir librement toutes ces données cartographiques et de permettre leurs réutilisations. OpenStreetMap, c'est avant tout une communauté de personnes qui contribuent et partagent chaque jour des informations sur leurs territoires. Plus d'un million de personnes ont déjà participé pour créer des données libres, des cartes ouvertes et des services innovants.",
        "success": true,
        "error": "",
        "status": 200
    },
    "network": {
        "45.147.209.254": {
            "success": false,
            "country": "",
            "region": "",
            "city": "",
            "asn": "",
            "organization": "",
            "isp": ""
        }
    },
    "smtp": {
        "host": "fb.mail.gandi.net",
        "ports": [
            {
                "port": 25,
                "open": false,
                "time_ms": 112,
                "banner": "",
                "error": "Network is unreachable"
            },
            {
                "port": 465,
                "open": false,
                "time_ms": 4012.7,
                "banner": "",
                "error": "Connection timed out"
            },
            {
                "port": 587,
                "open": false,
                "time_ms": 4016.3,
                "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": 78.22
}