curl -X POST https://api.shadowtrackr.com/api/v4/internet_standards
-H "Authorization: Bearer [API_KEY]"
-d '{}'
from shadowtrackr import ShadowTrackr
import json
st = ShadowTrackr(api_key="API_KEY")
result = st.internet_standards()
print(json.dumps(result, indent=2))
<?php
$postdata = []
$ch = curl_init('https://api.shadowtrackr.com/api/v4/internet_standards
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer [API_KEY]"],
CURLOPT_POSTFIELDS => json_encode(postdata),
]);
$results = json_decode(curl_exec($ch), true);
print_r($results);
curl_close($ch);
?>
Results
{"results": "1 result found",
"data": [
{"url": "shadowtrackr.com",
"checks": [
{"title": "Modern address (IPv6)",
"checks": [
{ "title": "At least 2 working IPv6 nameservers for domain",
"passed": True,
"status": "required",
"done": True,
"note": "The AAAA records for the NS servers of this domain must exist and resolve to IPv6 addresses",
"data": [
{"nameserver": "ns-cloud-e1.googledomains.com",
"ipv4": ["216.239.32.110"],
"ipv6": ["2001:4860:4802:32::6e"]
},
{"nameserver": "ns-cloud-e3.googledomains.com",
"ipv4": ["216.239.36.110"],
"ipv6": ["2001:4860:4802:36::6e"]
},
{"nameserver": "ns-cloud-e2.googledomains.com",
"ipv4": ["216.239.34.110"],
"ipv6": ["2001:4860:4802:34::6e"]
},
{"nameserver": "ns-cloud-e4.googledomains.com",
"ipv4": ["216.239.38.110"],
"ipv6": ["2001:4860:4802:38::6e"]
}
]},
{"title": "IPv6 nameservers all reachable over IPv6",
"passed": True,
"status": "required",
"done": True,
"note": "The nameserver must not only be reachable over IPv6 but also actually resolve the URLs to IP addresses. If it's reachable but doesn't reply with an IP address, the nameserver might as well be unreachable. Note that this is different from the check at internet.nl, where they only check if the DNS server is reachable.",
"data": [
{"nameserver": "ns-cloud-e1.googledomains.com",
"ipv4": ["216.239.32.110"],
"ipv6": ["2001:4860:4802:32::6e"]
},
{"nameserver": "ns-cloud-e3.googledomains.com",
"ipv4": ["216.239.36.110"],
"ipv6": ["2001:4860:4802:36::6e"]
},
{"nameserver": "ns-cloud-e2.googledomains.com",
"ipv4": ["216.239.34.110"],
"ipv6": ["2001:4860:4802:34::6e"]
},
{"nameserver": "ns-cloud-e4.googledomains.com",
"ipv4": ["216.239.38.110"],
"ipv6": ["2001:4860:4802:38::6e"
}
]}
]},
{"title": "At least one of your web servers has an IPv6 address.",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"url": "shadowtrackr.com",
"ipv4": "91.98.127.83",
"ipv6": "2a01:4f8:1c1a:e20::1"
}
]},
{"title": "All your web servers with an IPv6 address are reachable over IPv6.",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"url": "shadowtrackr.com",
"ipv6": "2a01:4f8:1c1a:e20::1",
"reachable": "yes"
}
]},
{"title": "Your website on IPv6 seems to be the same as your website on IPv4.",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [],
}
]},
{ "title": "Signed domain name (DNSSEC)",
"checks": [
{"title": "DNSSEC existence",
"passed": True,
"status": "required",
"done": True,
"note": "Found SOA and RRSIG records for this domain",
"data": [
{"domain": "shadowtrackr.com",
"registrar": "Squarespace Domains II LLC"
}
]},
{"title": "DNSSEC validity",
"passed": True,
"status": "required",
"done": True,
"note": "The RRSIG signature for the SOA record is fully validated",
"data": [
{"domain": "shadowtrackr.com",
"status": "secure"
}
]}
]},
{"title": "Secure connection (HTTPS)",
"checks": [
{"title": "HTTPS available",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"HTTPS existent": "yes"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"HTTPS existent": "yes"
}
]},
{"title": "HTTPS redirect",
"passed": True,
"status": "required",
"done": True,
"note": "The redirect must be to the https:// version of the website on the same URL",
"data": [
{"Web server IP address": "91.98.127.83",
"HTTPS redirect": "yes"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"HTTPS redirect": "yes"
}
]},
{"title": "HTTP Compression",
"passed": False,
"status": "optional",
"done": False,
"note": "",
"data": []
},
{"title": "HSTS",
"passed": True,
"status": "required",
"done": True,
"note": "The Strict-Transport-Security header must be present and have a minimal value of 31536000 (1 year)",
"data": [
{"Web server IP address": "91.98.127.83",
"HSTS": "yes"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"HSTS": "yes"
}
]}
]},
{"title": "TLS",
"checks": [
{"title": "TLS Version",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"TLS Version": "TLS 1.2, TLS 1.3"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"TLS Version": "TLS 1.2, TLS 1.3"
}
]},
{"title": "Ciphers (Algorithm selections)",
"passed": 1,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"Affected ciphers": "TLS_CHACHA20_POLY1305_SHA256",
"Status": "good"
},
{"Web server IP address": "91.98.127.83",
"Affected ciphers": "ECDHE-ECDSA-AES128-GCM-SHA256",
"Status": "good"
},
{"Web server IP address": "91.98.127.83",
"Affected ciphers": "ECDHE-ECDSA-CHACHA20-POLY1305",
"Status": "good"
},
{"Web server IP address": "91.98.127.83",
"Affected ciphers": "TLS_AES_256_GCM_SHA384",
"Status": "good"
},
{"Web server IP address": "91.98.127.83",
"Affected ciphers": "TLS_AES_128_GCM_SHA256",
"Status": "good"
},
{"Web server IP address": "91.98.127.83",
"Affected ciphers": "ECDHE-ECDSA-AES256-GCM-SHA384",
"Status": "good"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected ciphers": "TLS_CHACHA20_POLY1305_SHA256",
"Status": "good"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected ciphers": "ECDHE-ECDSA-AES128-GCM-SHA256",
"Status": "good"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected ciphers": "ECDHE-ECDSA-CHACHA20-POLY1305",
"Status": "good"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected ciphers": "TLS_AES_256_GCM_SHA384",
"Status": "good"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected ciphers": "TLS_AES_128_GCM_SHA256",
"Status": "good"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected ciphers": "ECDHE-ECDSA-AES256-GCM-SHA384",
"Status": "good"
}
],
{"title": "Cipher order",
"passed": True,
"status": "required",
"done": True,
"note":"You only have secure ciphers, this test is not applicable",
"data": []
},
{"title": "Key exchange parameters",
"passed": False,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected parameters": "ffdhe3072",
"status": "insufficient"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected parameters": "ffdhe2048",
"status": "phase out"
}
],
{"title": "Hash function for Key exchange",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"SHA2 support for signatures": "yes"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"SHA2 support for signatures": "yes"
}
]},
{"title": "TLS compression",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"TLS compression": "no"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"TLS compression": "no"
}
]},
{"title": "Secure renegotiation",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"Secure renegotiation": "yes"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Secure renegotiation": "yes"
}
]},
{"title": "Client-initiated renegotiation",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"Client-initiated renegotiation": "no"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Client-initiated renegotiation": "no"
}
]},
{
"title": "0-RTT",
"passed": False,
"status": "required",
"done": False,
"note": "Found TLS 1.3, but this check is not implemented yet. It's a rare attack.",
"data": []
},
{"title": "OCSP stapling",
"passed": 2,
"status": "optional",
"done": True,
"note": "Supporting OCSP stapling is better, but this check is optional",
"data": [
{"Web server IP address": "91.98.127.83",
"OCSP stapling": "no"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"OCSP stapling": "no"
}
]}
]},
{"title": "Certificate",
"checks": [
{"title": "Trust chain of certificate",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"Untrusted certificate chain": "none"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Untrusted certificate chain": "none"
}
]},
{"title": "Public key of certificate",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"Affected signature parameters": "EC 256 bits (curve P-256)",
"Status:": "sufficient"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected signature parameters": "EC 256 bits (curve P-256)",
"Status:": "sufficient"
}
]},
{"title": "Signature of certificate",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"Affected hash algorithm": "ECDSA with SHA384",
"Status:": "good"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Affected hash algorithm": "ECDSA with SHA384",
"Status:": "good"
}
]},
{"title": "Domain name on certificate",
"passed": True,
"status": "required",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"Unmatched domains on certificate": "none"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Unmatched domains on certificate": "none"
}
]},
{"title": "CAA for domain",
"passed": False,
"status": "recommended",
"done": True,
"note": "No CAA records found at all",
"data": []
}
]},
{"title": "DANE",
"checks": [
{"title": "DANE existence",
"passed": False,
"status": "optional",
"done": True,
"note": "",
"data": [
{"Domain": "_443._tcp.shadowtrackr.com",
"DANE TLSA record existent": "no"
}
]},
{"title": "DANE validity",
"passed": False,
"status": "optional",
"done": False,
"note": "This check is not done because no TLSA records where found",
"data": []
}
]},
{"title": "HTTP security headers",
"checks": [
{ "title": "X-Frame-Options",
"passed": True,
"status": "optional",
"done": True,
"note": "X-Frame-Options (XFO) implemented via the CSP frame-ancestors directive",
"data": [
{"Web server IP address": "91.98.127.83",
"X-Frame-Options value": "none"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"X-Frame-Options value": "none"
}
]},
{"title": "X-Content-Type-Options",
"passed": True,
"status": "recommended",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"X-Content-Type-Options value": "nosniff"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"X-Content-Type-Options value": "nosniff"
}
]},
{"title": "Content-Security-Policy",
"passed": False,
"status": "recommended",
"done": True,
"note": "Content Security Policy (CSP) implemented unsafely. This includes 'unsafe-inline' or data: inside script-src, overly broad sources such as https: inside object-src or script-src, or not restricting the sources for object-src or script-src.",
"data": [
{"Web server IP address": "91.98.127.83",
"CSP value": "none"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"CSP value": "none"
}
]},
{"title": "Referrer-Policy existence",
"passed": True,
"status": "recommended",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"Referrer-Policy value": "strict-origin"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Referrer-Policy value": "strict-origin"
}
]}
]},
{"title": "Other security options",
"checks": [
{"title": "Security.txt",
"passed": True,
"status": "recommended",
"done": True,
"note": "",
"data": [
{"Web server IP address": "91.98.127.83",
"Findings": "exists and valid"
},
{"Web server IP address": "2a01:4f8:1c1a:e20::1",
"Findings": "exists and valid"
}
]}
]},
{title": "RPKI name servers of domain",
"checks": [
{"title": "Route Origin Authorisation existence",
"passed": True,
"status": "recommended",
"done": True,
"note": "",
"data": [
{"nameserver": "ns-cloud-e1.googledomains.com",
"IP address": "216.239.32.110",
"RPKI Route Origin Authorization": "ok"
},
{"nameserver": "ns-cloud-e1.googledomains.com",
"IP address": "2001:4860:4802:32::6e",
"RPKI Route Origin Authorization": "ok"
},
{"nameserver": "ns-cloud-e3.googledomains.com",
"IP address": "216.239.36.110",
"RPKI Route Origin Authorization": "ok"
},
{"nameserver": "ns-cloud-e3.googledomains.com",
"IP address": "2001:4860:4802:36::6e",
"RPKI Route Origin Authorization": "ok"
},
{"nameserver": "ns-cloud-e2.googledomains.com",
"IP address": "216.239.34.110",
"RPKI Route Origin Authorization": "ok"
},
{"nameserver": "ns-cloud-e2.googledomains.com",
"IP address": "2001:4860:4802:34::6e",
"RPKI Route Origin Authorization": "ok"
},
{"nameserver": "ns-cloud-e4.googledomains.com",
"IP address": "216.239.38.110",
"RPKI Route Origin Authorization": "ok"
},
{"nameserver": "ns-cloud-e4.googledomains.com",
"IP address": "2001:4860:4802:38::6e",
"RPKI Route Origin Authorization": "ok"
}
]},
{"title": "Route announcement validity",
"passed": True,
"status": "recommended",
"done": True,
"note": "",
"data": [
{"Nameserver": "ns-cloud-e1.googledomains.com",
"BGP Route Prefix": "216.239.32.0/24",
"ASN": 15169,
"RPKI Origin Validation state": "valid"
},
{"Nameserver": "ns-cloud-e1.googledomains.com",
"BGP Route Prefix": "2001:4860::/32",
"ASN": 15169,
"RPKI Origin Validation state": "valid"
},
{"Nameserver": "ns-cloud-e3.googledomains.com",
"BGP Route Prefix": "216.239.32.0/19",
"ASN": 15169,
"RPKI Origin Validation state": "valid"
},
{"Nameserver": "ns-cloud-e3.googledomains.com",
"BGP Route Prefix": "2001:4860::/32",
"ASN": 15169,
"RPKI Origin Validation state": "valid"
},
{"Nameserver": "ns-cloud-e2.googledomains.com",
"BGP Route Prefix": "216.239.34.0/24",
"ASN": 15169,
"RPKI Origin Validation state": "valid"
},
{"Nameserver": "ns-cloud-e2.googledomains.com",
"BGP Route Prefix": "2001:4860::/32",
"ASN": 15169,
"RPKI Origin Validation state": "valid"
},
{"Nameserver": "ns-cloud-e4.googledomains.com",
"BGP Route Prefix": "216.239.32.0/19",
"ASN": 15169,
"RPKI Origin Validation state": "valid"
},
{"Nameserver": "ns-cloud-e4.googledomains.com",
"BGP Route Prefix": "2001:4860::/32",
"ASN": 15169,
"RPKI Origin Validation state": "valid"
}
]}
]},
{"title": "RPKI web server",
"checks": [
{"title": "Route Origin Authorisation existence",
"passed": True,
"status": "recommended",
"done": True,
"note": "",
"data": [
{"URL": "shadowtrackr.com",
"IP address": "2a01:4f8:1c1a:e20::1",
"RPKI Route Origin Authorization": "ok"
}
]},
{"title": "Route announcement validity",
"passed": True,
"status": "recommended",
"done": True,
"note": "",
"data": [
{"Url": "shadowtrackr.com",
"BGP Route Prefix": "2a01:4f8::/32",
"ASN": 24940,
"RPKI Origin Validation state": "valid"
}
]}
]}
]}
]}
],
"error": ""
}