Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improves Hyvä Themes listing #96

Merged
merged 5 commits into from
Mar 19, 2025
Merged

Conversation

wigman
Copy link

@wigman wigman commented Mar 14, 2025

This updates the Hyvä Theme listing to; include more results, add "ecommerce" as category, show more specific product url.

For context, I'm the owner/founder of this product.


Test websites:

wigman added 2 commits March 14, 2025 13:16
- Adds the Hyvä Checkout product, built for the Hyvä Theme
- Adds `window.hyva` to the `Hyva Themes` rules
Correct formatting of "js" keys
Copy link
Member

@tunetheweb tunetheweb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For manual testing, https://checkout-demo.hyva.io/onestep/checkout/ could be used.

You can add those to the PR request. I've added that site now so it should be tested automatically with these changes on the next commit.

- Changes Checkout category to 6 ("ecommerce")
- Adds category 6 to Hyvä Themes
Changes `window.hyva` to `hyva` in the `js` section of Hyvä Themes detection
@wigman
Copy link
Author

wigman commented Mar 14, 2025

For manual testing, https://checkout-demo.hyva.io/onestep/checkout/ could be used.

You can add those to the PR request. I've added that site now so it should be tested automatically with these changes on the next commit.

@tunetheweb Just to make sure we're aligned :) An empty cart in Magento (and therefore Hyvä) redirects back to the /checkout/cart page. That will not have Hyvä Checkout present, so the automated test wouldn't detect Hyvä Checkout.

Looks like the test result also does not pick up on the Hyvä Checkout at this time. If that's fine, then ignore me and resolve :)

@tunetheweb
Copy link
Member

@tunetheweb Just to make sure we're aligned :) An empty cart in Magento (and therefore Hyvä) redirects back to the /checkout/cart page. That will not have Hyvä Checkout present, so the automated test wouldn't detect Hyvä Checkout.

Looks like the test result also does not pick up on the Hyvä Checkout at this time. If that's fine, then ignore me and resolve :)

Since this instance of Wappalazer is only used for the HTTP Archive crawl, and it will crawl each page in a fresh session, the cart will always be empty. So will we never detect this? In which case what's the point of adding this detection that will never succeed?

@wigman
Copy link
Author

wigman commented Mar 14, 2025

@tunetheweb ah I was somehow convinced the browser plugin feeds back data to the service, so actual visitors would cause it to be detected.
If that not the case, then we need to add another fingerprint based on cookie or local storage data. I think that’s possible, but a bit less straightforward.

@tunetheweb
Copy link
Member

@tunetheweb ah I was somehow convinced the browser plugin feeds back data to the service, so actual visitors would cause it to be detected. If that not the case, then we need to add another fingerprint based on cookie or local storage data. I think that’s possible, but a bit less straightforward.

No unfortunately Wappalyzer went closed source so no way to add that AFAIK. This is a fork from before they went closed source.

- Removes the Hyvä Checkout entry until a better fingerprint has been found
@wigman wigman changed the title Add Hyvä Checkout to technologies, improves Hyvä Themes Improves Hyvä Themes listing Mar 17, 2025
@wigman
Copy link
Author

wigman commented Mar 17, 2025

Thanks for the guidance @tunetheweb. I've removed Checkout for now, until we've thought of a better fingerprint.
Ideally we could check localstorage, but I don't believe that's supported right? Just cookies?

I've reduced the scope of this PR to just the Theme update for now so that it can be merged + closed.

Copy link

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

WPT test run results: http://webpagetest.httparchive.org/results.php?test=250317_9Y_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://checkout-demo.hyva.io/onestep/checkout/

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

