Skip to content

Harden technology detection, category resolution, and version strings against corrupted values - #401

Open
max-ostapenko wants to merge 1 commit into
mainfrom
fix/harden-technology-resolution
Open

max-ostapenko wants to merge 1 commit into
mainfrom
fix/harden-technology-resolution

Conversation

@max-ostapenko

Copy link
Copy Markdown
Contributor

Summary of Changes

During HTTP Archive monthly crawl data ingestion, several pages were found to emit corrupted technology structures, punctuation-only versions, or stringified "undefined" values. This PR hardens Wappalyzer.resolve(), Wappalyzer.resolveVersion(), and driver.js against malformed detections, missing names, unmapped categories, and invalid version fragments.

Root Causes & Problematic Websites (Grouped by Issue)

1. Missing or Null Technology Names

  • Problematic Websites:
    • https://www.gmi.go.kr/gc/intro.do
    • https://m.shf.co.id/
    • https://account.magneticsprings.com/
  • Root Cause: Wappalyzer.resolve() accepted detection objects where technology was null or lacked a valid string name. When serialized, this produced ARRAY<STRUCT<technology: null, ...>> in downstream crawl tables.
  • Fix: Added upfront validation in resolve() ensuring technology is a valid object and technology.name is a non-empty string.

2. Punctuation-Only Version Strings, Leading Separators, or HTML Injections

  • Problematic Websites:
    • https://e-a.at/ (detected version ".")
    • https://tullnerautomeile.at/deine-probefahrt (detected version ".")
    • https://www.stars94.bg/ (detected version ".2k")
    • https://www.finasi.ae/ (detected version ".36")
    • https://www.bakabu.at/singeland (detected versions ".", "-beta")
  • Root Cause: In resolveVersion(), regex back-references on partial matches or empty capture groups left standalone punctuation fragments (e.g. ".", "-beta"). Because their length was > 0, resolve() picked them up as valid versions.
  • Fix: Sanitized resolveVersion() by trimming leading/trailing punctuation (., -, _, /), rejecting versions lacking any alphanumeric characters (/[0-9a-zA-Z]/), and rejecting strings containing raw HTML tags (<, >).

3. Stringified "undefined" Detection Names and Category Pairs

  • Problematic Websites:
    • https://seoul.rnbd.kr/client/c030100/c030100_04.jsp?sField=&sWord=&sFlag=&cPage=1&seqNo=280 ("undefined" / "undefined,undefined")
  • Root Cause: JS/DOM property chains evaluating to undefined in the page context were coerced into strings during pattern matches or resolution.
  • Fix: Added strict type checking in resolve() and guarded driver.js evaluation loops.

4. Unmapped or Null Category References

  • Root Cause: Wappalyzer.getCategory(id) could return null if a category ID was unmapped or passed as a numeric string, resulting in null array elements in resolved categories.
  • Fix: Filtered resolved category arrays with .filter(Boolean) and updated getCategory(id) to parse numeric string IDs (parseInt(id, 10)).

Tests & Validation

  • npm run lint passed (0 errors, 0 warnings).
  • npm run validate passed.
  • Added comprehensive unit test suite in tests/wappalyzer.test.js covering null detections, punctuation version stripping, category filtering, and missing dependency resolution (8/8 tests passed).
  • Updated tests/wpt.js and tests/unit-tests.test.js to defer WPT environment checks to execution time so local test suites run cleanly.

Test websites:

@github-actions

Copy link
Copy Markdown
WPT test run for https://almanac.httparchive.org/en/2022/

WPT test run results: http://webpagetest.httparchive.org/results.php?test=261020_CH_1
Detected technologies:

