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

Fix React Router detection and update Remix implies field #69

Merged
merged 2 commits into from
Oct 15, 2024

Conversation

brookslybrand
Copy link

  • Updates React Router detection to use __reactRouterVersion
  • Updates Remix to imply React Router (since all Remix apps use React Router)

Test websites:

Copy link

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

WPT test run results: http://webpagetest.httparchive.org/results.php?test=241015_4C_7
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",
                    "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",
                    "groups": [
                        9
                    ],
                    "name": "JavaScript libraries",
                    "priority": 9
                },
                {
                    "id": 78,
                    "slug": "rum",
                    "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",
                    "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",
                    "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",
                    "groups": [
                        4
                    ],
                    "name": "Webmail",
                    "priority": 2
                },
                {
                    "id": 75,
                    "slug": "email",
                    "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",
                    "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",
                    "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",
                    "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",
                    "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",
                    "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://chatgpt.com/

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

{
    "detected": {
        "JavaScript frameworks": "React,React Router 6",
        "Web frameworks": "Remix",
        "Web servers": "Remix",
        "Customer data platform": "Segment",
        "RUM": "Datadog",
        "Analytics": "Datadog",
        "JavaScript libraries": "core-js 3.32.2",
        "Security": "HSTS,Cloudflare Bot Management",
        "CDN": "Cloudflare",
        "Miscellaneous": "Open Graph"
    },
    "detected_apps": {
        "React": "",
        "Remix": "",
        "React Router": "6",
        "Segment": "",
        "Datadog": "",
        "core-js": "3.32.2",
        "HSTS": "",
        "Cloudflare Bot Management": "",
        "Cloudflare": "",
        "Open Graph": ""
    },
    "detected_technologies": {
        "React": {
            "name": "React",
            "description": "React is an open-source JavaScript library for building user interfaces or UI components.",
            "slug": "react",
            "categories": [
                {
                    "id": 12,
                    "slug": "javascript-frameworks",
                    "groups": [
                        9
                    ],
                    "name": "JavaScript frameworks",
                    "priority": 8
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "React.svg",
            "website": "https://reactjs.org",
            "pricing": [],
            "cpe": "cpe:2.3:a:facebook:react:*:*:*:*:*:*:*:*"
        },
        "Remix": {
            "name": "Remix",
            "description": "Remix is a React framework used for server-side rendering (SSR).",
            "slug": "remix",
            "categories": [
                {
                    "id": 18,
                    "slug": "web-frameworks",
                    "groups": [
                        9
                    ],
                    "name": "Web frameworks",
                    "priority": 7
                },
                {
                    "id": 22,
                    "slug": "web-servers",
                    "groups": [
                        7
                    ],
                    "name": "Web servers",
                    "priority": 8
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Remix.svg",
            "website": "https://remix.run/",
            "pricing": [],
            "cpe": null
        },
        "React Router": {
            "name": "React Router",
            "description": "React Router provides declarative routing for React.",
            "slug": "react-router",
            "categories": [
                {
                    "id": 12,
                    "slug": "javascript-frameworks",
                    "groups": [
                        9
                    ],
                    "name": "JavaScript frameworks",
                    "priority": 8
                }
            ],
            "confidence": 100,
            "version": "6",
            "icon": "React Router.svg",
            "website": "https://reactrouter.com",
            "pricing": [],
            "cpe": null
        },
        "Segment": {
            "name": "Segment",
            "description": "Segment is a customer data platform (CDP) that helps you collect, clean, and control your customer data.",
            "slug": "segment",
            "categories": [
                {
                    "id": 97,
                    "slug": "customer-data-platform",
                    "groups": [
                        2,
                        8
                    ],
                    "name": "Customer data platform",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Segment.svg",
            "website": "https://segment.com",
            "pricing": [
                "mid",
                "freemium",
                "recurring"
            ],
            "cpe": null
        },
        "Datadog": {
            "name": "Datadog",
            "description": "Datadog is a SaaS-based monitoring and analytics platform for large-scale applications and infrastructure.",
            "slug": "datadog",
            "categories": [
                {
                    "id": 78,
                    "slug": "rum",
                    "groups": [
                        2
                    ],
                    "name": "RUM",
                    "priority": 9
                },
                {
                    "id": 10,
                    "slug": "analytics",
                    "groups": [
                        8
                    ],
                    "name": "Analytics",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Datadog.svg",
            "website": "https://www.datadoghq.com",
            "pricing": [
                "low",
                "payg",
                "recurring",
                "freemium"
            ],
            "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",
                    "groups": [
                        9
                    ],
                    "name": "JavaScript libraries",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "3.32.2",
            "icon": "core-js.png",
            "website": "https://github.com/zloirock/core-js",
            "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",
                    "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
        },
        "Cloudflare Bot Management": {
            "name": "Cloudflare Bot Management",
            "description": "Cloudflare bot management solution identifies and mitigates automated traffic to protect websites from bad bots.",
            "slug": "cloudflare-bot-management",
            "categories": [
                {
                    "id": 16,
                    "slug": "security",
                    "groups": [
                        11
                    ],
                    "name": "Security",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "CloudFlare.svg",
            "website": "https://www.cloudflare.com/en-gb/products/bot-management/",
            "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",
                    "groups": [
                        7
                    ],
                    "name": "CDN",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "CloudFlare.svg",
            "website": "https://www.cloudflare.com",
            "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",
                    "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://shopify.com/

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

{
    "detected": {
        "Ecommerce": "Cart Functionality,Shopify",
        "CMS": "Shopify",
        "Webmail": "Proton Mail,Apple iCloud Mail,Google Workspace",
        "JavaScript frameworks": "React,React Router 6",
        "Web frameworks": "Remix",
        "Web servers": "Remix",
        "Payment processors": "Stripe",
        "JavaScript libraries": "core-js 3.0.0",
        "Performance": "Priority Hints",
        "Documentation": "Zendesk",
        "Issue trackers": "Zendesk",
        "Live chat": "Zendesk",
        "Email": "Sendgrid,Google Workspace",
        "Security": "HSTS",
        "Tag managers": "Google Tag Manager",
        "Analytics": "Google Analytics,Facebook Pixel 2.9.171,Dreamdata",
        "Marketing automation": "Dreamdata",
        "CDN": "Cloudflare",
        "Miscellaneous": "Open Graph,HTTP/3,DocuSign"
    },
    "detected_apps": {
        "Cart Functionality": "",
        "Shopify": "",
        "Proton Mail": "",
        "Apple iCloud Mail": "",
        "React": "",
        "Remix": "",
        "React Router": "6",
        "Stripe": "",
        "core-js": "3.0.0",
        "Priority Hints": "",
        "Zendesk": "",
        "Sendgrid": "",
        "HSTS": "",
        "Google Workspace": "",
        "Google Tag Manager": "",
        "Google Analytics": "",
        "Facebook Pixel": "2.9.171",
        "Dreamdata": "",
        "Cloudflare": "",
        "Open Graph": "",
        "HTTP/3": "",
        "DocuSign": ""
    },
    "detected_technologies": {
        "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",
                    "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
        },
        "Shopify": {
            "name": "Shopify",
            "description": "Shopify is a subscription-based software that allows anyone to set up an online store and sell their products. Shopify store owners can also sell in physical locations using Shopify POS, a point-of-sale app and accompanying hardware.",
            "slug": "shopify",
            "categories": [
                {
                    "id": 6,
                    "slug": "ecommerce",
                    "groups": [
                        1
                    ],
                    "name": "Ecommerce",
                    "priority": 1
                },
                {
                    "id": 1,
                    "slug": "cms",
                    "groups": [
                        3
                    ],
                    "name": "CMS",
                    "priority": 1
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Shopify.svg",
            "website": "https://shopify.com",
            "pricing": [
                "low",
                "recurring"
            ],
            "cpe": null
        },
        "Proton Mail": {
            "name": "Proton Mail",
            "description": "Proton Mail is the world’s largest secure email service with over 70 million users. Available on Web, iOS, Android, and desktop. Protected by Swiss privacy law.",
            "slug": "proton-mail",
            "categories": [
                {
                    "id": 30,
                    "slug": "webmail",
                    "groups": [
                        4
                    ],
                    "name": "Webmail",
                    "priority": 2
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Proton Mail.svg",
            "website": "https://proton.me/mail",
            "pricing": [],
            "cpe": null
        },
        "Apple iCloud Mail": {
            "name": "Apple iCloud Mail",
            "description": "Apple iCloud Mail is a webmail service provided by Apple, Inc.",
            "slug": "apple-icloud-mail",
            "categories": [
                {
                    "id": 30,
                    "slug": "webmail",
                    "groups": [
                        4
                    ],
                    "name": "Webmail",
                    "priority": 2
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Apple.svg",
            "website": "https://www.apple.com/icloud/",
            "pricing": [],
            "cpe": null
        },
        "React": {
            "name": "React",
            "description": "React is an open-source JavaScript library for building user interfaces or UI components.",
            "slug": "react",
            "categories": [
                {
                    "id": 12,
                    "slug": "javascript-frameworks",
                    "groups": [
                        9
                    ],
                    "name": "JavaScript frameworks",
                    "priority": 8
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "React.svg",
            "website": "https://reactjs.org",
            "pricing": [],
            "cpe": "cpe:2.3:a:facebook:react:*:*:*:*:*:*:*:*"
        },
        "Remix": {
            "name": "Remix",
            "description": "Remix is a React framework used for server-side rendering (SSR).",
            "slug": "remix",
            "categories": [
                {
                    "id": 18,
                    "slug": "web-frameworks",
                    "groups": [
                        9
                    ],
                    "name": "Web frameworks",
                    "priority": 7
                },
                {
                    "id": 22,
                    "slug": "web-servers",
                    "groups": [
                        7
                    ],
                    "name": "Web servers",
                    "priority": 8
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Remix.svg",
            "website": "https://remix.run/",
            "pricing": [],
            "cpe": null
        },
        "React Router": {
            "name": "React Router",
            "description": "React Router provides declarative routing for React.",
            "slug": "react-router",
            "categories": [
                {
                    "id": 12,
                    "slug": "javascript-frameworks",
                    "groups": [
                        9
                    ],
                    "name": "JavaScript frameworks",
                    "priority": 8
                }
            ],
            "confidence": 100,
            "version": "6",
            "icon": "React Router.svg",
            "website": "https://reactrouter.com",
            "pricing": [],
            "cpe": null
        },
        "Stripe": {
            "name": "Stripe",
            "description": "Stripe offers online payment processing for internet businesses as well as fraud prevention, invoicing and subscription management.",
            "slug": "stripe",
            "categories": [
                {
                    "id": 41,
                    "slug": "payment-processors",
                    "groups": [
                        1
                    ],
                    "name": "Payment processors",
                    "priority": 8
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Stripe.svg",
            "website": "https://stripe.com",
            "pricing": [
                "payg"
            ],
            "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",
                    "groups": [
                        9
                    ],
                    "name": "JavaScript libraries",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "3.0.0",
            "icon": "core-js.png",
            "website": "https://github.com/zloirock/core-js",
            "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",
                    "groups": [
                        7
                    ],
                    "name": "Performance",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Priority Hints.svg",
            "website": "https://wicg.github.io/priority-hints/",
            "pricing": [],
            "cpe": null
        },
        "Zendesk": {
            "name": "Zendesk",
            "description": "Zendesk is a cloud-based help desk management solution offering customizable tools to build customer service portal, knowledge base and online communities.",
            "slug": "zendesk",
            "categories": [
                {
                    "id": 4,
                    "slug": "documentation",
                    "groups": [
                        3
                    ],
                    "name": "Documentation",
                    "priority": 2
                },
                {
                    "id": 13,
                    "slug": "issue-trackers",
                    "groups": [
                        3,
                        18
                    ],
                    "name": "Issue trackers",
                    "priority": 2
                },
                {
                    "id": 52,
                    "slug": "live-chat",
                    "groups": [
                        4,
                        16
                    ],
                    "name": "Live chat",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Zendesk.svg",
            "website": "https://zendesk.com",
            "pricing": [
                "low"
            ],
            "cpe": null
        },
        "Sendgrid": {
            "name": "Sendgrid",
            "description": "SendGrid is a cloud-based email delivery platform for transactional and marketing emails.",
            "slug": "sendgrid",
            "categories": [
                {
                    "id": 75,
                    "slug": "email",
                    "groups": [
                        4,
                        2
                    ],
                    "name": "Email",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "SendGrid.svg",
            "website": "https://sendgrid.com/",
            "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",
                    "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",
                    "groups": [
                        4
                    ],
                    "name": "Webmail",
                    "priority": 2
                },
                {
                    "id": 75,
                    "slug": "email",
                    "groups": [
                        4,
                        2
                    ],
                    "name": "Email",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Google.svg",
            "website": "https://workspace.google.com/",
            "pricing": [],
            "cpe": null
        },
        "Google Tag Manager": {
            "name": "Google Tag Manager",
            "description": "Google Tag Manager is a tag management system (TMS) that allows you to quickly and easily update measurement codes and related code fragments collectively known as tags on your website or mobile app.",
            "slug": "google-tag-manager",
            "categories": [
                {
                    "id": 42,
                    "slug": "tag-managers",
                    "groups": [
                        8
                    ],
                    "name": "Tag managers",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Google Tag Manager.svg",
            "website": "https://www.google.com/tagmanager",
            "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",
                    "groups": [
                        8
                    ],
                    "name": "Analytics",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Google Analytics.svg",
            "website": "https://google.com/analytics",
            "pricing": [],
            "cpe": null
        },
        "Facebook Pixel": {
            "name": "Facebook Pixel",
            "description": "Facebook pixel is an analytics tool that allows you to measure the effectiveness of your advertising.",
            "slug": "facebook-pixel",
            "categories": [
                {
                    "id": 10,
                    "slug": "analytics",
                    "groups": [
                        8
                    ],
                    "name": "Analytics",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "2.9.171",
            "icon": "Facebook.svg",
            "website": "https://facebook.com",
            "pricing": [],
            "cpe": null
        },
        "Dreamdata": {
            "name": "Dreamdata",
            "description": "Dreamdata is a B2B revenue attribution platform.",
            "slug": "dreamdata",
            "categories": [
                {
                    "id": 32,
                    "slug": "marketing-automation",
                    "groups": [
                        2
                    ],
                    "name": "Marketing automation",
                    "priority": 9
                },
                {
                    "id": 10,
                    "slug": "analytics",
                    "groups": [
                        8
                    ],
                    "name": "Analytics",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Dreamdata.svg",
            "website": "https://dreamdata.io",
            "pricing": [
                "freemium",
                "mid",
                "recurring"
            ],
            "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",
                    "groups": [
                        7
                    ],
                    "name": "CDN",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "CloudFlare.svg",
            "website": "https://www.cloudflare.com",
            "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",
                    "groups": [
                        6
                    ],
                    "name": "Miscellaneous",
                    "priority": 10
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Open Graph.png",
            "website": "https://ogp.me",
            "pricing": [],
            "cpe": null
        },
        "HTTP/3": {
            "name": "HTTP/3",
            "description": "HTTP/3 is the third major version of the Hypertext Transfer Protocol used to exchange information on the World Wide Web.",
            "slug": "http-3",
            "categories": [
                {
                    "id": 19,
                    "slug": "miscellaneous",
                    "groups": [
                        6
                    ],
                    "name": "Miscellaneous",
                    "priority": 10
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "HTTP3.svg",
            "website": "https://httpwg.org/",
            "pricing": [],
            "cpe": null
        },
        "DocuSign": {
            "name": "DocuSign",
            "description": "DocuSign allows organisations to manage electronic agreements.",
            "slug": "docusign",
            "categories": [
                {
                    "id": 19,
                    "slug": "miscellaneous",
                    "groups": [
                        6
                    ],
                    "name": "Miscellaneous",
                    "priority": 10
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "DocuSign.svg",
            "website": "https://www.docusign.com",
            "pricing": [
                "low",
                "recurring"
            ],
            "cpe": null
        }
    }
}
WPT test run for https://reactrouter.com/

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

{
    "detected": {
        "Caching": "Varnish",
        "UI frameworks": "Tailwind CSS",
        "JavaScript frameworks": "React,React Router 6",
        "Web frameworks": "Remix",
        "Web servers": "Remix",
        "PaaS": "Fly.io",
        "Performance": "Priority Hints",
        "Security": "HSTS",
        "CDN": "Cloudflare",
        "Miscellaneous": "HTTP/3"
    },
    "detected_apps": {
        "Varnish": "",
        "Tailwind CSS": "",
        "React": "",
        "Remix": "",
        "React Router": "6",
        "Fly.io": "",
        "Priority Hints": "",
        "HSTS": "",
        "Cloudflare": "",
        "HTTP/3": ""
    },
    "detected_technologies": {
        "Varnish": {
            "name": "Varnish",
            "description": "Varnish is a reverse caching proxy.",
            "slug": "varnish",
            "categories": [
                {
                    "id": 23,
                    "slug": "caching",
                    "groups": [
                        7
                    ],
                    "name": "Caching",
                    "priority": 7
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Varnish.svg",
            "website": "https://www.varnish-cache.org",
            "pricing": [],
            "cpe": "cpe:2.3:a:varnish-software:varnish_cache:*:*:*:*:*:*:*:*"
        },
        "Tailwind CSS": {
            "name": "Tailwind CSS",
            "description": "Tailwind is a utility-first CSS framework.",
            "slug": "tailwind-css",
            "categories": [
                {
                    "id": 66,
                    "slug": "ui-frameworks",
                    "groups": [
                        9
                    ],
                    "name": "UI frameworks",
                    "priority": 7
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "tailwindcss.svg",
            "website": "https://tailwindcss.com/",
            "pricing": [],
            "cpe": null
        },
        "React": {
            "name": "React",
            "description": "React is an open-source JavaScript library for building user interfaces or UI components.",
            "slug": "react",
            "categories": [
                {
                    "id": 12,
                    "slug": "javascript-frameworks",
                    "groups": [
                        9
                    ],
                    "name": "JavaScript frameworks",
                    "priority": 8
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "React.svg",
            "website": "https://reactjs.org",
            "pricing": [],
            "cpe": "cpe:2.3:a:facebook:react:*:*:*:*:*:*:*:*"
        },
        "Remix": {
            "name": "Remix",
            "description": "Remix is a React framework used for server-side rendering (SSR).",
            "slug": "remix",
            "categories": [
                {
                    "id": 18,
                    "slug": "web-frameworks",
                    "groups": [
                        9
                    ],
                    "name": "Web frameworks",
                    "priority": 7
                },
                {
                    "id": 22,
                    "slug": "web-servers",
                    "groups": [
                        7
                    ],
                    "name": "Web servers",
                    "priority": 8
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Remix.svg",
            "website": "https://remix.run/",
            "pricing": [],
            "cpe": null
        },
        "React Router": {
            "name": "React Router",
            "description": "React Router provides declarative routing for React.",
            "slug": "react-router",
            "categories": [
                {
                    "id": 12,
                    "slug": "javascript-frameworks",
                    "groups": [
                        9
                    ],
                    "name": "JavaScript frameworks",
                    "priority": 8
                }
            ],
            "confidence": 100,
            "version": "6",
            "icon": "React Router.svg",
            "website": "https://reactrouter.com",
            "pricing": [],
            "cpe": null
        },
        "Fly.io": {
            "name": "Fly.io",
            "description": "Fly is a platform for running full stack apps and databases.",
            "slug": "fly-io",
            "categories": [
                {
                    "id": 62,
                    "slug": "paas",
                    "groups": [
                        7
                    ],
                    "name": "PaaS",
                    "priority": 8
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "Fly.io.png",
            "website": "https://fly.io",
            "pricing": [
                "freemium",
                "payg"
            ],
            "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",
                    "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",
                    "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
        },
        "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",
                    "groups": [
                        7
                    ],
                    "name": "CDN",
                    "priority": 9
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "CloudFlare.svg",
            "website": "https://www.cloudflare.com",
            "pricing": [],
            "cpe": null
        },
        "HTTP/3": {
            "name": "HTTP/3",
            "description": "HTTP/3 is the third major version of the Hypertext Transfer Protocol used to exchange information on the World Wide Web.",
            "slug": "http-3",
            "categories": [
                {
                    "id": 19,
                    "slug": "miscellaneous",
                    "groups": [
                        6
                    ],
                    "name": "Miscellaneous",
                    "priority": 10
                }
            ],
            "confidence": 100,
            "version": "",
            "icon": "HTTP3.svg",
            "website": "https://httpwg.org/",
            "pricing": [],
            "cpe": null
        }
    }
}

"(?:/react-router(@|/)([\\d.]+)(?:/[a-z]+)?)?/react-router(?:\\.min)?\\.js\\;version:\\2"
],
"js": {
"__reactRouterVersion": "([\\d\\.]+)\\;version:\\1"
Copy link
Member

Choose a reason for hiding this comment

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

This was only included in version 6. Any reason not to include the other detection too to pick up older versions?

Then again the number of sites found with this is only a couple of hundred so not massive deal to lose them.

Copy link
Author

Choose a reason for hiding this comment

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

Yeah, it's more the fact that the old regex really wasn't picking up much of anything at all. I'm fine with leaving it in, I just figured

  1. We're not losing much
  2. The definition remains simple and we're not carrying a legacy definition devoid of this context

Happy to revert this deletion if you feel strongly about though

Copy link
Member

Choose a reason for hiding this comment

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

Nope that all makes sense to me. Just making sure you’d considered that. Let’s merge.

@tunetheweb tunetheweb merged commit f7d0508 into HTTPArchive:main Oct 15, 2024
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