API 参考

域名安全评级 API API 参考

为域名的安全状况打出 A 到 F 的等级。 使用此参考选择操作,并集成其文档化的响应契约。

操作

GET /v1/security-rating 查看 API 参考

GET /v1/security-rating

操作: getSecurityRating 积分和身份验证: 5 需要身份验证
GET /v1/security-rating 积分: 5

查询参数

参数 类型 必需
domain string 必需

响应字段

字段 类型
domain string
status string
score integer | null
grade string | null
checks_unknown integer
score_confidence string
weight_covered integer
capped_by_critical_finding boolean
categories[] object[]
categories[] object
categories[].id string
categories[].status string
categories[].score integer | null
categories[].weight integer
categories[].unknown_reason string | null
categories[].findings[] object[]
categories[].findings[] object
categories[].findings[].code string
categories[].findings[].severity string
findings[] object[]
findings[] object
findings[].category string
findings[].code string
findings[].severity string
sources object
sources.tls object
sources.tls.grade string | null
sources.tls.score integer | null
sources.tls.checked_at string
sources.http_headers object
sources.http_headers.status string
sources.http_headers.grade string | null
sources.http_headers.score integer | null
sources.http_headers.final_url string | null
sources.http_headers.http_status integer | null
sources.dns_security object
sources.dns_security.score integer | null
sources.dns_security.grade string | null
sources.dns_security.checks_unknown integer
sources.dns_security.blocklists_checked integer
sources.dns_security.blocklists_unknown integer
sources.security_txt object
sources.security_txt.status string
sources.security_txt.location string | null
checked_at string
duration_ms integer
rating_version string
caveats[] string[]

请求示例

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/security-rating?domain=example.com"
const response = await fetch("https://domscan.net/v1/security-rating?domain=example.com", {
  headers: { "X-API-Key": process.env.DOMSCAN_API_KEY },
});
const data = await response.json();
console.log(data);
import os
import requests

response = requests.get(
    "https://domscan.net/v1/security-rating?domain=example.com",
    headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
)
print(response.json())
package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	req, err := http.NewRequest(http.MethodGet, "https://domscan.net/v1/security-rating?domain=example.com", nil)
	if err != nil {
		panic(err)
	}
	req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	data, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Println(resp.Status, string(data))
}
require "json"
require "net/http"

uri = URI("https://domscan.net/v1/security-rating?domain=example.com")
request = Net::HTTP::Get.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end
puts JSON.pretty_generate(JSON.parse(response.body))

响应示例

{
  "domain": "github.com",
  "status": "partial",
  "score": 81,
  "grade": "B",
  "checks_unknown": 1,
  "score_confidence": "medium",
  "weight_covered": 85,
  "capped_by_critical_finding": false,
  "categories": [
    {
      "id": "tls",
      "status": "scored",
      "score": 85,
      "weight": 30,
      "unknown_reason": null,
      "findings": []
    },
    {
      "id": "http_headers",
      "status": "scored",
      "score": 85,
      "weight": 20,
      "unknown_reason": null,
      "findings": [
        {
          "code": "header_permissions_policy_missing",
          "severity": "info"
        },
        {
          "code": "header_cross_origin_opener_policy_missing",
          "severity": "info"
        },
        {
          "code": "header_cross_origin_resource_policy_missing",
          "severity": "info"
        }
      ]
    },
    {
      "id": "email_authentication",
      "status": "scored",
      "score": 85,
      "weight": 20,
      "unknown_reason": null,
      "findings": []
    },
    {
      "id": "dns",
      "status": "scored",
      "score": 40,
      "weight": 10,
      "unknown_reason": null,
      "findings": [
        {
          "code": "dnssec_not_enabled",
          "severity": "low"
        }
      ]
    },
    {
      "id": "reputation",
      "status": "unknown",
      "score": null,
      "weight": 15,
      "unknown_reason": "no_evidence",
      "findings": []
    },
    {
      "id": "disclosure",
      "status": "scored",
      "score": 100,
      "weight": 5,
      "unknown_reason": null,
      "findings": []
    }
  ],
  "findings": [
    {
      "category": "dns",
      "code": "dnssec_not_enabled",
      "severity": "low"
    },
    {
      "category": "http_headers",
      "code": "header_permissions_policy_missing",
      "severity": "info"
    },
    {
      "category": "http_headers",
      "code": "header_cross_origin_opener_policy_missing",
      "severity": "info"
    },
    {
      "category": "http_headers",
      "code": "header_cross_origin_resource_policy_missing",
      "severity": "info"
    }
  ],
  "sources": {
    "tls": {
      "grade": "A",
      "score": 85,
      "checked_at": "2026-10-18T04:14:57.278Z"
    },
    "http_headers": {
      "status": "ok",
      "grade": "B",
      "score": 85,
      "final_url": "https://github.com/",
      "http_status": 200
    },
    "dns_security": {
      "score": 70,
      "grade": "B",
      "checks_unknown": 0,
      "blocklists_checked": 3,
      "blocklists_unknown": 1
    },
    "security_txt": {
      "status": "valid",
      "location": "well_known"
    }
  },
  "checked_at": "2026-10-18T04:14:58.507Z",
  "duration_ms": 2114,
  "rating_version": "2026-10-18.1",
  "caveats": [
    "passive_checks_only",
    "not_a_penetration_test",
    "tls_protocols_inferred",
    "unknown_categories_excluded_from_score"
  ]
}

HTTP 状态码

  • 200 成功
  • 400 请求错误
  • 401 未授权
  • 402 需要付款
  • 429 请求过多

参考资源