Dokumentacja dla deweloperów

Wyszukiwarka poddomen

DomScan API do analizy domen: Nie. Jest to pasywne pokrycie bez gwarancji kompletności. Nazwy wewnętrzne i publiczne hosty nieobecne w zbiorach źródłowych nie pojawią się, a weryfikacja DNS nie szuka dodatkowych nazw.

Wyszukiwarka poddomen

Nie. Jest to pasywne pokrycie bez gwarancji kompletności. Nazwy wewnętrzne i publiczne hosty nieobecne w zbiorach źródłowych nie pojawią się, a weryfikacja DNS nie szuka dodatkowych nazw.

Użyj GET /v1/subdomains?domain=example.com&sources=ct. Wartość ct wybiera potok zgodności, a każdy wpis podaje rzeczywiste źródło dowodu. Chybienia w trybie tylko pamięci podręcznej zwracają 202, a awarie wszystkich źródeł 503. W obu przypadkach kredyty są zwracane.

GET /v1/subdomains

Parametry zapytania

ParametrTypOpis
domain wymagane string Domena główna do wyszukania subdomen, np. "github.com"
prefer_cache opcjonalne boolean token Zwracaj tylko wyniki z pamięci podręcznej. Jeśli nie ma świeżej ani starej pamięci podręcznej, API zwraca 202, kolejkuje odświeżenie w tle i zwraca kredyty za żądanie. Akceptowane wartości: true, false, 1, 0, yes i no. Domyślnie: false.
sources opcjonalne string Selektor zgodności. Akceptowana jest wyłącznie wartość ct. Uruchamia ona pasywny potok odkrywania, ale każdy wynik wskazuje dostawcę dowodu: crtsh, crtname, hackertarget, threatminer, wayback lub certspotter. Starsze wpisy pamięci podręcznej mogą wskazywać ct.
verify opcjonalne boolean token Sprawdza DNS tylko dla nazw już wybranych do odpowiedzi. Weryfikacja nie odkrywa dodatkowych nazw. Akceptowane wartości: true, false, 1, 0, yes i no. Domyślnie: false.
include_wildcards opcjonalne boolean token Zwraca dowody z certyfikatów wieloznacznych w osobnej tablicy wildcards. Wpisy wieloznaczne nie są mieszane z wynikami konkretnych nazw hostów. Akceptowane wartości: true, false, 1, 0, yes i no. Domyślnie: false.
limit opcjonalne integer Maksymalna liczba zwracanych wpisów konkretnych nazw hostów. Podaj liczbę całkowitą od 1 do 2000. Domyślnie: 500.

Przypadki użycia

  • Mapowanie powierzchni ataku i audyty bezpieczeństwa
  • Przegląd możliwych zapomnianych nazw hostów lub zasobów shadow IT
  • Techniczne due diligence przed przejęciem
  • Analiza konkurencyjna infrastruktury
  • Rozpoznanie w programach bug bounty

Odpowiedź Fields

PoleOpis
subdomains[].nameZwrócona nazwa hosta. Apex może się pojawić, jeśli źródło go uwzględnia.
subdomains[].sourcePrzeglądaj publiczne dowody nazw hostów z jasnymi etykietami źródeł
subdomains[].first_seenWpisy oparte na CT podają najwcześniejszą znalezioną wartość certificate not-before. Wpisy z pasywnych źródeł rezerwowych mogą zwracać null.
subdomains[].verifiedWartość true tylko wtedy, gdy verify jest włączone i rozpoznawanie DNS zwróconej nazwy hosta powiedzie się. W przeciwnym razie false.
subdomains[].dns_recordsRekordy A i CNAME z opcjonalnej weryfikacji zwróconej nazwy hosta albo null. To pole nie dodaje nazw do wyniku.
summary.total_foundŁączna liczba znalezionych wpisów konkretnych nazw hostów przed limitem odpowiedzi, z uwzględnieniem apex, jeśli źródło go zawiera.
summary.verified_countLiczba zwróconych nazw hostów, które rozwiązały się podczas opcjonalnej weryfikacji DNS.

Kody statusu HTTP

Kody statusu HTTPOpis
200 OKŻądanie zakończone pomyślnie
202 PrzyjętoChybienie cache-only dla subdomen przyjęto do odświeżenia w tle. Nie pobieramy kredytów; ponów próbę po czasie Retry-After.
400 Nieprawidłowe żądanieNieprawidłowe parametry
402 Wymagana płatnośćZa mało kredytów, aby wykonać to żądanie.
503 Usługa niedostępnaUsługa nadrzędna jest niedostępna lub tymczasowo ogranicza żądania.
504 Przekroczono limit czasu bramyZapytanie do usługi nadrzędnej przekroczyło limit czasu.

Przykład Request

