Skip to content

Wordpress detection change it too loose and causing false positives #223

@lauren-rmtech

Description

@lauren-rmtech

Platform

Wappalyzer browser extension / core detection engine (WordPress technology detection)

Describe the bug

After a recent update, the WordPress detector now produces false positives.
The DOM selectors were previously combined into a single rule, but they have been split into multiple independent selectors:

– div[class*=‘wp-block-group’] > div[class*=‘wp-block-’]
– link[rel=stylesheet][href*=’/wp-content/’]
– link[rel=stylesheet][href*=’/wp-includes/’]
– link[href*=’.wp.com’]

Because each selector is now evaluated independently, any single weak indicator (for example a single /wp-content/ or .wp.com reference) is enough to detect WordPress.

This causes false positives when third-party scripts (such as Google Tag Manager or CDNs) inject resources that match these patterns.
This behaviour did not occur prior to the rule change.

To Reproduce
1. Visit a non-WordPress website where Google Tag Manager injects a resource containing /wp-content/, /wp-includes/ or .wp.com.
2. Open Wappalyzer.
3. WordPress is detected even though the site is not running WordPress.

Example of what gets unintentionally matched (conceptually):
[src^=’/wp-content’], meta[name=‘generator’][content^=‘WordPress ‘], link[rel=‘dns-prefetch’][href=’//s.w.org’]

Expected behavior

WordPress should only be detected when multiple strong indicators are present, such as block-editor DOM structure, the WordPress generator meta tag, or both /wp-content/ and /wp-includes/.

Third-party injected resources should not trigger detection alone.

Additional context

The regression seems to come from splitting the original combined selector into several stand-alone selectors, making the detector overly permissive.
A more robust detector would group related signals or require more than one to match before identifying WordPress.

The commit that introduced this change was 7316fe9#diff-0e44086638908c6c3d6cd9e5418f5e94ec1063b006ce13c193aa38118a2f2dab

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions