Files
warda-lists/taxonomy.toml
hcornet ffe6ae1a2c
CI / test (push) Successful in 13s
CI / security (push) Successful in 5s
CI / Promote to main (push) Skipped
CI / Build and publish the lists (push) Successful in 3m20s
0.7.11: names covered, analyst files
2026-10-04 18:50:04 +02:00

631 lines
17 KiB
TOML

# warda-lists — the two taxonomies.
#
# 1. Blocking categories ([[category]]): what a Warda user switches on or
# off. Each one gives a file dist/<id>.txt. Sources and extra/ files put
# domains in them.
# 2. Site types ([[type]]): what kind of site a domain is (a shop, a blog,
# a forum…). For classification and statistics only: a site type is
# never blocked by itself. Each one gives a file dist/types/<id>.txt.
#
# Fields of a category:
# id the name used in sources.toml, extra/<id>.txt and dist/
# label_fr/en the name shown to people
# reason why it is blocked: an id of [[reason]] below
# description_fr what it holds, in the owner's words
# warda the Warda category id this list feeds ("base" is the
# list every Warda box blocks by default)
# includes other categories whose domains are also put in this one
# public_sources false when no public list exists (the build never fills
# it from public sources)
# max_domains the most domains its file may hold (default below)
#
# Only ids made of a-z, 0-9 and "-" are allowed. Changing an id changes the
# address of its file: the Warda boxes that download it must follow.
#
# This file also holds the licences a source may carry (licences, below),
# the budget of the files written by warda-analyst ([analyst]) and the
# groups that file the sources ([[source_group]], at the end).
# Budget of a category or bundle file: the lists live in the memory of the
# Warda boxes, a Raspberry Pi among them. A file over its budget fails the
# build (--force does not skip it): disable or replace a big source, or
# raise max_domains of that category knowingly. Site types have no budget
# (never loaded to block).
default_max_domains = 1500000
# The licences accepted for a source (SPDX ids): the only place where they
# are written. scripts/build.py reads them here and publishes them in
# manifest.json (taxonomy.licences), where warda-analyst reads them. Each
# one has its text in licenses/<id>.txt, copied to dist/licenses/. Anything
# else is refused: unknown or proprietary licences, and those that forbid
# what the build does (NC: Warda has a paid offer; ND: the lists are
# modified), which the build refuses here too. A new licence must also be
# known to combine_licences of scripts/build.py when it cannot be mixed
# with the GPL.
licences = [
"GPL-3.0-only",
"GPL-3.0-or-later",
"GPL-2.0-only",
"GPL-2.0-or-later",
"CC-BY-SA-4.0",
"CC-BY-SA-3.0",
"CC-BY-4.0",
"CC-BY-3.0",
"CC0-1.0",
"Unlicense",
"MIT",
"ISC",
"0BSD",
"BSD-2-Clause",
"BSD-3-Clause",
"Apache-2.0",
]
# --- Why a category is blocked -------------------------------------------
[[reason]]
id = "privacy"
label_fr = "Publicité et pistage"
label_en = "Advertising and tracking"
[[reason]]
id = "cybersecurity"
label_fr = "Cybersécurité"
label_en = "Cybersecurity"
description_fr = "Malwares, phishing, command & control, cryptojacking, proxies/VPN."
[[reason]]
id = "law"
label_fr = "Juridique"
label_en = "Law"
description_fr = "Apologie du terrorisme, pédopornographie, piratage, contrefaçon et arnaques, jeux d'argent illégaux."
[[reason]]
id = "productivity"
label_fr = "Productivité au travail"
label_en = "Workplace productivity"
description_fr = "Réseaux sociaux, streaming/vidéo, jeux en ligne, sites d'emploi concurrents."
[[reason]]
id = "ethics"
label_fr = "Éthique"
label_en = "Ethics"
description_fr = "Pornographie/contenu adulte, armes/violence, drogues/alcool, haine/discrimination."
[[reason]]
id = "age"
label_fr = "Ancienneté du domaine"
label_en = "Domain age"
# --- Blocking categories ---------------------------------------------------
[[category]]
id = "ads"
label_fr = "Publicité"
label_en = "Advertising"
reason = "privacy"
description_fr = "Régies et serveurs publicitaires."
warda = "base"
[[category]]
id = "tracking"
label_fr = "Pistage"
label_en = "Tracking"
reason = "privacy"
description_fr = "Traceurs, mesure d'audience, télémétrie."
warda = "base"
[[category]]
id = "phishing"
label_fr = "Hameçonnage"
label_en = "Phishing"
reason = "cybersecurity"
description_fr = "Sites d'hameçonnage (phishing) qui volent identifiants et données bancaires."
# Warda has no phishing category: this list is merged into security.
warda = "security"
[[category]]
id = "security"
label_fr = "Sécurité"
label_en = "Security"
reason = "cybersecurity"
description_fr = "Malwares, phishing, command & control, cryptojacking, contrefaçon et arnaques."
warda = "security"
includes = ["phishing"]
[[category]]
id = "stalkerware"
label_fr = "Logiciels espions"
label_en = "Stalkerware"
reason = "cybersecurity"
description_fr = "Serveurs des logiciels espions du commerce (stalkerware) installés en cachette sur un téléphone ou un ordinateur."
# Not a category of the profiles: Warda blocks it for every device and
# tells the person of the device (package threats).
warda = "stalkerware"
max_domains = 50000
[[category]]
id = "bypass"
label_fr = "Contournement du filtre"
label_en = "Filter bypass"
reason = "cybersecurity"
description_fr = "Proxies, VPN, Tor et DNS chiffrés publics utilisés pour contourner le filtre."
warda = "bypass"
[[category]]
id = "csam"
label_fr = "Pédopornographie"
label_en = "Child sexual abuse material"
reason = "law"
description_fr = "Pédopornographie. Aucune liste publique : ces listes ne sont remises qu'aux organismes et FAI habilités."
warda = "csam"
public_sources = false
[[category]]
id = "hate"
label_fr = "Haine et apologie du terrorisme"
label_en = "Hate and terrorism apology"
reason = "law"
description_fr = "Apologie du terrorisme, haine et discrimination."
warda = "hate"
[[category]]
id = "piracy"
label_fr = "Piratage"
label_en = "Piracy"
reason = "law"
description_fr = "Piratage : streaming, téléchargement direct et torrents d'œuvres protégées."
warda = "piracy"
[[category]]
id = "gambling"
label_fr = "Jeux d'argent"
label_en = "Gambling"
reason = "law"
description_fr = "Jeux d'argent illégaux (non validés par l'ANJ)."
warda = "gambling"
[[category]]
id = "social"
label_fr = "Réseaux sociaux"
label_en = "Social networks"
reason = "productivity"
description_fr = "Réseaux sociaux."
warda = "social"
[[category]]
id = "video"
label_fr = "Streaming et vidéo"
label_en = "Streaming and video"
reason = "productivity"
description_fr = "Plateformes de streaming et de vidéo."
warda = "video"
[[category]]
id = "games"
label_fr = "Jeux vidéo en ligne"
label_en = "Online games"
reason = "productivity"
description_fr = "Jeux vidéo en ligne."
warda = "games"
[[category]]
id = "jobsearch"
label_fr = "Sites de recrutement"
label_en = "Job search sites"
reason = "productivity"
description_fr = "Sites de recrutement et d'offres d'emploi (sites d'emploi concurrents : politique d'entreprise)."
warda = "jobsearch"
[[category]]
id = "adult"
label_fr = "Pornographie et contenu adulte"
label_en = "Pornography and adult content"
reason = "ethics"
description_fr = "Pornographie et contenu adulte."
warda = "adult"
[[category]]
id = "violence"
label_fr = "Armes et violence"
label_en = "Weapons and violence"
reason = "ethics"
description_fr = "Armes et violence."
warda = "violence"
[[category]]
id = "drugs"
label_fr = "Drogues et alcool"
label_en = "Drugs and alcohol"
reason = "ethics"
description_fr = "Drogues et alcool."
warda = "drugs"
[[category]]
id = "newdomains"
label_fr = "Domaines récents"
label_en = "Newly registered domains"
reason = "age"
description_fr = "Domaines enregistrés ces derniers jours, souvent utilisés pour le phishing (faux positifs possibles, désactivé par défaut dans Warda)."
warda = "newdomains"
# Newly registered domains: about 3 million a week.
max_domains = 3500000
# --- Combined lists --------------------------------------------------------
# A bundle has no source of its own: it is the union of categories. Sources
# cannot name it.
[[bundle]]
id = "base"
label_fr = "Liste de base (publicité et pistage)"
label_en = "Base list (advertising and tracking)"
description_fr = "Publicité et pistage : la liste que chaque boîtier Warda bloque par défaut."
warda = "base"
includes = ["ads", "tracking"]
# --- Files written by warda-analyst -----------------------------------------
# analyst/add/<category>.txt and analyst/remove.txt are written by the
# service warda-analyst after a decision of the team, never by hand. Their
# budgets, in names: over one of them, --check fails on develop and the
# commit is not promoted to main.
# max_add the names of all the analyst/add/ files together
# max_remove the names of analyst/remove.txt
# And a limit applied by the build, which alone knows what the sources hold:
# max_effect the most names of the lists one line of analyst/remove.txt
# may take out, itself and its subdomains. A line over it is
# not applied (the build says it, manifest.json lists it): it
# is a suffix that many sites share (co.uk, github.io), not a
# name wrongly blocked.
# And where the removals apply:
# remove_from the categories analyst/remove.txt takes its names out of
# (with their subdomains): the protection lists only. The
# team clears a name because it is harmless (no malware, no
# tracker); that says nothing of what the site is about, so
# the name stays in the content categories (adult, gambling…)
# and in the site types. The bundles built from these
# categories (base) follow, and so does what "includes"
# brings into them (security includes phishing). allow.txt
# keeps its own meaning: every list.
[analyst]
max_add = 50000
max_remove = 20000
max_effect = 100
remove_from = ["ads", "tracking", "phishing", "security"]
# --- Site types (classification only, never blocked by themselves) --------
[[group]]
id = "business"
label_fr = "Commerciaux et Business"
label_en = "Commercial and business"
[[group]]
id = "content"
label_fr = "Contenu et Information"
label_en = "Content and information"
[[group]]
id = "community"
label_fr = "Communautaires et Collaboratifs"
label_en = "Community and collaborative"
[[group]]
id = "services"
label_fr = "Annuaires et Plateformes de Services"
label_en = "Directories and service platforms"
[[group]]
id = "personal"
label_fr = "Personnels et Divertissement"
label_en = "Personal and entertainment"
[[type]]
id = "e-commerce"
number = 1
group = "business"
label_fr = "E-commerce"
label_en = "Online shop"
description_fr = "Boutique en ligne : vente de produits ou de services."
[[type]]
id = "corporate"
number = 2
group = "business"
label_fr = "Site vitrine d'entreprise"
label_en = "Corporate showcase site"
description_fr = "Présentation d'une entreprise, de ses activités et de ses coordonnées."
[[type]]
id = "landing-page"
number = 3
group = "business"
label_fr = "Landing page"
label_en = "Landing page"
description_fr = "Page d'atterrissage d'une campagne ou d'une offre."
[[type]]
id = "startup"
number = 4
group = "business"
label_fr = "Start-up"
label_en = "Start-up"
description_fr = "Site d'une jeune entreprise et de son produit."
[[type]]
id = "professional-services"
number = 5
group = "business"
label_fr = "Conseil / professionnel"
label_en = "Consulting / professional services"
description_fr = "Cabinet de conseil, profession libérale, services aux entreprises."
[[type]]
id = "affiliate"
number = 6
group = "business"
label_fr = "Affiliation"
label_en = "Affiliate site"
description_fr = "Site qui recommande des produits contre commission."
[[type]]
id = "blog"
number = 7
group = "content"
label_fr = "Blog"
label_en = "Blog"
description_fr = "Blog personnel ou professionnel, plateforme de blogs."
[[type]]
id = "news-media"
number = 8
group = "content"
label_fr = "Actualités et médias"
label_en = "News and media"
description_fr = "Presse, actualités, magazines."
[[type]]
id = "government"
number = 9
group = "content"
label_fr = "Institutionnel / gouvernemental"
label_en = "Institutional / government"
description_fr = "Administration, collectivité, institution publique."
[[type]]
id = "non-profit"
number = 10
group = "content"
label_fr = "Associatif / non-lucratif"
label_en = "Non-profit"
description_fr = "Association, fondation, organisation à but non lucratif."
[[type]]
id = "knowledge-base"
number = 11
group = "content"
label_fr = "Base de connaissances (wiki)"
label_en = "Knowledge base (wiki)"
description_fr = "Wiki, documentation, encyclopédie."
[[type]]
id = "education"
number = 12
group = "content"
label_fr = "Éducatif / scolaire"
label_en = "Educational / school"
description_fr = "École, université, ressources pédagogiques."
[[type]]
id = "social-network"
number = 13
group = "community"
label_fr = "Réseau social"
label_en = "Social network"
description_fr = "Réseau social, messagerie communautaire."
[[type]]
id = "forum"
number = 14
group = "community"
label_fr = "Forum"
label_en = "Forum"
description_fr = "Forum de discussion."
[[type]]
id = "petition"
number = 15
group = "community"
label_fr = "Pétitions"
label_en = "Petitions"
description_fr = "Plateforme de pétitions en ligne."
[[type]]
id = "crowdfunding"
number = 16
group = "community"
label_fr = "Financement participatif"
label_en = "Crowdfunding"
description_fr = "Plateforme de financement participatif."
[[type]]
id = "directory"
number = 17
group = "services"
label_fr = "Annuaire"
label_en = "Directory"
description_fr = "Annuaire de sites, d'entreprises ou de personnes."
[[type]]
id = "job-board"
number = 18
group = "services"
label_fr = "Offres d'emploi"
label_en = "Job board"
description_fr = "Offres d'emploi et recrutement."
[[type]]
id = "real-estate"
number = 19
group = "services"
label_fr = "Immobilier"
label_en = "Real estate"
description_fr = "Annonces et agences immobilières."
[[type]]
id = "reviews"
number = 20
group = "services"
label_fr = "Avis et critiques"
label_en = "Reviews"
description_fr = "Avis de consommateurs, critiques."
[[type]]
id = "events"
number = 21
group = "services"
label_fr = "Événements"
label_en = "Events"
description_fr = "Billetterie, agenda, organisation d'événements."
[[type]]
id = "personal"
number = 22
group = "personal"
label_fr = "Site personnel"
label_en = "Personal site"
description_fr = "Site d'une personne."
[[type]]
id = "portfolio"
number = 23
group = "personal"
label_fr = "Portfolio"
label_en = "Portfolio"
description_fr = "Présentation des travaux d'un créatif ou d'un professionnel."
[[type]]
id = "entertainment"
number = 24
group = "personal"
label_fr = "Divertissement"
label_en = "Entertainment"
description_fr = "Divertissement, humour, célébrités."
[[type]]
id = "streaming"
number = 25
group = "personal"
label_fr = "Streaming"
label_en = "Streaming"
description_fr = "Vidéo, musique ou radio en streaming."
[[type]]
id = "video-games"
number = 26
group = "personal"
label_fr = "Jeux vidéo"
label_en = "Video games"
description_fr = "Jeux vidéo, jeux en ligne."
[[type]]
id = "wedding"
number = 27
group = "personal"
label_fr = "Mariage"
label_en = "Wedding"
description_fr = "Site de mariage, liste de mariage."
[[type]]
id = "travel"
number = 28
group = "personal"
label_fr = "Voyage"
label_en = "Travel"
description_fr = "Voyage, tourisme, réservation."
[[type]]
id = "memorial"
number = 29
group = "personal"
label_fr = "Commémoration"
label_en = "Memorial"
description_fr = "Site commémoratif, hommage."
[[type]]
id = "kids"
number = 30
group = "personal"
label_fr = "Jeunesse / enfants"
label_en = "Youth / children"
description_fr = "Sites pour la jeunesse et les enfants."
# --- Groups of sources (filing only) --------------------------------------
# Every [[source]] of sources.toml names one of these groups, exactly as
# written (field group). A group only files and names the lists: it never
# decides where their domains go (categories or [source.map] do).
[[source_group]]
name = "Hosts list"
description = "General hosts files that mix several kinds of domains (ads, trackers, malware)."
[[source_group]]
name = "Abuse List"
description = "Sites known for abusive or deceptive practices."
[[source_group]]
name = "Drugs List"
description = "Drugs and alcohol."
[[source_group]]
name = "Fraud List"
description = "Fraud: fake shops, financial and payment fraud."
[[source_group]]
name = "Malware List"
description = "Malware distribution and command & control servers."
[[source_group]]
name = "Phishing List"
description = "Phishing: pages that steal credentials or bank data."
[[source_group]]
name = "Ransomware List"
description = "Ransomware: distribution, payment and command servers."
[[source_group]]
name = "Scam List"
description = "Scams: fake support, fake giveaways, deceptive offers."
[[source_group]]
name = "Tracking & Telemetry List"
description = "Trackers, analytics and telemetry of devices and applications."
[[source_group]]
name = "Redirect List"
description = "URL shorteners and redirectors that hide the real destination."
[[source_group]]
name = "Gambling List"
description = "Gambling and betting sites."
[[source_group]]
name = "Porn List"
description = "Pornography and adult content."
[[source_group]]
name = "Suspicious Lists"
description = "Not proven bad but risky: newly registered domains, parked or disposable domains."
[[source_group]]
name = "Advertising Lists"
description = "Advertising, and ad-and-tracker lists where ads dominate."
[[source_group]]
name = "Malicious Lists"
description = "Threat feeds that mix several threats (malware, phishing, C&C, cryptojacking)."
[[source_group]]
name = "Other Lists"
description = "Everything else: bypass, piracy, social networks, categorized archives such as UT1."