PageSourceSearch

https://firgi.kr/app/Eclog/js/cid.generate.js?vs=9e95f7f9b2aa3090fc326c60c25857b0&u=firgi.1

js firgi.kr collected 2026-09-26 05:06:00 UTC 11,558 bytes, 327 lines download raw bytes

1// external_id
2if (typeof CRYPT === 'undefined') {
3var CRYPT = {
4    SHA256: function (key, successCallback, errorCallback) {
5        if (window.location.protocol === "https:" && window.crypto && window.crypto.subtle) {
6            this._SHA256_WEB_CRYPTO_API(key, successCallback, function () {
7                    this._SHA256_CRYPTO_JS(key, successCallback, function () {
8                            this._SHA256_NATIVE_JS(key, successCallback, errorCallback);
9                        }.bind(this)
10                    );
11                }.bind(this)
12            );
13        } else {
14            this._SHA256_CRYPTO_JS(key, successCallback, function () {
15                    this._SHA256_NATIVE_JS(key, successCallback, errorCallback);
16                }.bind(this)
17            );
18        }
19    },
20
21    _SHA256_WEB_CRYPTO_API: function (key, successCallback, errorCallback) {
22        try {
23            const encoder = new TextEncoder();
24            const data = encoder.encode(key);
25            window.crypto.subtle.digest('SHA-256', data).then(function (hashBuffer) {
26                    const hashArray = Array.from(new Uint8Array(hashBuffer));
27                    const hash = hashArray.map(byte => byte.toString(16).padStart(2, '0')).join('');
28                    successCallback(hash);
29                }
30            ).catch(function (error) {
31                    errorCallback('SHA-256 Error - _SHA256_WEB_CRYPTO_API : ' + error);
32                }
33            );
34        } catch (error) {
35            errorCallback('SHA-256 Error -_SHA256_WEB_CRYPTO_API : ' + error);
36        }
37    },
38
39    _SHA256_CRYPTO_JS: function (key, successCallback, errorCallback) {
40        var script = document.createElement('script');
41        script.type = 'text/javascript';
42        script.src = '/app/Eclog/js/crypto-js.min.js';
43        script.onload = function () {
44            try {
45                const hash = CryptoJS.SHA256(key);
46                successCallback(hash.toString(CryptoJS.enc.Hex));
47            } catch (error) {
48                errorCallback('SHA-256 Error - _SHA256_CRYPTO_JS : ' + error);
49            }
50        };
51        document.head.appendChild(script);
52    },
53
54    _SHA256_NATIVE_JS: function (key, successCallback, errorCallback) {
55        var script = document.createElement('script');
56        script.type = 'text/javascript';
57        script.src = '/app/Eclog/js/crypto-sha256-native.min.js';
58        script.onload = function () {
59            try {
60                const hash = SHA256(key);
61                successCallback(hash);
62            } catch (error) {
63                errorCallback('SHA-256 Error - _SHA256_NATIVE_JS : ' + error);
64            }
65        };
66        document.head.appendChild(script);
67    }
68};
69}
70if (typeof ECLOG === 'undefined') {
71var ECLOG = {
72    COMMON: {
73        _config: {
74            cookiePath: "/",
75        },
76        _getCookie: function (name) {
77            var value = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
78            if (value) {
79                return value[2];
80            } else {
81                return sessionStorage.getItem(name);
82            }
83        },
84        _setCookie: function (name, val, days) {
85            const domain = ECLOG.COMMON._getDomain();
86            let expires = "";
87            if (days) {
88                const date = new Date();
89                date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
90                expires = "; expires=" + date.toUTCString();
91            }
92            document.cookie = name + "=" + val + ";path=" + ECLOG.COMMON._config.cookiePath + ";domain=" + domain + expires;
93            sessionStorage.setItem(name, val);
94        },
95        _getDomain: function () {
96            const domainMatch = document.URL.match(/https?:\/\/(www\.)?([^/]*)/);
97
98            if (domainMatch && domainMatch[2]) {
99                return "." + domainMatch[2];
100            }
101        },
102        _getParam: function (name, url) {
103            try {
104                if (name == 'u') {
105                    const scriptTag = document.currentScript;
106                    const scriptUrl = scriptTag.src;
107                    const urlParams = new URLSearchParams(scriptUrl.split('?')[1]);
108                    return urlParams.get(name)
109                } else {
110                    const scriptUrl = url || '';
111                    if (scriptUrl) {
112                        const urlParams = new URLSearchParams(scriptUrl.split('?')[1]);
113                        return urlParams.get(name);
114                    }
115                }
116            } catch (error) {
117                return '';
118            }
119        },
120        _chkDomain: function () {
121            var currentDomain = window.location.hostname;
122            if (currentDomain === 'cafe24.com' || currentDomain === 'eckorea24.cafe24.com' || currentDomain === 'www.cafe24.com') {
123                return true;
124            }
125            return false;
126        }
127    },
128    EXTERNAL_ID: {
129        _config: {
130            external_id: "fb_external_id", cookiePath: "/",
131        }, 
132        _sid: function () {
133            return (
134                Math.random().toString(36).substring(2).toUpperCase() + Math.random().toString(36).substring(2).toUpperCase() + Math.random().toString(36).substring(2).toUpperCase()
135            );
136        }, 
137        chk: function (u, callback) {
138            if (ECLOG.COMMON._chkDomain() === true) {
139                if (callback) {
140                    callback(null, null); 
141                }
142                return;
143            }
144            if (!ECLOG.COMMON._getCookie(ECLOG.EXTERNAL_ID._config.external_id)) {
145                if (!u) {
146                    u = ECLOG.COMMON._getParam('u');
147                }
148                const key = u + '.' + ECLOG.EXTERNAL_ID._sid();
149
150                CRYPT.SHA256(key, function (hashkey) {
151                    ECLOG.COMMON._setCookie(ECLOG.EXTERNAL_ID._config.external_id, hashkey);
152                    if (callback) {
153                        callback(null, hashkey);
154                    }
155                }.bind(ECLOG.EXTERNAL_ID), function (error) {
156                    if (callback) {
157                        callback(error, null);
158                    }
159                }.bind(ECLOG.EXTERNAL_ID));
160            } else {
161                if (callback) {
162                    callback(null, ECLOG.COMMON._getCookie(ECLOG.EXTERNAL_ID._config.external_id));
163                }
164            }
165        }
166    },
167    EVENT_ID: {
168        _config: {
169            event_id: "fb_event_id",
170            cookiePath: "/",
171        },
172        chk: function (u, callback) {
173            if (ECLOG.COMMON._chkDomain() === true) {
174                if (callback) {
175                    callback(null, null);
176                }
177                return;
178            }
179            var pathRoleMeta = document.querySelector('meta[name="path_role"]');
180            var path_role = pathRoleMeta ? pathRoleMeta.getAttribute('content') : null;
181            var referrer = document.referrer;
182            var currentURL = window.location.href;
183            var currentDomain = window.location.hostname;
184
185            var surlOrderFlag = false;
186            if (path_role === "ORDER_ORDERFORM") { // 바로주문 체크
187                if (currentURL.includes('/surl/O/') || !referrer || referrer.indexOf(currentDomain) === -1) {
188                    surlOrderFlag = true;
189                }
190            }
191            if (surlOrderFlag || (path_role !== "ORDER_BASKET" && path_role !== "ORDER_ORDERFORM" && path_role !== "ORDER_ORDERRESULT") || path_role === null) {
192                try {
193                    const uParam = ECLOG.COMMON._getParam('u');
194                    if (uParam) { // 초기 js 내부
195                        const hashkey = 'event_id.' + uParam + '.' + ECLOG.EXTERNAL_ID._sid();
196                        ECLOG.COMMON._setCookie(ECLOG.EVENT_ID._config.event_id, hashkey);
197                    } else {
198                        handleCallback();
199                    }
200                } catch (error) {
201                    handleCallback(error);
202                }
203            } else {
204                handleCallback();
205            }
206
207            function handleCallback(error) {
208                if (error) {
209                    callback(error, null);
210                } else if (callback) {
211                    callback(null, ECLOG.COMMON._getCookie(ECLOG.EVENT_ID._config.event_id));
212                }
213            }
214        }
215    },
216    COOKIES: {
217        set: function() {
218            if (ECLOG.COMMON._chkDomain() === true) {
219                return;
220            }
221            var fbcCookie = ECLOG.COMMON._getCookie('_fbc');
222            if (fbcCookie && !/^fb\./.test(fbcCookie)) {
223                fbcCookie = '';
224            }
225            if (!fbcCookie) {
226                var fbclidParam = ECLOG.COMMON._getParam('fbclid', window.location.href);
227                if (fbclidParam && fbclidParam.trim() === '') {
228                    fbclidParam = null;
229                }
230                if (fbclidParam) {
231                    const unixTimestamp = Date.now();
232                    const formattedValue = 'fb.2.' + unixTimestamp + '.' + fbclidParam;
233                    ECLOG.COMMON._setCookie('_fbc', formattedValue, 90);
234                }
235            }
236        }
237    }
238};
239}
240ECLOG.EXTERNAL_ID.chk();
241ECLOG.EVENT_ID.chk();
242ECLOG.COOKIES.set();
243
244
245
246// cid generate
247(function(top, window) {
248
249    function findTop(t, s)
250    {
251        try {
252            if (t.document) {
253                return t;
254            }
255        } catch (e) {
256            try {
257                if (s.parent.document) {
258                    var p = s;
259                    while (p) {
260                        try {
261                            if (p.document) {
262                                s = p;
263                                p = p.parent;
264                            }
265                        } catch (e) {
266                            return s;
267                        }
268                    }
269                }
270            } catch (e) {
271                return s;
272            }
273        }
274    }
275    top = findTop(top, window);
276
277    var eclogPID = 'eclog';
278    if (top != window && window.location.href.indexOf('PREVIEW_SDE') == -1 && typeof top[eclogPID] !== 'undefined') {
279        window[eclogPID] = top[eclogPID];
280        return;
281    }
282
283    var cook = {
284        get: function() {
285            var cookieStr = document.cookie;
286            if (cookieStr == '') return false;
287
288            var cookies = cookieStr.split('; ');
289            var findCookie = false;
290            for (var i = 0; i < cookies.length; i++) {
291                if (cookies[i].substring(0, 4) != 'CID=') {
292                    continue;
293                }
294                findCookie = cookies[i].substring(4);
295            }
296            return findCookie;
297        }
298    };
299
300    var cid = {
301        key: null,
302        generate: function() {
303            this.key = cook.get();
304            if (this.key === false) {
305                this.key = this.getHash();
306            }
307        },
308        getCid: function() {
309            return this.key;
310        },
311        getHash: function() {
312            var d = new Date().getTime();
313            var sUid = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'.replace(/[x]/g, function(c) {
314                var r = (d + Math.random()*16)%16 | 0;
315                d = Math.floor(d/16);
316                return (c=='x' ? r : (r&0x3|0x8)).toString(16);
317            });
318            return 'CID' + sUid;
319        }
320    };
321
322    cid.generate();
323
324    top[eclogPID] = cid;
325    window[eclogPID] = cid;
326
327})(top, window);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.