{
    "detected": {
        "IaaS": "Google Cloud",
        "JavaScript libraries": "web-vitals",
        "RUM": "web-vitals",
        "Performance": "Priority Hints,Google Cloud Trace",
        "Security": "HSTS",
        "Webmail": "Google Workspace",
        "Email": "Google Workspace",
        "Analytics": "Google Analytics",
        "CDN": "Cloudflare",
        "Miscellaneous": "RSS,Open Graph"
    },
    "detected_apps": {
        "Google Cloud": "",
        "web-vitals": "",
        "Priority Hints": "",
        "HSTS": "",
        "Google Workspace": "",
        "Google Cloud Trace": "",
        "Google Analytics": "",
        "Cloudflare": "",
        "RSS": "",
        "Open Graph": ""
    },
    "detected_technologies": {
        "Google Cloud": {
            "name": "Google Cloud",
            "description": "Google Cloud is a suite of cloud computing services.",
            "slug": "google-cloud",
            "categories": [
                {
                    "id": 63,
                    "slug": "iaas",
                    "description": "Provides computing resources",
                    "groups": [
                        7
                    ],
                    "name": "IaaS",
                    "priority": 8
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Google Cloud.svg",
            "website": "https://cloud.google.com",
            "pricing": [],
            "cpe": "cpe:2.3:a:google:cloud_platform:*:*:*:*:*:*:*:*"
        },
        "web-vitals": {
            "name": "web-vitals",
            "description": "The web-vitals JavaScript is a tiny, modular library for measuring all the web vitals metrics on real users.",
            "slug": "web-vitals",
            "categories": [
                {
                    "id": 59,
                    "slug": "javascript-libraries",
                    "description": "Collections of pre-written JavaScript code",
                    "groups": [
                        9
                    ],
                    "name": "JavaScript libraries",
                    "priority": 9
                },
                {
                    "id": 78,
                    "slug": "rum",
                    "description": "Tools that track performance as experienced by users",
                    "groups": [
                        2
                    ],
                    "name": "RUM",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "web-vitals.svg",
            "website": "https://github.com/GoogleChrome/web-vitals",
            "pricing": [],
            "cpe": null
        },
        "Priority Hints": {
            "name": "Priority Hints",
            "description": "Priority Hints exposes a mechanism for developers to signal a relative priority for browsers to consider when fetching resources.",
            "slug": "priority-hints",
            "categories": [
                {
                    "id": 92,
                    "slug": "performance",
                    "description": "Tools that measure and optimize site speed",
                    "groups": [
                        7
                    ],
                    "name": "Performance",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Priority Hints.svg",
            "website": "https://wicg.github.io/priority-hints/",
            "pricing": [],
            "cpe": null
        },
        "HSTS": {
            "name": "HSTS",
            "description": "HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.",
            "slug": "hsts",
            "categories": [
                {
                    "id": 16,
                    "slug": "security",
                    "description": "Technologies that protect websites from vulnerabilities and attacks",
                    "groups": [
                        11
                    ],
                    "name": "Security",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "default.svg",
            "website": "https://www.rfc-editor.org/rfc/rfc6797#section-6.1",
            "pricing": [],
            "cpe": null
        },
        "Google Workspace": {
            "name": "Google Workspace",
            "description": "Google Workspace, formerly G Suite, is a collection of cloud computing, productivity and collaboration tools.",
            "slug": "google-workspace",
            "categories": [
                {
                    "id": 30,
                    "slug": "webmail",
                    "description": "Systems that allow users to send and receive emails through a browser",
                    "groups": [
                        4
                    ],
                    "name": "Webmail",
                    "priority": 2
                },
                {
                    "id": 75,
                    "slug": "email",
                    "description": "Systems that manage email communication",
                    "groups": [
                        4,
                        2
                    ],
                    "name": "Email",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Google.svg",
            "website": "https://workspace.google.com/",
            "pricing": [],
            "cpe": null
        },
        "Google Cloud Trace": {
            "name": "Google Cloud Trace",
            "description": "Google Cloud Trace is a distributed tracing system that collects latency data from applications and displays it in the Google Cloud Console.",
            "slug": "google-cloud-trace",
            "categories": [
                {
                    "id": 92,
                    "slug": "performance",
                    "description": "Tools that measure and optimize site speed",
                    "groups": [
                        7
                    ],
                    "name": "Performance",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "google-cloud-trace.svg",
            "website": "https://cloud.google.com/trace",
            "pricing": [],
            "cpe": null
        },
        "Google Analytics": {
            "name": "Google Analytics",
            "description": "Google Analytics is a free web analytics service that tracks and reports website traffic.",
            "slug": "google-analytics",
            "categories": [
                {
                    "id": 10,
                    "slug": "analytics",
                    "description": "Tools that track user behavior and provide insights into website performance",
                    "groups": [
                        8
                    ],
                    "name": "Analytics",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Google Analytics.svg",
            "website": "https://google.com/analytics",
            "pricing": [],
            "cpe": null
        },
        "Cloudflare": {
            "name": "Cloudflare",
            "description": "Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.",
            "slug": "cloudflare",
            "categories": [
                {
                    "id": 31,
                    "slug": "cdn",
                    "description": "(Content Delivery Network) Distribute website content globally to improve load times for users",
                    "groups": [
                        7
                    ],
                    "name": "CDN",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "CloudFlare.svg",
            "website": "https://www.cloudflare.com",
            "pricing": [],
            "cpe": null
        },
        "RSS": {
            "name": "RSS",
            "description": "RSS is a family of web feed formats used to publish frequently updated works—such as blog entries, news headlines, audio, and video—in a standardized format.",
            "slug": "rss",
            "categories": [
                {
                    "id": 19,
                    "slug": "miscellaneous",
                    "description": "Tools and technologies that don't fit into other categories",
                    "groups": [
                        6
                    ],
                    "name": "Miscellaneous",
                    "priority": 10
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "RSS.svg",
            "website": "https://www.rssboard.org/rss-specification",
            "pricing": [],
            "cpe": null
        },
        "Open Graph": {
            "name": "Open Graph",
            "description": "Open Graph is a protocol that is used to integrate any web page into the social graph.",
            "slug": "open-graph",
            "categories": [
                {
                    "id": 19,
                    "slug": "miscellaneous",
                    "description": "Tools and technologies that don't fit into other categories",
                    "groups": [
                        6
                    ],
                    "name": "Miscellaneous",
                    "priority": 10
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Open Graph.png",
            "website": "https://ogp.me",
            "pricing": [],
            "cpe": null
        }
    }
}
WPT test run for https://www.gmi.go.kr/gc/intro.do

WPT test run results: http://webpagetest.httparchive.org/results.php?test=261020_WX_2
Detected technologies:

{
    "detected": {
        "programming-languages": "",
        "javascript-libraries": "",
        "analytics": "",
        "security": "",
        "miscellaneous": ""
    },
    "detected_apps": {
        "": ""
    },
    "detected_technologies": {
        "": {
            "name": "Open Graph",
            "description": "Open Graph is a protocol that is used to integrate any web page into the social graph.",
            "slug": "open-graph",
            "categories": [
                {
                    "id": 19,
                    "slug": "miscellaneous",
                    "description": "Tools and technologies that don't fit into other categories",
                    "groups": [
                        6
                    ],
                    "name": "Miscellaneous",
                    "priority": 10
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Open Graph.png",
            "website": "https://ogp.me",
            "pricing": [],
            "cpe": null
        }
    }
}
WPT test run for https://e-a.at/

WPT test run results: http://webpagetest.httparchive.org/results.php?test=261020_B2_3
Detected technologies:

{
    "detected": {
        "CMS": "Drupal 11",
        "Programming languages": "PHP",
        "UI frameworks": "Bootstrap,MDBootstrap",
        "Web servers": "Apache HTTP Server",
        "JavaScript libraries": "Swiper,Preact,jQuery 4.,.,",
        "Analytics": "Matomo Analytics",
        "Cookie compliance": "Klaro",
        "Webmail": "Microsoft 365",
        "Email": "Microsoft 365,MailChimp",
        "Marketing automation": "MailChimp",
        "CDN": "jsDelivr"
    },
    "detected_apps": {
        "Drupal": "11",
        "PHP": "",
        "Bootstrap": "",
        "MDBootstrap": "",
        "Apache HTTP Server": "",
        "Swiper": "",
        "Matomo Analytics": "",
        "Klaro": "",
        "Preact": "",
        "Microsoft 365": "",
        "MailChimp": "",
        "jsDelivr": "",
        "jQuery": "4.,.,"
    },
    "detected_technologies": {
        "Drupal": {
            "name": "Drupal",
            "description": "Drupal is a free and open-source web content management framework.",
            "slug": "drupal",
            "categories": [
                {
                    "id": 1,
                    "slug": "cms",
                    "description": "Platforms used to create, manage, and modify content on a website without needing specialized technical knowledge",
                    "groups": [
                        3
                    ],
                    "name": "CMS",
                    "priority": 1
                }
            ],
            "confidence": 100,
            "version": "11",
            "icon": "Drupal.svg",
            "website": "https://www.drupal.org/",
            "pricing": [],
            "cpe": "cpe:2.3:a:drupal:drupal:*:*:*:*:*:*:*:*"
        },
        "PHP": {
            "name": "PHP",
            "description": "PHP is a general-purpose scripting language used for web development.",
            "slug": "php",
            "categories": [
                {
                    "id": 27,
                    "slug": "programming-languages",
                    "description": "Build website functionalities and backend services",
                    "groups": [
                        9
                    ],
                    "name": "Programming languages",
                    "priority": 5
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "PHP.svg",
            "website": "https://php.net",
            "pricing": [],
            "cpe": "cpe:2.3:a:php:php:*:*:*:*:*:*:*:*"
        },
        "Bootstrap": {
            "name": "Bootstrap",
            "description": "Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.",
            "slug": "bootstrap",
            "categories": [
                {
                    "id": 66,
                    "slug": "ui-frameworks",
                    "description": "Provide pre-built components to build user interfaces",
                    "groups": [
                        9
                    ],
                    "name": "UI frameworks",
                    "priority": 7
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Bootstrap.svg",
            "website": "https://getbootstrap.com",
            "pricing": [],
            "cpe": "cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*"
        },
        "MDBootstrap": {
            "name": "MDBootstrap",
            "description": "MDBootstrap (Material Design for Bootstrap) is a complete UI package that can be integrated with other frameworks such as Angular, React, Vue, etc. It is used to design a fully responsive and mobile-friendly layout using various components, plugins, animation.",
            "slug": "mdbootstrap",
            "categories": [
                {
                    "id": 66,
                    "slug": "ui-frameworks",
                    "description": "Provide pre-built components to build user interfaces",
                    "groups": [
                        9
                    ],
                    "name": "UI frameworks",
                    "priority": 7
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "MDBootstrap.png",
            "website": "https://mdbootstrap.com",
            "pricing": [],
            "cpe": null
        },
        "Apache HTTP Server": {
            "name": "Apache HTTP Server",
            "description": "Apache is a free and open-source cross-platform web server software.",
            "slug": "apache-http-server",
            "categories": [
                {
                    "id": 22,
                    "slug": "web-servers",
                    "description": "Software applications that deliver web pages to users' browsers",
                    "groups": [
                        7
                    ],
                    "name": "Web servers",
                    "priority": 8
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Apache.svg",
            "website": "https://httpd.apache.org/",
            "pricing": [],
            "cpe": "cpe:2.3:a:apache:http_server:*:*:*:*:*:*:*:*"
        },
        "Swiper": {
            "name": "Swiper",
            "description": "Swiper is a JavaScript library that creates modern touch sliders with hardware-accelerated transitions.",
            "slug": "swiper",
            "categories": [
                {
                    "id": 59,
                    "slug": "javascript-libraries",
                    "description": "Collections of pre-written JavaScript code",
                    "groups": [
                        9
                    ],
                    "name": "JavaScript libraries",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Swiper.svg",
            "website": "https://swiperjs.com",
            "pricing": [],
            "cpe": null
        },
        "Matomo Analytics": {
            "name": "Matomo Analytics",
            "description": "Matomo Analytics is a free and open-source web analytics application, that runs on a PHP/MySQL web-server.",
            "slug": "matomo-analytics",
            "categories": [
                {
                    "id": 10,
                    "slug": "analytics",
                    "description": "Tools that track user behavior and provide insights into website performance",
                    "groups": [
                        8
                    ],
                    "name": "Analytics",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Matomo.svg",
            "website": "https://matomo.org",
            "pricing": [
                "freemium",
                "payg"
            ],
            "cpe": "cpe:2.3:a:matomo:matomo:*:*:*:*:*:*:*:*"
        },
        "Klaro": {
            "name": "Klaro",
            "description": "Klaro is a simple consent management platform and privacy tool.",
            "slug": "klaro",
            "categories": [
                {
                    "id": 67,
                    "slug": "cookie-compliance",
                    "description": "Tools that manage user consent for cookies",
                    "groups": [
                        13
                    ],
                    "name": "Cookie compliance",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Klaro.png",
            "website": "https://heyklaro.com",
            "pricing": [
                "freemium",
                "low",
                "recurring"
            ],
            "cpe": null
        },
        "Preact": {
            "name": "Preact",
            "description": "Preact is a JavaScript library that describes itself as a fast 3kB alternative to React with the same ES6 API.",
            "slug": "preact",
            "categories": [
                {
                    "id": 59,
                    "slug": "javascript-libraries",
                    "description": "Collections of pre-written JavaScript code",
                    "groups": [
                        9
                    ],
                    "name": "JavaScript libraries",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Preact.svg",
            "website": "https://preactjs.com",
            "pricing": [],
            "cpe": null
        },
        "Microsoft 365": {
            "name": "Microsoft 365",
            "description": "Microsoft 365 is a line of subscription services offered by Microsoft as part of the Microsoft Office product line.",
            "slug": "microsoft-365",
            "categories": [
                {
                    "id": 30,
                    "slug": "webmail",
                    "description": "Systems that allow users to send and receive emails through a browser",
                    "groups": [
                        4
                    ],
                    "name": "Webmail",
                    "priority": 2
                },
                {
                    "id": 75,
                    "slug": "email",
                    "description": "Systems that manage email communication",
                    "groups": [
                        4,
                        2
                    ],
                    "name": "Email",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Microsoft 365.svg",
            "website": "https://www.microsoft.com/microsoft-365",
            "pricing": [],
            "cpe": null
        },
        "MailChimp": {
            "name": "MailChimp",
            "description": "Mailchimp is a marketing automation platform and email marketing service.",
            "slug": "mailchimp",
            "categories": [
                {
                    "id": 32,
                    "slug": "marketing-automation",
                    "description": "Tools that streamline marketing activities",
                    "groups": [
                        2
                    ],
                    "name": "Marketing automation",
                    "priority": 9
                },
                {
                    "id": 75,
                    "slug": "email",
                    "description": "Systems that manage email communication",
                    "groups": [
                        4,
                        2
                    ],
                    "name": "Email",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "mailchimp.svg",
            "website": "https://mailchimp.com",
            "pricing": [
                "low",
                "freemium",
                "recurring"
            ],
            "cpe": "cpe:2.3:a:thinkshout:mailchimp:*:*:*:*:*:*:*:*"
        },
        "jsDelivr": {
            "name": "jsDelivr",
            "description": "JSDelivr is a free public CDN for open-source projects. It can serve web files directly from the npm registry and GitHub repositories without any configuration.",
            "slug": "jsdelivr",
            "categories": [
                {
                    "id": 31,
                    "slug": "cdn",
                    "description": "(Content Delivery Network) Distribute website content globally to improve load times for users",
                    "groups": [
                        7
                    ],
                    "name": "CDN",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "jsdelivr-icon.svg",
            "website": "https://www.jsdelivr.com/",
            "pricing": [],
            "cpe": null
        },
        "jQuery": {
            "name": "jQuery",
            "description": "jQuery is a JavaScript library which is a free, open-source software designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax.",
            "slug": "jquery",
            "categories": [
                {
                    "id": 59,
                    "slug": "javascript-libraries",
                    "description": "Collections of pre-written JavaScript code",
                    "groups": [
                        9
                    ],
                    "name": "JavaScript libraries",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "4.0.0",
            "icon": "jQuery.svg",
            "website": "https://jquery.com",
            "pricing": [],
            "cpe": "cpe:2.3:a:jquery:jquery:*:*:*:*:*:*:*:*"
        }
    }
}
WPT test run for https://www.stars94.bg/

WPT test run results: http://webpagetest.httparchive.org/results.php?test=261020_D8_4
Detected technologies:

{
    "detected": {
        "Programming languages": "PHP 7.4.21",
        "Operating systems": "CentOS",
        "Web server extensions": "OpenSSL 1.,.2k",
        "Web servers": "Apache HTTP Server 2.4.6",
        "Analytics": "Google Analytics",
        "Miscellaneous": "Open Graph"
    },
    "detected_apps": {
        "PHP": "7.4.21",
        "CentOS": "",
        "OpenSSL": "1.,.2k",
        "Apache HTTP Server": "2.4.6",
        "Google Analytics": "",
        "Open Graph": ""
    },
    "detected_technologies": {
        "PHP": {
            "name": "PHP",
            "description": "PHP is a general-purpose scripting language used for web development.",
            "slug": "php",
            "categories": [
                {
                    "id": 27,
                    "slug": "programming-languages",
                    "description": "Build website functionalities and backend services",
                    "groups": [
                        9
                    ],
                    "name": "Programming languages",
                    "priority": 5
                }
            ],
            "confidence": 100,
            "version": "7.4.21",
            "icon": "PHP.svg",
            "website": "https://php.net",
            "pricing": [],
            "cpe": "cpe:2.3:a:php:php:*:*:*:*:*:*:*:*"
        },
        "CentOS": {
            "name": "CentOS",
            "description": "CentOS is a Linux distribution that provides a free, community-supported computing platform functionally compatible with its upstream source, Red Hat Enterprise Linux (RHEL).",
            "slug": "centos",
            "categories": [
                {
                    "id": 28,
                    "slug": "operating-systems",
                    "description": "Run web servers and infrastructure",
                    "groups": [
                        7
                    ],
                    "name": "Operating systems",
                    "priority": 6
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "CentOS.svg",
            "website": "https://centos.org",
            "pricing": [],
            "cpe": "cpe:2.3:o:centos:centos:*:*:*:*:*:*:*:*"
        },
        "OpenSSL": {
            "name": "OpenSSL",
            "description": "OpenSSL is a software library for applications that secure communications over computer networks against eavesdropping or need to identify the party at the other end.",
            "slug": "openssl",
            "categories": [
                {
                    "id": 33,
                    "slug": "web-server-extensions",
                    "description": "Software that enhances the capabilities of web servers",
                    "groups": [
                        7
                    ],
                    "name": "Web server extensions",
                    "priority": 7
                }
            ],
            "confidence": 100,
            "version": "1.0.2k",
            "icon": "OpenSSL.png",
            "website": "https://openssl.org",
            "pricing": [],
            "cpe": "cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:*"
        },
        "Apache HTTP Server": {
            "name": "Apache HTTP Server",
            "description": "Apache is a free and open-source cross-platform web server software.",
            "slug": "apache-http-server",
            "categories": [
                {
                    "id": 22,
                    "slug": "web-servers",
                    "description": "Software applications that deliver web pages to users' browsers",
                    "groups": [
                        7
                    ],
                    "name": "Web servers",
                    "priority": 8
                }
            ],
            "confidence": 100,
            "version": "2.4.6",
            "icon": "Apache.svg",
            "website": "https://httpd.apache.org/",
            "pricing": [],
            "cpe": "cpe:2.3:a:apache:http_server:*:*:*:*:*:*:*:*"
        },
        "Google Analytics": {
            "name": "Google Analytics",
            "description": "Google Analytics is a free web analytics service that tracks and reports website traffic.",
            "slug": "google-analytics",
            "categories": [
                {
                    "id": 10,
                    "slug": "analytics",
                    "description": "Tools that track user behavior and provide insights into website performance",
                    "groups": [
                        8
                    ],
                    "name": "Analytics",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Google Analytics.svg",
            "website": "https://google.com/analytics",
            "pricing": [],
            "cpe": null
        },
        "Open Graph": {
            "name": "Open Graph",
            "description": "Open Graph is a protocol that is used to integrate any web page into the social graph.",
            "slug": "open-graph",
            "categories": [
                {
                    "id": 19,
                    "slug": "miscellaneous",
                    "description": "Tools and technologies that don't fit into other categories",
                    "groups": [
                        6
                    ],
                    "name": "Miscellaneous",
                    "priority": 10
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Open Graph.png",
            "website": "https://ogp.me",
            "pricing": [],
            "cpe": null
        }
    }
}
WPT test run for https://www.bakabu.at/singeland

WPT test run results: http://webpagetest.httparchive.org/results.php?test=261020_9E_5
Detected technologies:

{
    "detected": {
        "Ecommerce": "Drupal Commerce,Cart Functionality",
        "CMS": "Drupal 9",
        "Programming languages": "PHP",
        "JavaScript graphics": "Chart.js",
        "Video players": "Plyr",
        "UI frameworks": "Bootstrap 4.,.,-beta",
        "JavaScript frameworks": "toastr 2.1.1",
        "Web servers": "Apache HTTP Server",
        "CDN": "Cloudflare,Unpkg,cdnjs",
        "Photo galleries": "PhotoSwipe",
        "JavaScript libraries": "PhotoSwipe,core-js 3.3.2,jQuery 3.6.,",
        "Caching": "Google PageSpeed 1.14.36.1",
        "Web server extensions": "Google PageSpeed 1.14.36.1",
        "Performance": "Google PageSpeed 1.14.36.1",
        "Hosting": "ALL-INKL",
        "Miscellaneous": "Open Graph,Popper"
    },
    "detected_apps": {
        "Drupal Commerce": "",
        "Cart Functionality": "",
        "Drupal": "9",
        "PHP": "",
        "Chart.js": "",
        "Plyr": "",
        "Bootstrap": "4.,.,-beta",
        "toastr": "2.1.1",
        "Apache HTTP Server": "",
        "Cloudflare": "",
        "PhotoSwipe": "",
        "core-js": "3.3.2",
        "Unpkg": "",
        "jQuery": "3.6.,",
        "Google PageSpeed": "1.14.36.1",
        "cdnjs": "",
        "ALL-INKL": "",
        "Open Graph": "",
        "Popper": ""
    },
    "detected_technologies": {
        "Drupal Commerce": {
            "name": "Drupal Commerce",
            "description": "Drupal Commerce is open-source ecommerce software that augments the content management system Drupal.",
            "slug": "drupal-commerce",
            "categories": [
                {
                    "id": 6,
                    "slug": "ecommerce",
                    "description": "Platforms providing the infrastructure to sell products and services online, managing everything from product catalogs to payments",
                    "groups": [
                        1
                    ],
                    "name": "Ecommerce",
                    "priority": 1
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Drupal Commerce.png",
            "website": "https://drupalcommerce.org",
            "pricing": [],
            "cpe": "cpe:2.3:a:commerceguys:commerce:*:*:*:*:*:*:*:*"
        },
        "Cart Functionality": {
            "name": "Cart Functionality",
            "description": "Websites that have a shopping cart or checkout page, either using a known ecommerce platform or a custom solution.",
            "slug": "cart-functionality",
            "categories": [
                {
                    "id": 6,
                    "slug": "ecommerce",
                    "description": "Platforms providing the infrastructure to sell products and services online, managing everything from product catalogs to payments",
                    "groups": [
                        1
                    ],
                    "name": "Ecommerce",
                    "priority": 1
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Cart-generic.svg",
            "website": "https://www.wappalyzer.com/technologies/ecommerce/cart-functionality",
            "pricing": [],
            "cpe": null
        },
        "Drupal": {
            "name": "Drupal",
            "description": "Drupal is a free and open-source web content management framework.",
            "slug": "drupal",
            "categories": [
                {
                    "id": 1,
                    "slug": "cms",
                    "description": "Platforms used to create, manage, and modify content on a website without needing specialized technical knowledge",
                    "groups": [
                        3
                    ],
                    "name": "CMS",
                    "priority": 1
                }
            ],
            "confidence": 100,
            "version": "9",
            "icon": "Drupal.svg",
            "website": "https://www.drupal.org/",
            "pricing": [],
            "cpe": "cpe:2.3:a:drupal:drupal:*:*:*:*:*:*:*:*"
        },
        "PHP": {
            "name": "PHP",
            "description": "PHP is a general-purpose scripting language used for web development.",
            "slug": "php",
            "categories": [
                {
                    "id": 27,
                    "slug": "programming-languages",
                    "description": "Build website functionalities and backend services",
                    "groups": [
                        9
                    ],
                    "name": "Programming languages",
                    "priority": 5
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "PHP.svg",
            "website": "https://php.net",
            "pricing": [],
            "cpe": "cpe:2.3:a:php:php:*:*:*:*:*:*:*:*"
        },
        "Chart.js": {
            "name": "Chart.js",
            "description": "Chart.js is an open-source JavaScript library that allows you to draw different types of charts by using the HTML5 canvas element.",
            "slug": "chart-js",
            "categories": [
                {
                    "id": 25,
                    "slug": "javascript-graphics",
                    "description": "Libraries used to create visual elements on websites",
                    "groups": [
                        9
                    ],
                    "name": "JavaScript graphics",
                    "priority": 6
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Chart.js.svg",
            "website": "https://www.chartjs.org",
            "pricing": [],
            "cpe": null
        },
        "Plyr": {
            "name": "Plyr",
            "description": "Plyr is a simple, lightweight, accessible and customizable HTML5, YouTube and Vimeo media player that supports modern browsers.",
            "slug": "plyr",
            "categories": [
                {
                    "id": 14,
                    "slug": "video-players",
                    "description": "Tools that embed videos on websites",
                    "groups": [
                        10
                    ],
                    "name": "Video players",
                    "priority": 7
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Plyr.png",
            "website": "https://plyr.io",
            "pricing": [],
            "cpe": null
        },
        "Bootstrap": {
            "name": "Bootstrap",
            "description": "Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.",
            "slug": "bootstrap",
            "categories": [
                {
                    "id": 66,
                    "slug": "ui-frameworks",
                    "description": "Provide pre-built components to build user interfaces",
                    "groups": [
                        9
                    ],
                    "name": "UI frameworks",
                    "priority": 7
                }
            ],
            "confidence": 100,
            "version": "4.0.0-beta",
            "icon": "Bootstrap.svg",
            "website": "https://getbootstrap.com",
            "pricing": [],
            "cpe": "cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*"
        },
        "toastr": {
            "name": "toastr",
            "description": "toastr is a Javascript library for non-blocking notifications. The goal is to create a simple core library that can be customized and extended.",
            "slug": "toastr",
            "categories": [
                {
                    "id": 12,
                    "slug": "javascript-frameworks",
                    "description": "Software used for building dynamic web applications and user interfaces",
                    "groups": [
                        9
                    ],
                    "name": "JavaScript frameworks",
                    "priority": 8
                }
            ],
            "confidence": 100,
            "version": "2.1.1",
            "icon": "toastr.png",
            "website": "https://github.com/CodeSeven/toastr",
            "pricing": [],
            "cpe": null
        },
        "Apache HTTP Server": {
            "name": "Apache HTTP Server",
            "description": "Apache is a free and open-source cross-platform web server software.",
            "slug": "apache-http-server",
            "categories": [
                {
                    "id": 22,
                    "slug": "web-servers",
                    "description": "Software applications that deliver web pages to users' browsers",
                    "groups": [
                        7
                    ],
                    "name": "Web servers",
                    "priority": 8
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Apache.svg",
            "website": "https://httpd.apache.org/",
            "pricing": [],
            "cpe": "cpe:2.3:a:apache:http_server:*:*:*:*:*:*:*:*"
        },
        "Cloudflare": {
            "name": "Cloudflare",
            "description": "Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.",
            "slug": "cloudflare",
            "categories": [
                {
                    "id": 31,
                    "slug": "cdn",
                    "description": "(Content Delivery Network) Distribute website content globally to improve load times for users",
                    "groups": [
                        7
                    ],
                    "name": "CDN",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "CloudFlare.svg",
            "website": "https://www.cloudflare.com",
            "pricing": [],
            "cpe": null
        },
        "PhotoSwipe": {
            "name": "PhotoSwipe",
            "description": "PhotoSwipe is an open-source gallery to support JavaScript-based image zooming.",
            "slug": "photoswipe",
            "categories": [
                {
                    "id": 7,
                    "slug": "photo-galleries",
                    "description": "Platforms used to display images on a website",
                    "groups": [
                        3,
                        10
                    ],
                    "name": "Photo galleries",
                    "priority": 1
                },
                {
                    "id": 59,
                    "slug": "javascript-libraries",
                    "description": "Collections of pre-written JavaScript code",
                    "groups": [
                        9
                    ],
                    "name": "JavaScript libraries",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "PhotoSwipe.png",
            "website": "https://photoswipe.com",
            "pricing": [],
            "cpe": null
        },
        "core-js": {
            "name": "core-js",
            "description": "core-js is a modular standard library for JavaScript, with polyfills for cutting-edge ECMAScript features.",
            "slug": "core-js",
            "categories": [
                {
                    "id": 59,
                    "slug": "javascript-libraries",
                    "description": "Collections of pre-written JavaScript code",
                    "groups": [
                        9
                    ],
                    "name": "JavaScript libraries",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "3.3.2",
            "icon": "core-js.png",
            "website": "https://github.com/zloirock/core-js",
            "pricing": [],
            "cpe": null
        },
        "Unpkg": {
            "name": "Unpkg",
            "description": "Unpkg is a content delivery network for everything on npm.",
            "slug": "unpkg",
            "categories": [
                {
                    "id": 31,
                    "slug": "cdn",
                    "description": "(Content Delivery Network) Distribute website content globally to improve load times for users",
                    "groups": [
                        7
                    ],
                    "name": "CDN",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Unpkg.png",
            "website": "https://unpkg.com",
            "pricing": [],
            "cpe": null
        },
        "jQuery": {
            "name": "jQuery",
            "description": "jQuery is a JavaScript library which is a free, open-source software designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax.",
            "slug": "jquery",
            "categories": [
                {
                    "id": 59,
                    "slug": "javascript-libraries",
                    "description": "Collections of pre-written JavaScript code",
                    "groups": [
                        9
                    ],
                    "name": "JavaScript libraries",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "3.6.0",
            "icon": "jQuery.svg",
            "website": "https://jquery.com",
            "pricing": [],
            "cpe": "cpe:2.3:a:jquery:jquery:*:*:*:*:*:*:*:*"
        },
        "Google PageSpeed": {
            "name": "Google PageSpeed",
            "description": "Google PageSpeed is a family of tools designed to help websites performance optimisations.",
            "slug": "google-pagespeed",
            "categories": [
                {
                    "id": 23,
                    "slug": "caching",
                    "description": "Technologies that store frequently accessed data closer to the user to improve page load times",
                    "groups": [
                        7
                    ],
                    "name": "Caching",
                    "priority": 7
                },
                {
                    "id": 33,
                    "slug": "web-server-extensions",
                    "description": "Software that enhances the capabilities of web servers",
                    "groups": [
                        7
                    ],
                    "name": "Web server extensions",
                    "priority": 7
                },
                {
                    "id": 92,
                    "slug": "performance",
                    "description": "Tools that measure and optimize site speed",
                    "groups": [
                        7
                    ],
                    "name": "Performance",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "1.14.36.1",
            "icon": "Google PageSpeed.svg",
            "website": "https://developers.google.com/speed/pagespeed/mod",
            "pricing": [],
            "cpe": null
        },
        "cdnjs": {
            "name": "cdnjs",
            "description": "cdnjs is a free distributed JS library delivery service.",
            "slug": "cdnjs",
            "categories": [
                {
                    "id": 31,
                    "slug": "cdn",
                    "description": "(Content Delivery Network) Distribute website content globally to improve load times for users",
                    "groups": [
                        7
                    ],
                    "name": "CDN",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "cdnjs.svg",
            "website": "https://cdnjs.com",
            "pricing": [],
            "cpe": null
        },
        "ALL-INKL": {
            "name": "ALL-INKL",
            "description": "ALL-INKL is a German-based web hosting provider that promises to offer high-performance services for fair prices.",
            "slug": "all-inkl",
            "categories": [
                {
                    "id": 88,
                    "slug": "hosting",
                    "description": "Providers that offer server space for websites",
                    "groups": [
                        7
                    ],
                    "name": "Hosting",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "ALL-INKL.png",
            "website": "https://all-inkl.com",
            "pricing": [
                "low",
                "recurring"
            ],
            "cpe": null
        },
        "Open Graph": {
            "name": "Open Graph",
            "description": "Open Graph is a protocol that is used to integrate any web page into the social graph.",
            "slug": "open-graph",
            "categories": [
                {
                    "id": 19,
                    "slug": "miscellaneous",
                    "description": "Tools and technologies that don't fit into other categories",
                    "groups": [
                        6
                    ],
                    "name": "Miscellaneous",
                    "priority": 10
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Open Graph.png",
            "website": "https://ogp.me",
            "pricing": [],
            "cpe": null
        },
        "Popper": {
            "name": "Popper",
            "description": "Popper is a positioning engine, its purpose is to calculate the position of an element to make it possible to position it near a given reference element.",
            "slug": "popper",
            "categories": [
                {
                    "id": 19,
                    "slug": "miscellaneous",
                    "description": "Tools and technologies that don't fit into other categories",
                    "groups": [
                        6
                    ],
                    "name": "Miscellaneous",
                    "priority": 10
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Popper.svg",
            "website": "https://popper.js.org",
            "pricing": [],
            "cpe": null
        }
    }
}
WPT test run for https://account.magneticsprings.com/

WPT test run results: http://webpagetest.httparchive.org/results.php?test=261020_R0_6
Detected technologies:

{}

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant