blocked i no_follow: bany i pomijanie linków

2026-06-22 · updated 2026-09-05

Dwie reguły chronią crawler przed pułapkami. Obie operują na hostname i są zapisywane samo queue.status_reason = blocked lub no_follow:

Dwa mechanizmy obok siebie

blocked — blokada crawla (BlacklistMiddleware)

flowchart TD
    A[Żądanie URL] --> B[BlacklistMiddleware]
    B --> C{hostname blocked?}
    C -- Tak --> D[IgnoreRequest: odrzuć]
    C -- Nie --> E{Poddomena hostname?}
    E -- Nie --> P[Normalne parsowanie]
    E -- Tak --> F{Wynik requestu}
    F -- "OK" --> G[Zapisz OK w oknie 50]
    F -- "DNS/TLS/TCP error" --> H[Zapisz błąd w oknie 50]
    G --> I{50 ostatnich = 100% błędów?}
    H --> I
    I -- Nie --> P
    I -- Tak --> J[upsert_blocked + blocked_reason]
    J --> D

no_follow — prewencja zapisu linków (save_hosts)

flowchart TD
    A[Strona HTML] --> B[Ekstrakcja linków]
    B --> C{Normalizacja linku}
    C -- "Brak hostname" --> D[Odrzuć link]
    C -- "hostname OK" --> E{hostname w no_follow?}
    E -- Tak --> D
    E -- Nie --> F{hostname blocked?}
    F -- Tak --> D
    F -- Nie --> G[Zapisz do hosts]

Kiedy domena trafia do blocked

BlacklistMiddleware i audyt DNS/TLS blokują automatycznie, bez operatora:

Kiedy domena trafia do no_follow

Współpraca z hosts

  1. Wybór do crawla (Database.start_urls) claimuje tylko rekordy z datą queue.next_claim_at <= now; status_reason i brak daty blokują routing.
  2. Filtr odkrytych linków (save_hosts) odrzuca linki, których root jest w unii no_follow i blocked — blokada działa natychmiast w tej samej sesji.

blocked vs no_follow

Cechablockedno_follow
Poziom działaniacrawl/request + kolejka (hosts)zapis linków (save_hosts)
Celochrona pasma, wątków, CPUochrona rozmiaru bazy
DziałanieIgnoreRequest przed pobraniempominięcie linku przy zapisie
Zarządzanieautomatyczne (BlacklistMiddleware, audyt)ręczne / reguły operatora
Trwałośćtrwała do ręcznej zmiany flagitrwała do ręcznej zmiany flagi

Reguły dla programisty

  1. no_follow = prewencja globalna — wielkie platformy o nieskończonej strukturze linków.
  2. blocked = automat trapów — ustawiaj przez upsert_blocked, zapisując blocked_reason.
  3. Nie łącz z no_follow — trap nie tworzy wpisu no_follow; no_follow służy linkom, których nie zapisujemy i nie zbieramy.

Powiązane: Typy problemów DNS/TLS, Audyt DNS.