curl -H "X-API-Key: your-api-key" "https://domscan.net/v1/subdomains?domain=example.com&sources=ct&include_wildcards=yes&limit=100"

curl -H "X-API-Key: your-api-key" "https://domscan.net/v1/subdomains?domain=example.com&sources=ct&verify=yes&limit=50"

curl -H "X-API-Key: your-api-key" "https://domscan.net/v1/subdomains?domain=example.com&prefer_cache=1"
import requests

domscan = requests.Session()
domscan.headers.update({"X-API-Key": "your-api-key"})

response = domscan.get(
    "https://domscan.net/v1/subdomains",
    params={
        "domain": "example.com",
        "sources": "ct",
        "verify": "yes",
        "include_wildcards": "yes",
        "limit": 100
    }
)
data = response.json()

print(f"Returned {data['summary']['returned']} hostname entries")
print(f"Verified: {data['summary']['verified_count']}")

live_subs = [s for s in data['subdomains'] if s['verified']]
for sub in live_subs[:10]:
    print(f"  {sub['name']}")
const domscanFetch = (url, options = {}) =>
  fetch(url, {
    ...options,
    headers: { ...options.headers, "X-API-Key": "your-api-key" },
  });

const response = await domscanFetch(
  'https://domscan.net/v1/subdomains?' + new URLSearchParams({
    domain: 'example.com',
    sources: 'ct',
    verify: 'yes',
    include_wildcards: 'yes',
    limit: '100'
  })
);
const data = await response.json();

console.log(`Returned ${data.summary.returned} hostname entries`);
console.log(`Verified: ${data.summary.verified_count}`);

data.subdomains
  .filter(s => s.verified)
  .forEach(s => console.log(`  ${s.name}`));

Example Odpowiedź

{
  "domain": "example.com",
  "subdomains": [
    {
      "name": "api.example.com",
      "source": "crtsh",
      "first_seen": "2025-01-15T00:00:00Z",
      "verified": true,
      "dns_records": {
        "A": ["192.0.2.10"],
        "CNAME": null
      }
    }
  ],
  "wildcards": [
    {
      "pattern": "*.example.com",
      "source": "crtsh",
      "first_seen": "2024-11-20T00:00:00Z"
    }
  ],
  "summary": {
    "total_found": 1,
    "returned": 1,
    "verified_count": 1,
    "unverified_count": 0,
    "sources_used": ["crtsh"],
    "apex_included": false,
    "wildcard_suppressed_count": 1,
    "wildcard_returned_count": 1
  },
  "intelligence_summary": {
    "data_sources": ["crtsh"],
    "source_count": 1,
    "cache_status": "live",
    "returned_count": 1,
    "total_found": 1,
    "truncated": false,
    "limit": 100,
    "verification_requested": true,
    "include_wildcards": true,
    "verified_count": 1,
    "verified_ratio": 1,
    "live_dns_record_count": 1,
    "apex_included": false,
    "wildcard_suppressed_count": 1,
    "wildcard_returned_count": 1,
    "first_seen_oldest": "2025-01-15T00:00:00Z",
    "first_seen_newest": "2025-01-15T00:00:00Z",
    "warning_count": 0
  },
  "meta": {
    "query_time_ms": 184,
    "cached": false
  }
}

202 Przyjęto

{
  "status": "pending",
  "code": "CACHE_MISS_REFRESH_QUEUED",
  "message": "Try again in a moment",
  "domain": "example.com",
  "retry_after": 30,
  "credits_charged": 0,
  "billing_status": "not_charged",
  "request_id": "m8abc12-x9y8"
}
POST /v1/subdomains/bulk

Parametry treści

Parametr Typ wymagane
domains string[] wymagane
verify boolean
Domyślnie false
opcjonalne
include_wildcards boolean
Domyślnie false
opcjonalne
limit integer
Domyślnie 500
opcjonalne

Odpowiedź Fields

Pole Typ
results[] unknown[]
meta object
meta.total integer
meta.succeeded integer
meta.failed integer
meta.max_items integer
meta.credits_per_item integer
meta.duration_ms integer

Przykład Request

curl -X POST "https://domscan.net/v1/subdomains/bulk" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $DOMSCAN_API_KEY" \
  -d '{
  "domains": [
    "example.com",
    "cloudflare.com"
  ],
  "verify": false,
  "limit": 500
}'

Example Odpowiedź

{
  "results": [
    null
  ],
  "meta": {
    "total": 1,
    "succeeded": 1,
    "failed": 1,
    "max_items": 10,
    "credits_per_item": 1,
    "duration_ms": 1
  }
}

Używany przez ludzi w niesamowitych firmach

VercelLLM PulseOLXCasa ModernaPipeCal.comBeehiivSnykTogglRemoteSprigDeel