{
    "title": "Zo herkennen bots en detectietools WordPress, en welke sporen je weghaalt",
    "seo_title": "Hoe WordPress wordt herkend: signalen en sporen weghalen",
    "h1": "Zo herkennen bots en detectietools WordPress, en welke sporen je weghaalt",
    "description": "Generator-tag, wp-content-paden, headers, JavaScript, readme.txt: de signalen die WordPress verraden en hoe je ze beperkt.",
    "lead": "De precieze signalen die Wappalyzer en WPScan gebruiken om WordPress, de versies en de plugins te herkennen, en wat je kunt weghalen zonder iets te breken.",
    "language": "nl",
    "locale": "nl-NL",
    "type": "article",
    "url": "https://www.wp-masquerade.com/nl/wordpress-fingerprinting-herkennen/",
    "canonical": "https://www.wp-masquerade.com/nl/wordpress-fingerprinting-herkennen/",
    "markdown": "https://www.wp-masquerade.com/nl/wordpress-fingerprinting-herkennen/index.md",
    "json": "https://www.wp-masquerade.com/nl/wordpress-fingerprinting-herkennen/index.json",
    "published": "2026-09-05T07:00:00+00:00",
    "modified": "2026-11-05T20:54:39+00:00",
    "site": {
        "name": "WP Masquerade",
        "url": "https://www.wp-masquerade.com/nl/"
    },
    "translations": [
        {
            "language": "nl",
            "hreflang": "nl-NL",
            "title": "Zo herkennen bots en detectietools WordPress, en welke sporen je weghaalt",
            "url": "https://www.wp-masquerade.com/nl/wordpress-fingerprinting-herkennen/",
            "markdown": "https://www.wp-masquerade.com/nl/wordpress-fingerprinting-herkennen/index.md",
            "json": "https://www.wp-masquerade.com/nl/wordpress-fingerprinting-herkennen/index.json"
        },
        {
            "language": "fr",
            "hreflang": "fr-FR",
            "title": "Comment les robots et les outils de détection reconnaissent WordPress, et les indices à retirer",
            "url": "https://www.wp-masquerade.com/fr/fingerprinting-detection-wordpress/",
            "markdown": "https://www.wp-masquerade.com/fr/fingerprinting-detection-wordpress/index.md",
            "json": "https://www.wp-masquerade.com/fr/fingerprinting-detection-wordpress/index.json"
        },
        {
            "language": "en",
            "hreflang": "en-US",
            "title": "How bots and detection tools recognize WordPress, and which clues to remove",
            "url": "https://www.wp-masquerade.com/wordpress-fingerprinting-detection/",
            "markdown": "https://www.wp-masquerade.com/wordpress-fingerprinting-detection/index.md",
            "json": "https://www.wp-masquerade.com/wordpress-fingerprinting-detection/index.json"
        },
        {
            "language": "es",
            "hreflang": "es-ES",
            "title": "Cómo detectan WordPress los bots y las herramientas de detección, y qué indicios quitar",
            "url": "https://www.wp-masquerade.com/es/como-se-detecta-wordpress-fingerprinting/",
            "markdown": "https://www.wp-masquerade.com/es/como-se-detecta-wordpress-fingerprinting/index.md",
            "json": "https://www.wp-masquerade.com/es/como-se-detecta-wordpress-fingerprinting/index.json"
        },
        {
            "language": "de",
            "hreflang": "de-DE",
            "title": "So erkennen Bots und Erkennungstools WordPress, und welche Spuren du entfernst",
            "url": "https://www.wp-masquerade.com/de/wordpress-erkennung-fingerprinting/",
            "markdown": "https://www.wp-masquerade.com/de/wordpress-erkennung-fingerprinting/index.md",
            "json": "https://www.wp-masquerade.com/de/wordpress-erkennung-fingerprinting/index.json"
        },
        {
            "language": "it",
            "hreflang": "it-IT",
            "title": "Come i bot e gli strumenti di rilevamento riconoscono WordPress, e quali indizi rimuovere",
            "url": "https://www.wp-masquerade.com/it/come-viene-rilevato-wordpress-fingerprinting/",
            "markdown": "https://www.wp-masquerade.com/it/come-viene-rilevato-wordpress-fingerprinting/index.md",
            "json": "https://www.wp-masquerade.com/it/come-viene-rilevato-wordpress-fingerprinting/index.json"
        },
        {
            "language": "pt",
            "hreflang": "pt-BR",
            "title": "Como os robôs e as ferramentas de detecção reconhecem o WordPress, e quais indícios remover",
            "url": "https://www.wp-masquerade.com/pt/como-o-wordpress-e-detectado-fingerprinting/",
            "markdown": "https://www.wp-masquerade.com/pt/como-o-wordpress-e-detectado-fingerprinting/index.md",
            "json": "https://www.wp-masquerade.com/pt/como-o-wordpress-e-detectado-fingerprinting/index.json"
        }
    ],
    "headings": [
        {
            "level": 1,
            "text": "Zo herkennen bots en detectietools WordPress, en welke sporen je weghaalt"
        },
        {
            "level": 2,
            "text": "Waarom identificatie aan de aanval voorafgaat"
        },
        {
            "level": 2,
            "text": "Passieve signalen: wat de homepage verraadt"
        },
        {
            "level": 3,
            "text": "De generator-tag"
        },
        {
            "level": 3,
            "text": "De paden /wp-content/ en /wp-includes/"
        },
        {
            "level": 3,
            "text": "De parameter ver="
        },
        {
            "level": 3,
            "text": "De HTTP-headers"
        },
        {
            "level": 3,
            "text": "JavaScript en CSS-klassen"
        },
        {
            "level": 2,
            "text": "Hoe Wappalyzer beslist"
        },
        {
            "level": 2,
            "text": "Hoe WPScan verder gaat"
        },
        {
            "level": 2,
            "text": "Wat je kunt beperken, en wat zichtbaar blijft"
        },
        {
            "level": 2,
            "text": "WordPress verbergen of andere software nabootsen?"
        },
        {
            "level": 2,
            "text": "Je eigen site testen in tien minuten"
        },
        {
            "level": 3,
            "text": "Om te onthouden"
        },
        {
            "level": 2,
            "text": "Bronnen"
        },
        {
            "level": 2,
            "text": "WordPress-beveiliging, zonder ruis",
            "id": "wpm-nl-box-title"
        }
    ],
    "body": "Voordat een bot een kwetsbaarheid probeert, moet hij weten met wat voor site hij te maken heeft. Vaak is één pagina van je site genoeg om \"WordPress\" te concluderen, en daarna een paar verzoeken om een lijst van je plugins en hun versies op te stellen. Dit artikel beschrijft de precieze signalen die Wappalyzer en WPScan gebruiken, wat je netjes kunt weghalen en wat zichtbaar blijft, wat je ook doet.\n\nKorte definitie: [Fingerprinting](https://www.wp-masquerade.com/nl/woordenlijst/fingerprinting/). Kant-en-klare oplossing: [WordPress vermommen als ander CMS met WP Masquerade](https://www.wp-masquerade.com/nl/functies/cms-imitatie/).\n\n## Waarom identificatie aan de aanval voorafgaat\n\nGeautomatiseerde aanvallen op WordPress zijn zelden op \"jouw\" site gericht. Ze richten zich op een specifieke pluginversie waarvan bekend is dat ze kwetsbaar is, op duizenden sites tegelijk. Om die sites te sorteren, beantwoordt een bot drie vragen in deze volgorde: is het WordPress? welke core-versie? welke plugins, en in welke versie?\n\nWPScan illustreert deze logica goed. Als hij in agressieve modus naar plugins zoekt, test hij standaard niet alle bestaande plugins: hij probeert de lijst met plugins in zijn databank die **bekend staan om een kwetsbaarheid**. Een site die op deze vragen niets bruikbaars terugzegt, valt sneller uit de wachtrij; een site die alles aankondigt, belandt in het juiste mandje.\n\n## Passieve signalen: wat de homepage verraadt\n\nEen \"passieve\" tool doet geen bijzondere verzoeken: hij leest de HTML, de headers en het JavaScript van de pagina die elke bezoeker ontvangt. Dat geldt voor de browserextensie Wappalyzer.\n\n### De generator-tag\n\nDe core koppelt standaard de functie `wp_generator` aan de hook `wp_head`. Die toont `<meta name=\"generator\" content=\"WordPress 6.9\" />` met het exacte versienummer. Dezelfde informatie staat in de feeds: `<generator>` in RSS 2, het attribuut `version` in Atom. Haal je de tag uit de `<head>` zonder de feeds aan te pakken, dan blijft de versie dus te zien op `/feed/`.\n\n### De paden /wp-content/ en /wp-includes/\n\nStylesheets, scripts, afbeeldingen: bijna alle bronnen van een WordPress-site lopen via `/wp-content/` (thema's, plugins, media) of `/wp-includes/` (core-bibliotheken). Dit is het meest robuuste signaal, en het levert er de namen van de plugins bij: `/wp-content/plugins/plugin-naam/` staat leesbaar in de broncode.\n\n### De parameter ver=\n\nScripts en stijlen van de core worden geregistreerd met een standaardversie die gelijk is aan de WordPress-versie (`default_version = get_bloginfo( 'version' )` in `script-loader.php`). Niet allemaal gebruiken ze die (jQuery heeft een eigen nummer), maar een script dat zonder versie is geregistreerd, zoals `wp-includes/js/comment-reply.min.js`, wordt geserveerd met `?ver=` gevolgd door de core-versie, ook als de generator-tag is verdwenen. Plugins geven in diezelfde parameter vaak hun eigen versienummer mee.\n\n### De HTTP-headers\n\n- `Link: <https://voorbeeld.nl/wp-json/>; rel=\"https://api.w.org/\"`: verstuurd door `rest_output_link_header()` op openbare pagina's om de REST API aan te kondigen. Wappalyzer herkent hem direct.\n- `X-Pingback`: sinds WordPress 4.4 wordt deze header alleen verstuurd op een afzonderlijk item (bericht, pagina) dat pings accepteert, en verwijst hij naar `xmlrpc.php`.\n- Korte links: `wp_shortlink_header()` voegt op content een `Link` van het type `shortlink` toe.\n\n### JavaScript en CSS-klassen\n\nDe blokeditor laat `wp-block-...`-klassen achter in de gepubliceerde content. Aan de JavaScript-kant zijn objecten als `wp.ajax`, een variabele `wp_username` of het script `wp-embed.min.js` genoeg voor Wappalyzer. WooCommerce voegt zijn eigen markers toe (`woocommerce_params`, `wc_add_to_cart_params`).\n\n![Overzicht van de signalen waarmee WordPress wordt herkend, in vier kolommen: HTML-code, HTTP-headers, JavaScript en actieve verzoeken](https://www.wp-masquerade.com/media/2026/10/signaux-wordpress-nl.webp)\n\n*De eerste drie kolommen worden op een gewone pagina gelezen; de laatste vereist gerichte verzoeken.*\n\n| Signaal | Waar te zien | Geeft de versie? | Gelezen door |\n| --- | --- | --- | --- |\n| Generator-tag | `<head>` van elke pagina | Ja, exact | Wappalyzer, WPScan |\n| Generator in feeds | `/feed/`, `/feed/atom/` | Ja, exact | WPScan |\n| Paden wp-content, wp-includes | Broncode | Nee (wel pluginnamen) | Wappalyzer, WPScan |\n| Parameter `ver=` | Adressen van scripts en stijlen | Vaak | WPScan |\n| Link-header api.w.org | HTTP-antwoord | Nee | Wappalyzer |\n| X-Pingback | HTTP-antwoord (berichten) | Nee | Wappalyzer |\n| JavaScript-variabelen | Scripts van de pagina | Nee | Wappalyzer |\n| `readme.txt` van plugins | Apart verzoek | Ja (Stable tag) | WPScan |\n| MD5-vingerafdrukken | Verzoeken naar statische bestanden | Ja | WPScan |\n\n*Belangrijkste signalen, volgens de WordPress-definitie van webappanalyzer en de code van WPScan.*\n\n## Hoe Wappalyzer beslist\n\nWappalyzer vergelijkt de pagina met een databank van definities: per technologie een lijst reguliere expressies om te zoeken in de HTML, de meta-tags, de headers, de cookies, de scriptadressen en de JavaScript-variabelen. De oorspronkelijke repository werd in augustus 2023 privé; de databank wordt verder ontwikkeld in open projecten zoals **webappanalyzer** (Enthec), dat hetzelfde formaat aanhoudt.\n\nDe definitie \"WordPress\" in deze databank is kort en leerzaam:\n\n- `meta generator`: `^WordPress(?: ([\\d.]+))?`, waarbij het versienummer wordt vastgelegd;\n- `headers`: `X-Pingback` eindigend op `/xmlrpc.php`, en `link` met `rel=\"https://api.w.org/\"`;\n- `scriptSrc` en `html`: paden `/wp-content/` of `/wp-includes/`, `wp-embed.min.js`;\n- `js`: `wp.ajax`, `wp.receiveEmbedMessage`, `wp_username`;\n- `implies`: PHP en [MySQL](https://www.wp-masquerade.com/nl/woordenlijst/mysql-mariadb/). De WooCommerce-definitie vereist op haar beurt WordPress (`requires`).\n\nPraktisch gevolg: één signaal is genoeg. De generator-tag weghalen verandert niets aan het oordeel zolang de paden `/wp-content/` in de pagina staan. Omgekeerd wordt een site die de markers van andere software toont, via hetzelfde mechanisme in die andere categorie ingedeeld.\n\n## Hoe WPScan verder gaat\n\nWPScan is een beveiligingsscanner speciaal voor WordPress, die zowel door auditors als door aanvallers wordt gebruikt. De broncode is openbaar, zodat je precies kunt nagaan waar hij naar zoekt:\n\n- **Detectie van WordPress**: de homepage en een [404-pagina](https://www.wp-masquerade.com/nl/woordenlijst/404-fout/) worden onderzocht (paden, generator, HTML-commentaar waarin WordPress wordt genoemd, `admin-ajax.php` in een inline script). In gemengde of agressieve modus laadt hij ook `wp-login.php` en `wp-admin/install.php`.\n- **Core-versie**: generators in de RSS-, Atom- en RDF-feeds, `readme.html` (weinig betrouwbaar voor recente versies), daarna vingerafdrukken: hij vergelijkt de MD5 van statische bestanden met een databank van bekende checksums, met een betrouwbaarheid van 100%.\n- **Plugins**: adressen op de homepage en de 404-pagina, patronen in headers, commentaar en JavaScript-variabelen, daarna verzoeken naar `/wp-content/plugins/slug/`. Een antwoord 200, 401, 403 of 500 geldt als aanwezig.\n- **Pluginversie**: lezen van `readme.txt`, veld `Stable tag` (betrouwbaarheid 80) of de changelogsectie (betrouwbaarheid 50).\n\n![Schema in zes stappen van het verloop van een WPScan-scan, van de homepage tot de vergelijking met een kwetsbaarhedendatabank](https://www.wp-masquerade.com/media/2026/10/deroule-scan-wpscan-nl.webp)\n\n*De eerste stap is een gewoon bezoek; de oranje stappen genereren verzoeken die zichtbaar zijn in je toegangslogs.*\n\nDe actieve stappen laten sporen na: tientallen verzoeken naar `/wp-content/plugins/.../readme.txt` met een 404 binnen enkele seconden wijzen op een opsomming. Daar kan een verdediging ook ingrijpen, door geen 200 of 403 terug te geven op bestanden die niet openbaar hoeven te zijn.\n\n*Demonstratie van WPScan door Secureaks: opsomming van plugins en versies op een testsite.*\n\n## Wat je kunt beperken, en wat zichtbaar blijft\n\nMet WordPress kun je verschillende aankondigingen weghalen met eenvoudige hooks, bijvoorbeeld in een eigen plugin:\n\n```\nremove_action( 'wp_head', 'wp_generator' );\nadd_filter( 'the_generator', '__return_empty_string' );   // inclusief feeds\nremove_action( 'wp_head', 'rsd_link' );\nremove_action( 'wp_head', 'wp_shortlink_wp_head', 10 );\nremove_action( 'template_redirect', 'wp_shortlink_header', 11 );\nremove_action( 'wp_head', 'rest_output_link_wp_head', 10 );\nremove_action( 'template_redirect', 'rest_output_link_header', 11 );\n```\n\nLet op de prioriteit: `remove_action()` werkt alleen als je dezelfde prioriteit opgeeft als bij het toevoegen (11 voor de twee headers). Naar `wlwmanifest_link` hoef je daarentegen niet te zoeken: deze Windows Live Writer-link wordt sinds WordPress 6.3 niet meer door de core uitgegeven.\n\n| Signaal | Verdediging | Effect | Beperking |\n| --- | --- | --- | --- |\n| Generator | Filter `the_generator` | Versie verwijderd uit pagina's en feeds | Thema's en plugins die hun eigen generator schrijven |\n| Link api.w.org | De twee REST-hooks verwijderen | Aankondiging van de API verdwenen | De API blijft bereikbaar op `/wp-json/` |\n| `ver=` | Parameter herschrijven of verwijderen | Core-versie minder zichtbaar | Kan het verversen van de browsercache hinderen |\n| Paden wp-content | Adresaliassen + serverregels | Geen /wp-content/ meer in de HTML | Lastig: CSS, JS en JSON bevatten ook paden |\n| `readme.txt` van plugins | Blokkeren op de server (404) | Pluginversie moeilijker te lezen | Vingerafdrukken van statische bestanden blijven mogelijk |\n| MD5-vingerafdrukken | Geen eenvoudige verdediging |  | Alleen bijwerken neemt de kwetsbaarheid weg |\n\n*Het identificatieoppervlak verkleinen: effecten en beperkingen.*\n\nHoud de rangorde in gedachten: de versie verbergen verhelpt geen enkele kwetsbaarheid. Een bot die je site niet kan identificeren, kan de exploit nog steeds blind proberen, en sommige doen dat ook. Verbergen vermindert de ruis en haalt je site uit gesorteerde doelwitlijsten; updates, back-ups en sterke authenticatie blijven de basis.\n\n## WordPress verbergen of andere software nabootsen?\n\nSignalen weghalen laat een site \"zonder identiteit\" achter, en dat is op zich al een aanwijzing. De andere aanpak is de markers van andere software te tonen. Dat is het principe van [CMS-imitatie](https://www.wp-masquerade.com/nl/functies/cms-imitatie/) van WP Masquerade:\n\n| Functie | Gratis | Pro |\n| --- | --- | --- |\n| WordPress-generator verwijderd uit pagina's en feeds | Ja | Ja |\n| Echte generator-tag van andere software | 5 profielen (Joomla!, Drupal, PrestaShop, TYPO3, MediaWiki) | 41 profielen |\n| Markers die Wappalyzer herkent (headers, JavaScript-variabelen) | Nee | Ja |\n| RSD-, Windows Live Writer- en korte links verwijderd | Ja | Ja |\n| Aankondigingen van de REST API en oEmbed verwijderd | Nee | Ja |\n| Aliassen voor wp-content, media, wp-includes, plugins, thema's | Nee | Ja |\n| Readme- en vertaalbestanden van de plugin op 404 (Apache, LiteSpeed) | Ja | Ja |\n\n*Wat WP Masquerade doet tegen identificatie (volgens de productdocumentatie).*\n\nDe beperkingen zijn gedocumenteerd: de mapnamen van plugins en thema's blijven onder hun hoofdmap aanwezig, CSS- en JavaScript-bestanden worden niet volledig herschreven, en er is geen enkel gegarandeerd resultaat in een detector. Zie ook [de technische links](https://www.wp-masquerade.com/nl/functies/technische-wordpress-links/) en [de bestandsadressen](https://www.wp-masquerade.com/nl/functies/bestandsadressen/). Een overzicht van wat de [WordPress-beveiligingsplugin WP Masquerade](https://www.wp-masquerade.com/nl/) verder doet, vind je op onze homepage.\n\n## Je eigen site testen in tien minuten\n\n1. Open een privévenster (uitgelogd) en bekijk de broncode: zoek naar `generator`, `wp-content`, `wp-includes`, `ver=`.\n2. Open `/feed/` en zoek naar de tag `<generator>`.\n3. Lees de headers met `curl -sI https://jouw-site.nl/`: staat er een `Link` naar `api.w.org`?\n4. Start de Wappalyzer-extensie op de homepage en daarna op een bericht.\n5. Probeer `/wp-content/plugins/een-plugin/readme.txt`: een 200 geeft de versie aan iedereen.\n6. Leeg na elke instelling de paginacache: een oude kopie kan de oude signalen bewaren.\n7. Gebruik je WPScan, doe dat dan alleen op een site waarvoor je verantwoordelijk bent.\n\n*Het standpunt van de bezoeker: de eenvoudige manieren om een WordPress-site te herkennen.*\n\n### Om te onthouden\n\n- Eén signaal is genoeg voor Wappalyzer: de generator-tag weghalen volstaat niet zolang /wp-content/ zichtbaar blijft.\n- De core-versie lekt ook via de feeds, de parameter ver= en de vingerafdrukken van bestanden.\n- WPScan leest de Stable tag in de readme.txt van plugins: blokkeer die bestanden als ze 200 teruggeven.\n- remove_action() vereist dezelfde prioriteit als bij het toevoegen (11 voor de Link-headers).\n- Verbergen beperkt geautomatiseerde targeting, maar alleen updates nemen een kwetsbaarheid weg.\n\n## Bronnen\n\n- [webappanalyzer: technologiedefinities (w.json, vermelding WordPress)](https://github.com/enthec/webappanalyzer/blob/main/src/technologies/w.json)\n- [webappanalyzer: README (voortzetting van Wappalyzer, privé sinds augustus 2023)](https://github.com/enthec/webappanalyzer)\n- [WordPress Developer: get_the_generator()](https://developer.wordpress.org/reference/functions/get_the_generator/)\n- [WordPress Developer: rest_output_link_header()](https://developer.wordpress.org/reference/functions/rest_output_link_header/)\n\nAndere geraadpleegde bronnen: officiële documentatie en officiële pagina's van de leveranciers.\n\n## WordPress-beveiliging, zonder ruis\n\nEén e-mail wanneer het ertoe doet: nieuw waargenomen aanvallen, updates van de plugin en praktische gidsen. Geen spam, afmelden met één klik.",
    "categories": [
        "WordPress-kwetsbaarheden"
    ],
    "format": "application/json"
}