{
    "detected": {
        "Ecommerce": "Magento 2,Cart Functionality,Hyva Themes",
        "CMS": "Magento 2",
        "Databases": "MySQL",
        "CRM": "Salesforce",
        "Programming languages": "PHP",
        "Ecommerce frontends": "Hyva Themes",
        "UI frameworks": "Tailwind CSS",
        "Web servers": "Nginx",
        "Reverse proxies": "Nginx",
        "JavaScript frameworks": "Alpine.js 3.14.6",
        "Webmail": "Google Workspace",
        "Email": "Google Workspace"
    },
    "detected_apps": {
        "Magento": "2",
        "Cart Functionality": "",
        "MySQL": "",
        "Salesforce": "",
        "PHP": "",
        "Hyva Themes": "",
        "Tailwind CSS": "",
        "Nginx": "",
        "Alpine.js": "3.14.6",
        "Google Workspace": ""
    },
    "detected_technologies": {
        "Magento": {
            "name": "Magento",
            "description": "Magento is an open-source ecommerce platform written in PHP.",
            "slug": "magento",
            "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
                },
                {
                    "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": "2",
            "icon": "Magento.svg",
            "website": "https://magento.com",
            "pricing": [],
            "cpe": "cpe:2.3:a:magento:magento:*:*:*:*:*:*:*:*"
        },
        "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
        },
        "MySQL": {
            "name": "MySQL",
            "description": "MySQL is an open-source relational database management system.",
            "slug": "mysql",
            "categories": [
                {
                    "id": 34,
                    "slug": "databases",
                    "description": "Software used to store website information",
                    "groups": [
                        7
                    ],
                    "name": "Databases",
                    "priority": 5
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "MySQL.svg",
            "website": "https://mysql.com",
            "pricing": [],
            "cpe": "cpe:2.3:a:mysql:mysql:*:*:*:*:*:*:*:*"
        },
        "Salesforce": {
            "name": "Salesforce",
            "description": "Salesforce is a cloud computing service software (SaaS) that specializes in customer relationship management (CRM).",
            "slug": "salesforce",
            "categories": [
                {
                    "id": 53,
                    "slug": "crm",
                    "description": "(Customer Relationship Management) Systems that help manage customer interactions",
                    "groups": [
                        2,
                        16
                    ],
                    "name": "CRM",
                    "priority": 5
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Salesforce.svg",
            "website": "https://www.salesforce.com",
            "pricing": [
                "low"
            ],
            "cpe": "cpe:2.3:a:salesforce:*:*:*:*:*:*:*:*:*"
        },
        "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:*:*:*:*:*:*:*:*"
        },
        "Hyva Themes": {
            "name": "Hyva Themes",
            "description": "Hyva Themes is a performance-optimised theme for Magento 2 which eliminated the third-party libraries and having only two dependencies Alpine.js and Tailwind CSS.",
            "slug": "hyva-themes",
            "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
                },
                {
                    "id": 108,
                    "slug": "ecommerce-frontends",
                    "description": "The user interface for online stores",
                    "groups": [
                        1
                    ],
                    "name": "Ecommerce frontends",
                    "priority": 6
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Hyva Themes.svg",
            "website": "https://www.hyva.io/hyva-theme-license.html",
            "pricing": [
                "onetime",
                "low"
            ],
            "cpe": null
        },
        "Tailwind CSS": {
            "name": "Tailwind CSS",
            "description": "Tailwind is a utility-first CSS framework.",
            "slug": "tailwind-css",
            "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": "tailwindcss.svg",
            "website": "https://tailwindcss.com/",
            "pricing": [],
            "cpe": null
        },
        "Nginx": {
            "name": "Nginx",
            "description": "Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.",
            "slug": "nginx",
            "categories": [
                {
                    "id": 22,
                    "slug": "web-servers",
                    "description": "Software applications that deliver web pages to users' browsers",
                    "groups": [
                        7
                    ],
                    "name": "Web servers",
                    "priority": 8
                },
                {
                    "id": 64,
                    "slug": "reverse-proxies",
                    "description": "Intercept client requests and forward them to the appropriate server",
                    "groups": [
                        7
                    ],
                    "name": "Reverse proxies",
                    "priority": 7
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Nginx.svg",
            "website": "https://nginx.org/en",
            "pricing": [],
            "cpe": "cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*"
        },
        "Alpine.js": {
            "name": "Alpine.js",
            "description": null,
            "slug": "alpine-js",
            "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": "3.14.6",
            "icon": "Alpine.js.png",
            "website": "https://github.com/alpinejs/alpine",
            "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
        }
    }
}

@tunetheweb tunetheweb merged commit b9d992b into HTTPArchive:main Mar 19, 2025
2 checks passed
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.

2 participants