Add Hackle detection - #513
Open
hellolimo-hackle wants to merge 1 commit into
Open
hellolimo-hackle wants to merge 1 commit into
hellolimo-hackle wants to merge 1 commit into
Conversation
Hackle is an experimentation and growth platform (A/B testing, feature flags, product analytics, behavioral messaging) widely used in South Korea. Markers were verified on 13 live third-party sites covering every install path of the SDK: snippet, UMD build, GTM build and Cafe24 storefront plugin. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add Hackle detection
Adds a fingerprint for Hackle, an experimentation and growth platform (A/B testing, feature flags, product analytics, behavioral messaging). It is widely adopted in South Korea and is currently not detected by this ruleset, while comparable tools (Optimizely, VWO, AB Tasty, Amplitude) are.
Disclosure: I work at Hackle. Every marker below was observed on a live third-party site in a real browser, not copied from internal documentation.
Categories
74A/B Testing ·85Feature management ·10Analytics ·32Marketing automation ·53CRMVerified sites
The SDK ships in several shapes (snippet, UMD build, GTM build, Cafe24 storefront plugin), so markers were verified across all of them.
window.hackleClientwindow.hackleClientwindow._hackle,window.hackleClient,fastly.jsdelivr.net/npm/@hackler/javascript-sdk@11.56.0window._hackle,cdn2.hackle.io/npm/@hackler/javascript-sdk@11.39.0window.Hackle,window.hackleClient,window._hackle,cdn2.hackle.io/npm/@hackler/javascript-sdk@11.38.0window.Hackle,window.hackleClient,cdn2.hackle.io/npm/@hackler/javascript-sdk@11.36.0window.HacklePlugin,window._hackleCafe24App,static.hackle.io/sdk/cafe24/plugin/0.0.10/bridge.jswindow.HacklePlugin,window.HACKLE_PRELOAD_CLIENT,window.hackleClient,static.hackle.io/sdk/cafe24/plugin/0.0.10/window.HacklePlugin,window._hackleCafe24App,window.HACKLE_PRELOAD_CLIENT,static.hackle.io/sdk/cafe24/plugin/0.0.3/bridge.jswindow.HacklePlugin,static.hackle.io/sdk/cafe24/plugin/0.0.9/bridge.jsHACKLE_SDK_KEYin HTMLsdk-api.hackle.io,event-api.hackle.io(matchesxhronly)sdk-api.hackle.io,event-api.hackle.io(matchesxhronly)Notes on the marker choices
Six JS globals, not one. The global depends on the install path:
hackleClient(snippet),Hackle(UMD build),_hackle(GTM build),HacklePlugin/_hackleCafe24App/HACKLE_PRELOAD_CLIENT(Cafe24 storefront plugin). Matching onlyhackleClientmisses webtour.com and every Cafe24 storefront.@hackler/javascript-sdk— note thehacklerspelling. It is the npm package name, so it matches regardless of CDN (jsDelivr, cdn2.hackle.io, self-hosted mirrors) and yields the version. Ahackle.io-only pattern misses sites loading the SDK from jsDelivr, such as store.hanssem.com.xhris host-scoped rather than\.hackle\.io. A broad domain pattern also matchesdocs.hackle.io, the vendor's documentation site, which does not load the SDK — verified: no globals, no script tags, detection came only from same-origin requests. The scoped list covers every SDK endpoint observed.xhrwill rarely fire in practice and is only a fallback. The SDK bundle (@hackler/javascript-sdk@11.56.0) has 1XMLHttpRequest, 4fetch(and 5sendBeaconcall sites, and Chrome does not classify the latter two asxhr. Detection is carried byjs,scriptSrcandhtml; the two sites at the bottom of the table above are the ones that depend on this fallback.Only one
htmlpattern, deliberately. Integration-code strings double as documentation strings. Four candidates were tested against the vendor's own docs and two were dropped after they matched:Hackle\.createInstance\(— 12 matches ondocs.hackle.io/en/development-guide/javascripthackleClient\.track\(— matches the code sample ondocs.hackle.io/development-guide/quick-startHACKLE_SDK_KEYwas checked against the same pages and does not appear.hackle.io/ko/blogdoes not match any pattern in this fingerprint.hackle.ioitself is detected because it genuinely runs the SDK.Icon
Hackle.png, 32×32, from the official favicon.🤖 Generated with Claude Code