API 参考

安全联系文件验证 API API 参考

验证 security.txt 的联系方式、有效期和 RFC 9116 字段。 使用此参考选择操作,并集成其文档化的响应契约。

操作

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

GET /v1/security-txt

操作: getSecurityTxt 积分和身份验证: 1 需要身份验证
GET /v1/security-txt 积分: 1

查询参数

参数 类型 必需
domain string 可选
url string 可选

响应字段

字段 类型
classification object
classification.status string
classification.reason string
classification.evidence object
classification.evidence.source string
classification.evidence.method string
classification.evidence.observed_at string
classification.evidence.detail string
classification.checked_at string
domain string
status string
location string | null
checked_at string
fetch[] object[]
fetch[] object
fetch[].location string
fetch[].checked_url string
fetch[].http_status integer | null
fetch[].final_url string | null
fetch[].via_proxy boolean | null
fetch[].content_type string | null
fetch[].bytes integer | null
fetch[].truncated boolean
fetch[].outcome string
fetch[].error string | null
fields object
fields.contact[] string[]
fields.expires string | null
fields.expires_in_days integer | null
fields.encryption[] string[]
fields.acknowledgments[] string[]
fields.preferred_languages[] string[]
fields.canonical[] string[]
fields.policy[] string[]
fields.hiring[] string[]
fields.csaf[] string[]
fields.other_fields[] object[]
fields.other_fields[] object
fields.other_fields[].name string
fields.other_fields[].value string
signed boolean
issues[] object[]
issues[] object
issues[].code string
issues[].severity string
issues[].field string | null
caveats[] string[]

请求示例

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/security-txt?domain=example.com&url=https%3A%2F%2Fexample.com"
const response = await fetch("https://domscan.net/v1/security-txt?domain=example.com&url=https%3A%2F%2Fexample.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-txt?domain=example.com&url=https%3A%2F%2Fexample.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-txt?domain=example.com&url=https%3A%2F%2Fexample.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-txt?domain=example.com&url=https%3A%2F%2Fexample.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": "example.com",
  "status": "valid",
  "location": "well_known",
  "checked_at": "2026-10-09T10:00:00.000Z",
  "fetch": [
    {
      "location": "well_known",
      "checked_url": "https://example.com/.well-known/security.txt",
      "http_status": 200,
      "final_url": "https://example.com/.well-known/security.txt",
      "via_proxy": true,
      "content_type": "text/plain; charset=utf-8",
      "bytes": 279,
      "truncated": false,
      "outcome": "found",
      "error": null
    }
  ],
  "fields": {
    "contact": [
      "mailto:[email protected]",
      "https://example.com/report"
    ],
    "expires": "2027-01-01T00:00:00.000Z",
    "expires_in_days": 83,
    "encryption": [
      "https://example.com/pgp-key.txt"
    ],
    "acknowledgments": [],
    "preferred_languages": [
      "en",
      "es"
    ],
    "canonical": [
      "https://example.com/.well-known/security.txt"
    ],
    "policy": [
      "https://example.com/security-policy"
    ],
    "hiring": [],
    "csaf": [],
    "other_fields": []
  },
  "signed": false,
  "issues": [],
  "caveats": []
}

HTTP 状态码

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

参考资源