Sådan crawler jeg nettet for alle danske domæner

24 Sep 2025

Hos Domæneskanner.dk arbejder vi hver dag på at gøre vores domænedata mere præcise, historiske og brugbare. En vigtig del af det arbejde er at finde allerede registrerede .dk-domæner på nettet. Ved at samle og overvåge eksisterende domæner kan vi lave whois-opslag og gemme historikken. Når et domæne en dag bliver ledigt, kan vi koble det sammen med tidligere data og dermed give et mere fyldestgørende billede af domænets livscyklus.

Hvordan finder vi domænerne?

Vi har udviklet en crawler i Python, som automatisk besøger danske hjemmesider og registrerer domæner. Den fungerer sådan her:
  1. Vi henter et tilfældigt dansk domæne fra vores API.
  2. Crawleren besøger domænet og finder alle links på siden.
  3. Vi tjekker, om linkene peger på .dk-domæner.
  4. Nye domæner bliver gemt og sendt tilbage til Domæneskanner.dk.
Til at udføre selve crawling bruger vi Selenium med Firefox i headless mode. Det betyder, at browseren kører i baggrunden uden en synlig skærm – men stadig kan gengive JavaScript-baserede sider, som en almindelig browser ville gøre.

Udfordringer undervejs

Når man laver en crawler, støder man på en række problemer: Derfor har vi bygget sikkerhedsnet ind i koden:

Et kig i koden

Her er et lille uddrag af, hvordan vi henter links fra en side og sikrer, at kun .dk-domæner bliver taget med:
from selenium.common.exceptions import WebDriverException, TimeoutException
from urllib.parse import urlparse, urljoin
import tldextract

SKIP_EXTENSIONS = (".pdf", ".jpg", ".jpeg", ".png", ".gif", ".zip")

def is_dk_domain(url):
    ext = tldextract.extract(url)
    return ext.suffix == "dk"

def should_skip(url):
    parsed = urlparse(url)
    return parsed.path.lower().endswith(SKIP_EXTENSIONS)

def extract_links(driver, url):
    links = set()
    try:
        driver.get(url)
        a_tags = driver.find_elements("tag name", "a")
        for a_tag in a_tags:
            link = a_tag.get_attribute("href")
            if link and urlparse(link).scheme in ["http", "https"]:
                if is_dk_domain(link) and not should_skip(link):
                    links.add(urljoin(url, link))
    except (WebDriverException, TimeoutException):
        print(f"Skipped {url}: kunne ikke indlæses")
    return links
Her sker der tre ting:
  1. Vi åbner en side i Selenium.
  2. Finder alle -tags.
  3. Filtrerer væk alt, der ikke er et .dk-domæne eller som er en filtype, vi ikke vil crawle.
Hvis en side fejler (f.eks. DNS fejl), springer vi den bare over.

Hvorfor alt det her?

Når vi finder og overvåger danske domæner, får vi en historik på, hvordan de bruges. Hvis et domæne senere bliver ledigt, kan vi hurtigt give dig som bruger indsigt i: Det giver vores brugere et klart forspring, når drømmedomænet pludselig bliver tilgængeligt.

Konklusion

Ved at kombinere crawling, filtrering og historikopbygning har vi skabt et system, der gør Domæneskanner.dk endnu stærkere. Det handler ikke kun om at se, hvad der er ledigt lige nu – men om at have det fulde billede af domænernes rejse gennem tiden.

Relateret indhold

Privatlivspolitik

Privatlivspolitik

Udgivet 2024-05-08 — Opdateret 2024-05-09

Privatlivspolitikken for hjemmesiden ppsa.dk. Bliv klogere på hvordan vi bruger dine data og hvad dine rettigheder er.

Læs indlægget →
Hvordan vil din investering gro?

Hvordan vil din investering gro?

Udgivet 2024-05-02 — Opdateret 2024-05-09

Få et bedre indblik i hvordan og hvor meget din investering vil gro henover en lang årrække. Ved at investere din opsparing får du et langt større afkast.

Læs indlægget →
Ønsker du økonomisk uafhængighed?

Ønsker du økonomisk uafhængighed?

Udgivet 2024-05-02

Går du med tankerne om at blive økonomisk uafhængig? Få svarene her hvor du kan se lige præcis hvor meget det kræver for at få det rådighedsbeløb du ønsker.

Læs indlægget →